适用于 iOS 的 JavaScript 解包库
Posted
技术标签:
【中文标题】适用于 iOS 的 JavaScript 解包库【英文标题】:JavaScript Unpack library for iOS 【发布时间】:2015-06-22 21:26:23 【问题描述】:是否有任何 Objective-C/Swift 库可以像这样解压 javascript“数据包”代码?
eval(function(p,a,c,k,e,r)e=String;if(!''.replace(/^/,String))while(c--)r[c]=k[c]||c;k=[function(e)return r[e]];e=function()return'\\w+';c=1;while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p('(0()4 1="5 6 7 8";0 2(3)9(3)2(1))();',10,10,'function|b|something|a|var|some|sample|packed|code|alert'.split('|'),0,))
我找到了http://matthewfl.com/unPacker.html 之类的在线工具,但没有找到适用于 ios 的工具。
谢谢!
测试 1
let function = "eval(function(p,a,c,k,e,r)e=String;if(!''.replace(/^/,String))while(c--)r[c]=k[c]||c;k=[function(e)return r[e]];e=function()return'\\w+';c=1;while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p('(0()4 1=\"5 6 7 8\";0 2(3)9(3)2(1))();',10,10,'function|b|something|a|var|some|sample|packed|code|alert'.split('|'),0,))"
let toTest = NSString(format: "document.write('<textarea id=\"output\" cols=\"120\" rows=\"10\">');document.write(%@);document.write('</textarea>');document.getElementById(\"output\").value;", NSString(string: function).substringWithRange(NSRange(location: 5, length: count(function) - 6)))
此代码返回:
(0()4 1="5 6 7 8";0 2(3)9(3)2(1))();
但这是错误的......
【问题讨论】:
【参考方案1】:你可以使用
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script
在这样的 UIWebView 上:
NSString *packedFunction = @"......";
[webview stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.write('<textarea id="output" cols="120" rows="10">');document.write(%@);document.write('</textarea>');document.getElementById("output").value;",[packedFunction subStringWithRange:NSMakeRange(5,packedFunction-1)]]];
【讨论】:
当执行“stringByEvaluatingJavaScriptFromString”时“已评估”为零以上是关于适用于 iOS 的 JavaScript 解包库的主要内容,如果未能解决你的问题,请参考以下文章
网站的 javascript 适用于 android、windows、linux 和所有浏览器,但不适用于 mac、ios 在任何浏览器上
如何使用适用于 iOS 的 openCV 检测视频中的正方形?
Parse Javascript Cloud Code .save() 仅适用于单个用户
适用于 iOS 和 Android 的 React Native Router