好友
阅读权限40
听众
最后登录1970-1-1
|
小生我怕怕
发表于 2008-8-26 02:12
刚看了下zapline兄第的脱文,便又有一脱法,随便写下脱文,但是同样记住需要f4运行到所选和f2下断,接着shift+f9跳过int3指令
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D00D >60pushad//OD载入
0040D00EE8 EDFFFFFF call unpackme.0040D000//f8开始单步走
0040D013- EB 80 jmp short unpackme.0040CF95 /一直漫长的F8直接到他跑到系统领空
0040D015F5cmc
0040D0163E:F5 cmc
0040D018A0 50F53891 mov al,byte ptr ds:[9138F550]
0040D01D4Cdec esp
0040D01E15 4CF54258 adc eax,5842F54C
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D07790nop
0040D0788D85 90624000 lea eax,dword ptr ss:[ebp+406290]
0040D07E50push eax
0040D07F8DBD AD664000 lea edi,dword ptr ss:[ebp+4066AD]
0040D08557push edi
0040D08664:8B11 mov edx,dword ptr fs:[ecx]
0040D08952push edx
0040D08A64:8921 mov dword ptr fs:[ecx],esp
0040D08D8909mov dword ptr ds:[ecx],ecx//程序到这里时会跑到系统领空去
━━━━━━━━━━━━━━━━━━━━━━━━━━
7C92EAF351push ecx //现在我们来到系统领空,ait+f9返回到程序代码
7C92EAF453push ebx
7C92EAF5E8 C78C0200 call ntdll.7C9577C1
7C92EAFA0AC0or al,al
7C92EAFC74 0C je short ntdll.7C92EB0A
7C92EAFE5Bpop ebx
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D0A48B10mov edx,dword ptr ds:[eax] //ait+f9返回到程序代码第一次
0040D0A633C0xor eax,eax
0040D0A864:8B40 30mov eax,dword ptr fs:[eax+30]
0040D0AC0FB658 02 movzx ebx,byte ptr ds:[eax+2]
0040D0B00ADBor bl,bl
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D23A8D85 0F624000 lea eax,dword ptr ss:[ebp+40620F]//ait+f9返回到程序代码第二次
0040D2402B85 4D6D4000 sub eax,dword ptr ss:[ebp+406D4D]
0040D24683E8 13 sub eax,13
0040D2498985 516D4000 mov dword ptr ss:[ebp+406D51],eax
0040D24F8BB5 556D4000 mov esi,dword ptr ss:[ebp+406D55]
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D2618B9D 516D4000mov ebx,dword ptr ss:[ebp+406D51] //ait+f9返回到程序代码第三次
0040D2678B87 596D4000mov eax,dword ptr ds:[edi+406D59]
0040D26D03D8 add ebx,eax
0040D26F8B8F 5D6D4000mov ecx,dword ptr ds:[edi+406D5D]
0040D275B8 40000000mov eax,40
0040D27AE8 A7FFFFFFcall unpackme.0040D226
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D2AF66:ABstos word ptr es:[edi]//ait+f9返回到程序代码第四次
0040D2B183FA 12cmp edx,12//此时在这里f2下断,接着shift+f9
0040D2B47C 04jl short unpackme.0040D2BA//好啦,继续漫长的f8
0040D2B6^ E2 DDloopd short unpackme.0040D295
0040D2B8EB 04jmp short unpackme.0040D2BE
0040D2BA42 inc edx
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D2E332C0 xor al,al
0040D2E5B9 00000000mov ecx,0
0040D2EAF3:AArep stos byte ptr es:[edi]
0040D2ECCC int3//这里又是该死的int3
0040D2ED8B95 516D4000mov edx,dword ptr ss:[ebp+406D51]//在这里f2下断,shift+f9运行,接着单步F8
0040D2F38BB5 416D4000mov esi,dword ptr ss:[ebp+406D41]
0040D2F903F2 add esi,edx
0040D2FBCC int3 //这里又是该死的int3
0040D2FC8B46 0Cmov eax,dword ptr ds:[esi+C]//在这里f2下断,shift+f9运行,接着单步F8
0040D2FF0BC0 or eax,eax
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D31653 push ebx
0040D317FF95 D96B4000call dword ptr ss:[ebp+406BD9]
0040D31DCC int3 //这里又是该死的int3
0040D31E8985 356D4000mov dword ptr ss:[ebp+406D35],eax//在这里f2下断,shift+f9运行,接着单步F8
0040D324C785 3D6D4000 00>mov dword ptr ss:[ebp+406D3D],0
0040D32ECC int3 //这里又是该死的int3
0040D32F8B95 516D4000mov edx,dword ptr ss:[ebp+406D51]//在这里f2下断,shift+f9运行,接着单步F8
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D339 /75 04 jnz short unpackme.0040D33F//这个jnz跳过了该死的int3所以我们不用管继续走
0040D33B |8B46 10 mov eax,dword ptr ds:[esi+10]
0040D33E |CCint3 //这里又是该死的int3
0040D33F \03C2add eax,edx; unpackme.00400000
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D36683C3 02 add ebx,2
0040D369CCint3 //这里又是该死的int3
0040D36A81E3 FFFFFF0F and ebx,0FFFFFFF //在这里f2下断,shift+f9运行,接着单步F8
0040D37053push ebx
0040D371FFB5 356D4000 push dword ptr ss:[ebp+406D35]
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D3ED^\E9 3CFFFFFF jmp unpackme.0040D32E//这个跳转是向上的,我们要打断他直接在避开int3的地方f2下断,shift+f9打断他
0040D3F2CCint3 //这里又碰上改死的int3
0040D3F383C6 14 add esi,14 //我们在这里f2下断,接着shift+f9,这样就打断两向上的jmp和int3
0040D3F68B95 516D4000 mov edx,dword ptr ss:[ebp+406D51]
0040D3FC^ E9 FBFEFFFF jmp unpackme.0040D2FC//这个jmp时,我们就要用F4运行到所选的方法啦,让他运行到下一行
━━━━━━━━━━━━━━━━━━━━━━━━━━
0040D40E8B85 396D4000 mov eax,dword ptr ss:[ebp+406D39]
0040D4140385 516D4000 add eax,dword ptr ss:[ebp+406D51]
0040D41A8985 2B664000 mov dword ptr ss:[ebp+40662B],eax
0040D4208B0424mov eax,dword ptr ss:[esp]
0040D42364:67:A3 0000 mov dword ptr fs:[0],eax
0040D42883C4 08 add esp,8
0040D42B5Dpop ebp
0040D42C9Dpopfd
0040D42D61popad
0040D42E68 CC104000 push unpackme.004010CC //此时这里push把我们的oep压栈啦
0040D433C3retn //这里就是飞向我们的OEP啦
━━━━━━━━━━━━━━━━━━━━━━━━━━
004010CC55push ebp //我们的光明之颠oep
004010CD8BECmov ebp,esp
004010CF83EC 44 sub esp,44
004010D256push esi
004010D3FF15 E0634000 call dword ptr ds:[4063E0] ; kernel32.GetCommandLineA
004010D98BF0mov esi,eax
004010DB8A00mov al,byte ptr ds:[eax]
004010DD3C 22 cmp al,22
004010DF75 13 jnz short unpackme.004010F4
004010E146inc esi
004010E28A06mov al,byte ptr ds:[esi]
004010E484C0test al,al |
|