找回密码
 注册
搜索
热搜: 回贴

脱壳技术,Armadillo COPYMEMEII之DUMP的一个LOADPE小插件,Armadillo

2010-1-30 18:20| 发布者: admin| 查看: 89| 评论: 0|原作者: 天仙子


脱壳技术,Armadillo COPYMEMEII之DUMP的一个LOADPE小插件,Armadillo
2008年06月23日 星期一 下午 04:31
用它来DUMP ARM COPYMEMII的程序,非常酷。

很多朋友不知如何使用现附上使用方法

先把插件放在LOADPE的LDE目录下

用OD打开要脱壳的程序我这里以一个自缟小程序为例:

下断BP WaitForDebugEvent,断下后看堆栈:

0012DAC0 004AAD67 /CALL to WaitForDebugEvent from ScreenCo.004AAD61

0012DAC4 0012EB84 |pDebugEvent = 0012EB84

0012DAC8 000003E8 \Timeout = 1000. ms



在内存区定位在12eb84处这样好看OEP。

清断后再bp WriteProcessMemory,F9后看看

0012D960 004AEC6E /CALL to WriteProcessMemory from ScreenCo.004AEC68

0012D964 0000005C |hProcess = 0000005C (window)

0012D968 00484000 |Address = 484000

0012D96C 00CF3FF0 |Buffer = 00CF3FF0

0012D970 00001000 |BytesToWrite = 1000 (4096.)

0012D974 0012DA7C \pBytesWritten = 0012DA7C



这里就是把缓冲区cf3ff0处的代码共1000H字节写进484000处,OEP也在附近了

0012EB84 01 00 00 00 00 05 00 00 E0 02 00 00 01 00 00 80 .... ..?.. ..

0012EB94 00 00 00 00 00 00 00 00 A0 40 48 00 02 00 00 00 ........燖H. ...

0012EBA4 00 00 00 00 A0 40 48 00 A0 40 48 00 00 47 12 81 ....燖H.燖H..G

OEP为4840a0

现在我们要做两件事一要改OEP为死循环二要NOP掉加密CALL

1。改OEP,可以用PUPE改也可以在缓冲区直接改,我用后一种CTRL G,输入 00cf3ff0 0a0 (这里CF3FF0是缓冲区开始处,0a0=4840a0-484000,前面加个0防止OD判断为负数),定位到这里

00CF4090 55 PUSH EBP

00CF4091 8BEC MOV EBP, ESP

00CF4093 83C4 F0 ADD ESP, -10

00CF4096 B8 A03E4800 MOV EAX, 483EA0

00CF409B E8 D01CF8FF CALL 00C75D70



这就是程序OEP处的代码了,558B改为EBFE

2,NOP掉加密CALL,老版可用ALT K找新版可在STACK往下找找就可以了这里有这样一句:

0012D960 004AEC6E /CALL to WriteProcessMemory from ScreenCo.004AEC68

0012D964 0000005C |hProcess = 0000005C (window)

0012D968 00484000 |Address = 484000

0012D96C 00CF3FF0 |Buffer = 00CF3FF0

0012D970 00001000 |BytesToWrite = 1000 (4096.)

0012D974 0012DA7C \pBytesWritten = 0012DA7C

0012D978 00000009

0012D97C 00000839

0012D980 0012F590

0012D984 00000000

0012D988 00000000

0012D98C 00000000

0012D990 00000000

0012D994 00000000

0012D998 00000000

0012D99C 00000000

0012D9A0 00000000

0012D9A4 00000000

0012D9A8 00000000

0012D9AC 00000000

0012D9B0 00000000

0012D9B4 00000000

0012D9B8 00000000

0012D9BC 00000000

0012D9C0 00000000

0012D9C4 00000000

0012D9C8 00000000

0012D9CC 00000000

0012D9D0 00000000

0012D9D4 00000000

0012D9D8 00000000

0012D9DC 00000000

0012D9E0 00000000

0012D9E4 00000000

0012D9E8 00000000

0012D9EC 00000000

0012D9F0 00000000

0012D9F4 00000000

0012D9F8 00000000

0012D9FC 00000000

0012DA00 00000000

0012DA04 00000000

0012DA08 00000000

0012DA0C 00000000

0012DA10 00000000

0012DA14 00000000

0012DA18 00000000

0012DA1C 00000000

0012DA20 00000000

0012DA24 00000000

0012DA28 00000000

0012DA2C 00000000

0012DA30 00000000

0012DA34 00000000

0012DA38 00000000

0012DA3C 00000000

0012DA40 00000000

0012DA44 00000000

0012DA48 00000000

0012DA4C 00000000

0012DA50 00000000

0012DA54 00000000

0012DA58 3255BC34

0012DA5C 00CF4FF0

0012DA60 00CF4FF0

0012DA64 000000E3

0012DA68 00000000

0012DA6C 00000020

0012DA70 00484000 ScreenCo.00484000

0012DA74 00000020

0012DA78 00CF4FF0

0012DA7C 00001000

0012DA80 00CF4FF0

0012DA84 /0012DAB8

0012DA88 |004AD8DC RETURN to ScreenCo.004AD8DC from ScreenCo.004ADC24

0012DA8C |00000083



看到后面那个RETURN了吧,这就是加密CALL所在在那里右键———FOLLOW IN DESASMBLER到这里

004AD8D7 . E8 48030000 CALL 004ADC24 (这就是解码CALL) ; ScreenCo.004ADC24

004AD8DC > 83C4 0C ADD ESP, 0C (返回到这)

我们搜索另一个call 004adc24,在这里:

004ADBAB . 50 PUSH EAX

004ADBAC . E8 73000000 CALL 004ADC24 ; ScreenCo.004ADC24



把4adbac处NOP掉,清除所有断点然后F9运行这样就可以用LOADPE来DUMP了

用LOADPE选中子进程,右键———选择脱壳引擎------armadmp,然后再在子进程右键--完全脱壳

OK,你已经成功DUMP了,记得要把OEP代码改回来呀


最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 23:29 , Processed in 0.149248 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部