脱壳进阶篇

1.壳程序常用API下断

根据壳的原理,在壳需要的一些API处下断点(例如VirtualAlloc,VirtualFree等),然后单步若干次即可找到程序入口点。关于od下断点的方法请参考od下断方法总结。

点击打开链接

2.最后一次异常法

od->选项->调试选项->异常,把所有的√去掉

f9运行n次后程序飞,然后重新载入,f9运行n-1次,然后在右下角堆栈窗口找到注释为SE句柄处,记下该处存放的数值,然后在代码窗口按ctrl-g转到该数值,按F4运行到该位置,单步若干次即可到达入口点。

原理:当处理完之后的最后一次异常,壳将会把控制权交换给应用程序, OEP ,也就不远了。

3.利用入口点API

例如一般的Vc++6.0程序,程序入口点处会调用GetVersion函数,故而我们在命令行输入at GetVersion然后按F4运行到这儿,然后执行到返回就会到达入口点附近了。

常用关键API

VC++6.0(Visual C++ 6.0)        GetVirsion

VC++7.1(Visual Studio 2003)        msvcrt._set_app_type

VC++8.0(Visual Studio 2005)        GetSystemTimeAsFileTime

VC++9.0(Visual Studio 2008)        GetSystemTimeAsFileTime

VC++10.0(Visual Studio 2010)      GetSystemTimeAsFileTime

Delphi 7                                         GetModuleHandleA

BC++                                             GetModuleHandleA

4.利用入口点代码特征码进行定位

例如VS2010代码入口点如下,则我们可以在od中查找E8????????E9????????8BEF558BEC这样的指令,当然这样做的前提是你要确定宿主程序OEP处已被解压解密。

常用各种入口点特征码

VS2010:


E8 74 04 00 00                call 00111719

E9 B3 FD FF FF                jmp 0011105D

8B FF                              mov edi,edi

55                                   push ebp

8B EC                              mov ebp,esp


VB:


004012D4 >  68 54474000     push QQ个性网.00404754
004012D9    E8 F0FFFFFF     call
004012DE    0000            add byte ptr ds:[eax],al
004012E0    0000            add byte ptr ds:[eax],al
004012E2    0000            add byte ptr ds:[eax],al
004012E4    3000            xor byte ptr ds:[eax],al
004012E6    0000            add byte ptr ds:[eax],al
004012E8    48              dec eax






delphi:


004A5C54 >  55              push ebp
004A5C55    8BEC            mov ebp,esp
004A5C57    83C4 F0         add esp,-10
004A5C5A    B8 EC594A00     mov eax,openpro.004A59EC


BC++:


00401678 > /EB 10           jmp short btengine.0040168A
0040167A   |66:623A         bound di,dword ptr ds:[edx]
0040167D   |43              inc ebx
0040167E   |2B2B            sub ebp,dword ptr ds:[ebx]
00401680   |48              dec eax
00401681   |4F              dec edi
00401682   |4F              dec edi
00401683   |4B              dec ebx
00401684   |90              nop
00401685  -|E9 98005400     jmp 00941722
0040168A   \A1 8B005400     mov eax,dword ptr ds:[54008B]
0040168F    C1E0 02         shl eax,2
00401692    A3 8F005400     mov dword ptr ds:[54008F],eax
00401697    52              push edx
00401698    6A 00           push 0
0040169A    E8 99D01300     call
0040169F    8BD0            mov edx,eax






VC++:


0040A41E >  55              push ebp
0040A41F    8BEC            mov ebp,esp
0040A421    6A FF           push -1
0040A423    68 C8CB4000     push 跑跑排行.0040CBC8
0040A428    68 A4A54000     push
0040A42D    64:A1 00000000  mov eax,dword ptr fs:[0]
0040A433    50              push eax
0040A434    64:8925 0000000>mov dword ptr fs:[0],esp
0040A43B    83EC 68         sub esp,68
0040A43E    53              push ebx
0040A43F    56              push esi
0040A440    57              push edi






MASM(汇编):


004035C9 >  6A 00           push 0
004035CB    E8 A20A0000     call
004035D0    A3 5B704000     mov dword ptr ds:[40705B],eax
004035D5    68 80000000     push 80
004035DA    68 2C754000     push 11.0040752C
004035DF    FF35 5B704000   push dword ptr ds:[40705B]
004035E5    E8 820A0000     call
004035EA    E8 87070000     call 11.00403D76
004035EF    6A 00           push 0
004035F1    68 0B364000     push 11.0040360B
004035F6    6A 00           push 0
004035F8    6A 64           push 64
004035FA    FF35 5B704000   push dword ptr ds:[40705B]


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部