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

房东的猫 提交于 2020-03-21 00:19:06

关于花指令和天堂之门

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

花指令JUMPOUT

image-20200320232229080

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

image-20200320232414913

对于这道题,主程序中的花指令只有两种,全部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。等回头读完之后再填坑吧。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!