zoukankan      html  css  js  c++  java
  • 空指针RE第一次公开赛-笔记

    关于花指令和天堂之门

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

    花指令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。等回头读完之后再填坑吧。

  • 相关阅读:
    第四次作业
    第三次作业
    第二次作业。
    国庆作业。
    实验2-4
    实验2-3
    实验2-2
    实验2-1
    实验1-3
    实验 1-1
  • 原文地址:https://www.cnblogs.com/y-m-y/p/12535795.html
Copyright © 2011-2022 走看看