Help
RSS
API
Feed
Maltego
Contact
Domain > znnsluphh.cn
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2021-04-29
220.194.248.60
(
ClassC
)
2024-11-19
47.94.220.139
(
ClassC
)
Port 80
HTTP/1.1 200 OKServer: openrestyDate: Tue, 19 Nov 2024 18:50:09 GMTContent-Type: text/htmlTransfer-Encoding: chunkedConnection: keep-alive !DOCTYPE html>html langen>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>平衡环/title> link relstylesheet href./assets/css/jquery.fullPage.css> link relstylesheet href./assets/css/index.css?v1.6>/head>body> div classcontainer> div classinfo> div classlogo>img src./assets/images/my.jpg alt>/div> div classdetail>!-- p classname>Alisa/p> --> p>网站:平衡环/p> p>主页 随笔/p> /div> /div> div classbox> div classsection sec1> h1>深入理解WebViewJavascriptBridge/h1> h2>一. iOS和JS交互的方式/h2> h3> 1. Native调用JS/p> h4>1.1 直接调用stringByEvaluatingJavaScriptFromString/h4> div>img src./assets/images/1.png alt>/div> h5>返回值单一,如果返回其它数据类型,需要进行转换,不够灵活 js报错和无返回值都返回nil,无法区分/h4> h4>1.2 JavascriptCore/h4> h5>JavascriptCore 一直作为WebKit中内置的JS引擎使用,在iOS7之后,Apple对原有C/C++代码进行了OC封装,成为了系统级的framewok提供给开发者使用,举例如下/h5> div>img src./assets/images/2.png alt>/div> /div> div classsection> h5>通过KVC拿到js执行的上下文JSContext,然后通过js上下文调用evaluateScript来达到调用JS的目的/h5> h5>JSValue是任意类型数据,解决上面直接调用stringByEvaluatingJavaScriptFromString返回值单一问题/h5> h5>通过setExceptionHandler来捕获js的执行异常/h5> h3>2. JS调用OC/h4> h4>2.1 通过设置URL Scheme/h4> div>img src./assets/images/3.png alt>/div> h4>2.2 利用JavaScriptCore,需要页面加载完成,获取js上下文,然后进行方法映射代码示例如下/h4> /div> div classsection> div>img src./assets/images/4.png alt>/div> h5>在iOS8中,Apple引入了新一代的WebKit framework,同时提供了WKWebView用来替代传统的UIWebView。/h5> h5>它更加的稳定、拥有60fps滚动刷新率、丰富的手势、KVO、高效的Web和Native通信,默认进度条等等功能,而最重要的,是使用了和safari相同的Nitro引擎极大提升了Javascript的运行速度。/h5> h5>WKWebView独立的进程管理,也降低了内存占用及Crash对主App的影响。/h5> h3>3. OC调用JS/h3> h5>WKWebView提供一个类似于JavaScriptCore的方法/h5> div>img src./assets/images/5.png alt>/div> /div> div classsection> h5>该方法很好的解决了UIWebVIew使用stringByEvaluatingJavaScriptFromString方法的两个缺点(1.返回值单一 2.报错无法捕获),/h5> h5>例如想获取某页面的title/h5> h3>4. JS调用OC/h3> h4>4.1 URL Scheme拦截,用法与UIWebView一致/h4> h4>4.2 使用addScriptMessageHandler注册的方式/h4> div>img src./assets/images/6.png alt>/div> h2>二. 原理解析/h2> h3>1. Tips/h3> h5>#define __wvjb_js_func__(x) #x 宏定义中#号的意思是将参数字符传化/h5> /div> div classsection> div>img src./assets/images/7.png alt>/div> h5>;(function() {})() 这是一个会立即执行的匿名函数,主要目的是为了创建一个函数作用域,约束匿名函数中的变量,避免污染全局作用域/h5> h3>https://__bridge_loaded__/h3> h3>2. 问题/h3> h4>WebViewJavascriptBridge 哪来的?/h4> h4>WVJBCallbacks的作用?/h4> h4>为什么创建WVJBIframe,他的作用是什么?/h4> h4> JS如何调用Native,回调是如何执行的?/h4> h4>Native如何调用JS,回调是如何执行的?/h4> /div> div classsection> h3>3. 思维导图/h3> div>img src./assets/images/8.png alt>/div> /div> /div> div classfooter> div> p> a hrefhttp://beian.miit.gov.cn/ target_blank>沪ICP备14004717号-55/a>a hrefhttp://beian.miit.gov.cn target_blank>img stylewidth: 20px;height: 20px;margin-left: 4px;border: none srchttp://gw.alicdn.com/tfs/TB1GxwdSXXXXXa.aXXXXXXXXXXX-65-70.gif>/a>a target_blank hrefhttp://www.beian.gov.cn/portal/registerSystemInfo?recordcode31011502017258 styledisplay:inline-block;text-decoration:none;height:20px;line-height:20px;>img src stylefloat:left;/>p stylefloat:left;height:20px;line-height:20px;margin: 0px 0px 0px 5px; color:#939393;>沪公安网备 31011502017387号 /p>/a>/p> p>©2020 上海展盟网络科技有限公司 版权所有/p> /div>/div> /div> script src./assets/js/jquery.min.js>/script>script src./assets/js/jquery.fullPage.js>/script> script> $(function () { $(.box).fullpage({ verticalCentered: false, sectionsColor: #fff, #fff, #fff,#fff,#fff,#fff, navigation: true, afterLoad: function (a, index) { $(.section).eq(index - 1).addClass(now).siblings().removeClass(now); } }); }); /script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]