ARM单进程脱壳之FtpRush v1.0

王朝other·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

ARM单进程脱壳之FtpRush v1.0

【目 标】:FTPRush v1.0

【工 具】:Olydbg1.1(diy版)、LORDPE、ImportREC1.6F

【任 务】简单的脱一下壳

【操作平台】:Windows Xp sp1

【作 者】:loveboom[DFCG][FCG][US]

【简要说明】:因为程序和其它的ARM的加的程序有所不同,程序的部分代码跑到壳内去了.。所以就写一下。

【详细过程】:

设置:

忽略全部异常,隐藏好你的OD,载入后到壳的入口处:

007E4DE0 >/$ 55 PUSH EBP ;标准的C的入口来的

007E4DE1 |. 8BEC MOV EBP,ESP

007E4DE3 |. 6A FF PUSH -1

在程序的EP处下断HEGetModuleHandleA,然后运行,当然中途会中断好几次的,我们注意下堆栈,当出现这个样子的时候就接近我们要找的东西了.

00127A48 01049B22 /CALL to GetModuleHandleA from 01049B1C

00127A4C 00127B84 \pModule = "MSVBVM60.DLL"

看到这样子后,小心按几次f9,现在到这里:

00127A48 01049B22 /CALL to GetModuleHandleA from 01049B1C

00127A4C 00127B84 \pModule = "advapi32.dll"

再按一次F9:

看到这里的时候,取消硬件断点hd GetModuleHandleA,然后返回到程序代码:

01065EC0 FF15 CCF00601 CALL DWORD PTR DS:[106F0CC] ; kernel32.GetModuleHandleA

01065EC6 3985 9CC4FFFF CMP DWORD PTR SS:[EBP-3B64],EAX ; 返回到这里

01065ECC 75 0F JNZ SHORT 01065EDD

01065ECE C785 98C4FFFF 5>MOV DWORD PTR SS:[EBP-3B68],1073B58

01065ED8 E9 C4000000 JMP 01065FA1

01065EDD 83A5 74C2FFFF 0>AND DWORD PTR SS:[EBP-3D8C],0

01065EE4 C785 70C2FFFF 9>MOV DWORD PTR SS:[EBP-3D90],1074198

01065EEE EB 1C JMP SHORT 01065F0C

01065EF0 8B85 70C2FFFF MOV EAX,DWORD PTR SS:[EBP-3D90]

01065EF6 83C0 0C ADD EAX,0C

01065EF9 8985 70C2FFFF MOV DWORD PTR SS:[EBP-3D90],EAX

01065EFF 8B85 74C2FFFF MOV EAX,DWORD PTR SS:[EBP-3D8C]

01065F05 40 INC EAX

01065F06 8985 74C2FFFF MOV DWORD PTR SS:[EBP-3D8C],EAX

01065F0C 8B85 70C2FFFF MOV EAX,DWORD PTR SS:[EBP-3D90]

01065F12 8338 00 CMP DWORD PTR DS:[EAX],0 ; 直接按f4执行到这里,然后把[eax],置0

01065F15 0F84 86000000 JE 01065FA1

具体可见下图:

改好后就可以得到全部的IAT的。

修改完毕,在code段下f2断点:

这样子很快就到了程序的OEP处:

0076C0AC 55 PUSH EBP ; oep

0076C0AD 8BEC MOV EBP,ESP

0076C0AF 83C4 F0 ADD ESP,-10

0076C0B2 B8 A4B77600 MOV EAX,0076B7A4

这里先别急着DUMP看看代码先吧:

0040525A - E9 5FC73303 JMP 037419BE ; 看看吧,怎么样,代码进壳里去了

0040525F 0FC8 BSWAP EAX

00405261 76 00 JBE SHORT 00405263

00405263 0FC8 BSWAP EAX

00405265 C740 04 B851400>MOV DWORD PTR DS:[EAX+4],004051B8

0040526C 8968 08 MOV DWORD PTR DS:[EAX+8],EBP

0040526F A3 40467700 MOV DWORD PTR DS:[774640],EAX

00405274 C3 RETN

00405275 8D40 00 LEA EAX,DWORD PTR DS:[EAX]

00405278 31D2 XOR EDX,EDX

0040527A A1 40467700 MOV EAX,DWORD PTR DS:[774640]

0040527F 85C0 TEST EAX,EAX

00405281 74 1C JE SHORT 0040529F

00405283 64:8B0A MOV ECX,DWORD PTR FS:[EDX]

00405286 39C8 CMP EAX,ECX

00405288 75 08 JNZ SHORT 00405292

0040528A - E9 55C73303 JMP 037419E4 ; 这里也是

0040528F C3 RETN

现在我们要动一下手术了,用lordpe全部他dump一下,然后在OD中打开内存页面找到我们要DUMP的那个段双击后,保存数据到文件:

保存后,我们计算一下03740000-400000(imgbase)=03340000,好了记下先.

用lordpe载入我们刚才保存下来的段。并改一下VA为我们刚才记下的那个值:

改好后,重建一下文件,重建选项为:

重建文件完毕,FIXDUMP一下就行了,OK这次脱壳就这样结束了.现在程序也显示已经注册了J.

Greetz:

Fly.Jingulong,yock,tDasm.David.ahao.UFO(brother).alan(sister).all of my friends and you!

By loveboom[DFCG][FCG]

Email:bmd2chen@tom.com

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航