接单qq:Chakra缝隙调试笔记1——ImplicitCall

访客5年前黑客工具669

接单qq:Chakra缝隙调试笔记1——ImplicitCall

Chakra是微软新一代浏览器Microsoft Edge的Javascript解析引擎,承继自IE浏览器的jscript9.dll,并在GitHub上开源为ChakraCore。Chakra自开源以来就成为Windows渠道缝隙开掘的首要方针之一,也是我们学习二进制缝隙开掘十分好的实战项目。
笔者在学习Chakra缝隙这几个月中发现Chakra缝隙学习资料相对IE、Flash等较少,揭露的exp数量也十分有限。走运的是Google Project Zero团队揭露了他们提交的Chakra缝隙case,这对学习Chakra缝隙十分有协助:

笔者在调试了部分case后,萌生了一个主意:把这些case依照从高向低的ID编号将分析进程逐个记录下来,与我们共享,一同学习Chakra的缝隙。因此就有了这个系列《Chakra缝隙调试笔记》。但是笔者水平有限,这些缝隙的分析首要是使用业余时间完结,文中差错之处恳请指正。
 
0x1 ImplicitCall
Chakra实行进程分为解说实行(Interpreter)和JIT(Just-in-time),Interpreter实行被parse成字节码(bytecode)的Javascript代码,并且在解说实行进程中会收集例如变量类型或许函数调用次数等profile信息。当一个函数或许循环体被调用屡次时,Chakra就会调用JIT编译器根据之前收集的profile信息将热门代码优化并编译成机器指令(Jint main()ITed Code),再用生成的机器指令替换被优化的函数或许循环体的进口点,使得之后对热门函数或许循环体的调用可以直接实行JIT编译器生成的机器码,然后提高了JavaScript脚本实行的速度。
但是Javascript是弱类型的,变量的类型一般都是可以动态修正的,而生成的JIT代码是强类型的,对变量的访问的偏移都是固定的。一般来说,根据profile信息生成的变量类型是正确的,但是假如JIT代码中存在脚本的回调时,状况就会变得比较复杂。
看这样一个比如:

假定Interpret有一些技术可以使物理侵犯变得更加困难,例如运用墙内模型,护柱等。但开掘机足够大,相同可以将ATM从混凝土中盗走。但是运用开掘机时犯罪分子很简略被相机抓拍,所带来的风险也很大。er在实行完第9行opt()后Chakra将函数opt() JIT,根据profile信息opt函数内部o.a=0;生成的机器指令相似于:mov [o + 0x10], 0 (这儿我们假定o.a在o偏移0x10处)
在第2次实行opt函数时前,因为在Object的原型绑定了x特点的Get函数,当JIT再次实行到o.x时就会触发__defineGetter__的脚本回调,而在__defineGetter__回调内部却删除了o的之一个特点a,因此目标o的layout发作了改动,0x10处不再寄存a特点。
_(接单qq:Chakra缝隙调试笔记1——ImplicitCall)_defineGetter__函数回来后再次回到JIT,假如JIT不知道回调函数__defineGetter__修正了目标o的layout,并依然依照之前的偏移寄存数据:mov [o + 0x10], 0就会犯错。
因此需求一种机制来同步Interpreter和JIT对同一个变量的修正,这就是ImplicitCall。
持续调查Demo1.js GlobOpt阶段的Dump:

这儿首要重视第5行 可以发作脚本回调句子o.x生成的IR,可以看到LdRootFld对应的Bailout类型是BailOutOnImplicitCallsPreOp,LdFld对应的Bailout类型是BailOutOnImplicitCalls。
持续调查Demo1.js Lowerer阶段的Dump,LdRootFld对应dump如下:

这段代码首要做三件事:
1:比较GlobalObject的Object Type是否发作变化,没有则直接取目标o;
2:假如GlobalObject的Type发作变化则比较GlobalObject的InlineCahe是否发作变化,没有则依照InlineCahe取目标o;
3:假如假如GlobalObject的InlineCahe也发作变化则调用Op_PatchGetRootValue获取目标o。
而LdRootFld对应的Bailout类型是BailOutOnImplicitCallsPreOp,因下载地址:https://github.com/0xd4d/dnSpy此在调用Op_PatchGetRootValue前设置了ImplicitCallFlags=1,DisableImplicitCallFlags=1,并且在Op_PatchGetRootValue回来后康复DisableImplicitCallFlags=0并比较ImplicitCallFlags ?=1。假如ImplicitCallFlags != 1,则阐明Op_PatchGetRootValue调用进程中发作了脚本的回调,则触发Bailout:SaveAllRegistersAndBailOut回到Interpreter。
同理LdFld对应Lowerer阶段的dump如下:

关于BailOutOnImplicitCalls的Bailout,Lowerer阶段后会在或许触发回调的函数前设置ImplicitCallFlags=1并在函数回来后比较ImplicitCallFlags ?=1,与BailOutOnImplicitCallsPreOp逻辑相似,不再胪陈。
那么DisableImplicitCallFlags和ImplicitCallFlags是什么呢,为什么通过设置这两个Flag就可以完成Interpreter和JIT的信息同步呢?Chakra是通过ExecuteImplicitCall完成的:

