首页 > 其他 > 详细

空指针RE第一次公开赛-笔记

时间:2020-03-21 05:18:16      阅读:79      评论:0      收藏:0      [点我收藏+]

关于花指令和天堂之门

今天补了一下三月的空指针公开赛题目,没做出来,见到了一些没见过的东西,记录一下。

花指令JUMPOUT

技术分享图片

对于这样一个花指令,call一个函数内的地址然后再retn返回,IDA会认为被call的地址是一个新的函数,当前函数就被截断了,影响到了IDA的分析,F5的话会看到这样的东西:

技术分享图片

对于这道题,主程序中的花指令只有两种,全部nop掉(替换成0x90)就好:

EB0388C3BAE8F9FFFFFF
E80400000077EB07883683042401C3

天堂之门

在Windows64操作系统下,所有的32位程序会被装载到WoW64子系统中运行。而某些windows kernel调用,WoW64会将其钩取为64位调用。在这个过程中,运行的程序会从兼容模式暂时地切换成64位模式运行。利用这个特性,我们可以在程序运行过程中主动切换为64位模式来执行64位代码,以达到某种保护程序(如使静态分析失败、动态跟踪混乱)的目的。

这种保护方法被称为Heaven‘s Gate,直译就是”天堂之门“。

WoW64根据段寄存器cs的值来确定程序的运行模式,如果cs的值为0x33,则当前是64位模式;如果cs的值为0x23,则当前为兼容模式。

这道题采用了这样的方式来切换运行模式:

xx: push    0x33
00: call    loc_05
05: add     [esp],6
0b: retf

retf等价于pop eip; pop cs;

这样相当于修改了cs的值,以达到切换模式的目的。

(会填的会填的)(flag)

http://rce.co/knockin-on-heavens-gate-dynamic-processor-mode-switching/

https://medium.com/@fsx30/hooking-heavens-gate-a-wow64-hooking-technique-5235e1aeed73

https://www.malwaretech.com/2014/02/the-0x33-segment-selector-heavens-gate.html

天堂之门似乎还有一些其他的应用,官方WP给了一些ref,还没读完,英语太差了quq。等回头读完之后再填坑吧。

空指针RE第一次公开赛-笔记

原文:https://www.cnblogs.com/y-m-y/p/12535795.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!