巧设断点,手脱yoda's cryptor 1.2壳

1、PEiD查壳:
     yoda's cryptor 1.2

2、OD载入,忽略所有异常,隐藏OD,程序断到入口点,

     0040D060     60              pushad
     0040D061     E8 00000000     call Yoda's_C.0040D066
     0040D066     5D              pop ebp
     0040D067     81ED F31D4000   sub ebp,Yoda's_C.00401DF3
     0040D06D     B9 7B090000     mov ecx,97B

  貌似可以使用ESP定律法,其实,是不能使用ESP定律的。此时,点击:“查看”->“内存”,在.rsrc区段上,设置内存断点,F9运行,此时 断下,然后再次点击:“查看”->“内存”,在.text区段上设置内存断点,然后F9,程序断到了如下地址:

    0040D769     0000            add byte ptr ds:[eax],al
    0040D76B     0000            add byte ptr ds:[eax],al
    0040D76D     0000            add byte ptr ds:[eax],al
    0040D76F     0000            add byte ptr ds:[eax],al

并且,其左下角显示:访问违规:写入到[00000000] - 使用|Shift+F7/F8/F9|键忽略异常以继续执行,此时,shift + F9,便来到了如下位置:
    004010CC     55              push ebp
    004010CD     8BEC            mov ebp,esp
    004010CF     83EC 44         sub esp,44
    004010D2     56              push esi
    004010D3     FF15 E0634000   call dword ptr ds:[4063E0]        ; kernel32.GetCommandLineA
    004010D9     8BF0            mov esi,eax

这就是OEP的位置,此时脱壳就可以了!

posted @ 2012-07-12 11:08  monkeycd  阅读(280)  评论(0)    收藏  举报