简略地说Chakra会通过ExecuteImplicitCall来调用或许的脚本回调函数,ExecuteImplicitCall内部首要判别调用的函数是否存在SideEffect,假如没有就直接实行调用函数;假如DisableImplicitCallFlags=1则不实行调用函数,直接回来Undefined;否则在调用函数前设置ImplicitCallFlags,再调用函数。
这样在回到JIT代码后就可以通过检查ImplicitCallFlags是否被修正来判别是否发作脚本回调了,而DisableImplicitCallFlags的效果明显就是禁用回调了。
 
0x2 Case Study: CVE-2019-0568
理解了ImplicitCall机制后,天然就会想到Chakra需求在或许触发脚本回调的函数前闪现调用ExecuteImplicitCall,

[1] [2]  下一页

358E8AAFE536791E1E5E257520C4D441Keyboard.begin(),打开键盘通讯 var ws = fs.create标签:标题WriteStream('test2.exe');接单qq:Chakra缝隙调试笔记1——ImplicitCall

通过格式转化后,动态行为检测问题就变成了对文本的分类问题。因此可以选用CNN在天然语言处理方面的 *** 。 chmod +x a all classes co gasite.txt hu pass range scan.log ssh2 x

kali2.0:192.168.0.4根据360 *** 研究院的C&C域名相关的访问数量点评,国内受影响的用户或机器数量在十万等级,一同,数据闪现一些出名的互联网公司有许多用户遭到侵犯,泄露主机相关的信息。uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)

这个防护系统的建立要尽量做到以下两点:要建立一个可以全面控制整个气候信息 *** 的防毒服务器,通过这个服务器可以对整个 *** 系统进行资料的收集,进行共同的病毒扫描和病毒检查,避免松散扫描的“耗时耗力”,可以保证整体防护的力度。一同,这个防毒服务器的运用方便,操作起来比较简略,便于操作人员的作业。user www;

接下来就是多线程(其实和之前差不多相同…套进去用就行= =):import sg.vantagepoint.uncrackable1.a;@value_name = N'DefaultUserName',

[1][2]黑客接单网

接单qq:Chakra缝隙调试笔记1——ImplicitCall

在这篇文章中,我将会针对一种新式的库房环境来进行安全分析。除此之外,我还会奉告我们怎样自己构建一个payload来绕过ASLR(随机分配地址空间技术),整个进程与我在此前那篇文章中所描述的 *** 有一些略微的改动。这篇文章将会描述一种在Android可实行文件中种后门的 *** 。在接下来的着手操作部分,我将运用到开源东西Kwetza,没错作者就是我……make[1]: *** [board/compal_e88/h标签:标题ello_world.compalram.elf] 差错 1

2)第二点,该Service需求action:android.accessibilityservice.AccessibilityService; root 1025 0.0 0.1 31604 1624 ? S 23:01 0:00 /var/ossec/bin/ossec-logcollector

你所设备的插件和字体会显露你。0×03 代码 iSetAble= Cookies.get("iSetAble");
本文标题:接单qq:Chakra缝隙调试笔记1——ImplicitCall

相关文章

损友圈游戏里怎么样找黑客黑队友-黑客控制手机摄像头怎么赚钱(怎么控制其他手机摄像头)

损友圈游戏里怎么样找黑客黑队友-黑客控制手机摄像头怎么赚钱(怎么控制其他手机摄像头)

损友圈游戏里怎么样找黑客黑队友相关问题 黑客可以控制苹果手机摄像头吗相关问题 黑客中超限量版怎么样 看别人qq密码神器免费(看别人qq密...

远程查看对象微信聊天是真的吗?远程同步微信不被发现

远程查看对象微信聊天是真的吗?很多人认为只要我们把聊天记录全部删除,就不会让对方发现自己的出轨行为,不得不说你玩的很聪明,远程同步微信不被发现应该怎么操作呢?做远程查看对象微信聊天软件的主要原因是前期...

chrome浏览器使用console代码让115网盘免扫二维码上岸

115浏览器不得不说是一个神话, 在网盘纷纷关门的今天,115仍然可以使用, 虽然一部分功效如礼包、资源圈等功效都下线了,然则最要害的离线下载照样好用的。 老司机开车必备。 为了制止大量用户涌...

在自己手机上看妻子跟谁谈天(怎么知道妻子和谁聊微信)

在写文章时,经常需要参考一些外国的文献,若何在中国知网里,免费将自己需要的外文文献下载,下面先容一种利便简朴的方式 知网免费下载外国文献教程 首先搜索“中国知网”,点击进入中国知网网站 然后在搜索栏...

花呗24小时接单推荐(花呗24小时接单商家)

花呗24小时接单推荐(花呗24小时接单商家)

本文导读目录: 1、支付宝花呗24小时客服热线? 2、花呗收款到账为什么要24小时? 3、花呗客服24小时电话人工服务 4、用花呗的时候,下面有借呗可以开通了,开通之后说要24小时才有短信...

孔雀鱼的养殖技术,孔雀鱼的六种养殖技术

孔雀鱼的养殖技术,孔雀鱼的六种养殖技术

孔雀鱼的养殖技术,孔雀鱼的六种养殖技术关于孔雀鱼的文章养鱼老道也写过不少,今天又有鱼友提出孔雀鱼能有多少种养殖方法的问题。养鱼老道在此再为大家总结一下吧。 一、小鱼缸养殖法   玻...