browser icon
You are using an insecure version of your web browser. Please update your browser!
Using an outdated browser makes your computer unsafe. For a safer, faster, more enjoyable user experience, please update your browser today or try a newer browser.

花指令

Posted by on 2007 年 02 月 21 日

你可以任意转载本文,但请在转载后的文章中注明作者和原始链接。
媒体约稿请联系 titilima_AT_163.com(把“_AT_”换成“@”)。

今天用OllyDbg为某个软件脱壳的时候,发现了一小段令人费解的机器码。这段机器码经IDA解释后如下:

pusha ; 60
call near ptr loc_10116007+3 ; E8 03 00 00 00
loc_10116007:
jmp near ptr 556E64F7h ; E9 EB 04 5D 45
db 55h
db 0C3h
db 0E8h

是的,这就是传说中的花指令了。我于是将其重新排列并解析,如下:

pushad ; 60
call near ptr proc1 ; E8 03 00 00 00
db 0E9h
jmp short line2 ; EB 04
proc1:
pop ebp ; 5D
inc ebp ; 45
push ebp ; 55
retn ; C3
line2:
; other code....

这段代码的第二行进行了一个近调用至proc1,proc1中的三行代码则将堆栈的栈顶(亦即ESP指向的位置)值加1,于是之后ret的返回地址便越过了e9的这一个字节并执行后面的近跳转,这个近跳转则会越过proc1的四个字节,最后执行line2处的真正代码。相比之下,静态分析的IDA却不会智能跳过这个字节,于是这个字节便被解释成为了跳转指令jmp。这样一来后面代码的解析也就被打乱了,加密者的目的也就达到了。

订阅本站

5 Comments

  • At 2007.02.23 17:48, sinper said:

    呵呵 偶看不懂 这些 东西啊
    还要努力了

    • At 2007.02.26 11:54, said:

      最近比较烦,UP

      • At 2007.02.28 11:24, 小八苗 said:

        唉 真的不懂哦 太深奥了对我来说
        唉 就当我命犯电脑孤星吧

        • At 2007.02.28 17:19, 战雨灾 said:

          原来这就是传说中的花指令啊

          • At 2010.08.04 09:24, 蚂蚁 said:

            花指令听说没见过 今天总算见到了 可惜还是不大理解

            (Required)
            (Required, will not be published)