欢迎来到千学网!
您现在的位置:首页 > 实用文 > 其他范文

用ollydbg脱aspack2.12壳的记事本(6千字)

时间:2022-05-19 17:21:29 其他范文 收藏本文 下载本文

【导语】以下是小编整理的用ollydbg脱aspack2.12壳的记事本(6千字)(共2篇),欢迎阅读分享。

用ollydbg脱aspack2.12壳的记事本(6千字)

篇1:用ollydbg脱aspack2.12壳的记事本(6千字)

================================================================================

作者     : CoolWolF/81n.net

目标     : 用aspack2.12加了壳的记事本(版本号:5.0.2140.1)

使用工具 : aspack2.12, Ollydbg1.7b, LordPE, Import REConstructor1.42, PEiD0,7b

环境     : Windows Server SP2

================================================================================

本文纯属技术交流, 请注明作者并保持文章的完整, 谢谢!

================================================================================

这是小弟第一篇脱壳的文章, 水平有限, 请大家多指点. (说来惭愧, 5月之前, 我还没有手动脱壳的经验.)

首先, 用aspack2.12把记事本加壳, 用PEiD看了一下, 说是“ASPack 2.x modified - DAMN”. 呵呵.

打开Ollydbg, 加载notepad.exe, 弹出一个对话窗. 不用管他, 按确定. 接着弹出另一个对话窗告诉你程序可能被压缩过, 是否继续, 还是按确定按钮.

程序停在入口处, 按F8单步执行:

01010001 > 60             PUSHAD //入口

01010002 E8 03000000     CALL notepad.0101000A //进去, 过了这个Call程序就执行了

01010007 -E9 EB045D45     JMP 465E04F7

0101000C 55             PUSH EBP

0101000D C3             RETN

0101000E E8 01000000     CALL notepad.01010014

0101000A 5D             POP EBP

0101000B 45             INC EBP                                 ; notepad.01010007

0101000C 55             PUSH EBP

0101000D C3             RETN

0101000E E8 01000000     CALL notepad.01010014 //进去~

一路F8, 直到:

0101012D 0BC9           OR ECX,ECX

0101012F 74 2E           JE SHORT notepad.0101015F

01010131 78 2C           JS SHORT notepad.0101015F

01010133 AC             LODS BYTE PTR DS:[ESI]

01010134 3C E8           CMP AL,0E8

01010136 74 0A           JE SHORT notepad.01010142

01010138 EB 00           JMP SHORT notepad.0101013A

0101013A 3C E9           CMP AL,0E9

0101013C 74 04           JE SHORT notepad.01010142

0101013E 43             INC EBX

0101013F 49             DEC ECX

01010140 ^EB EB           JMP SHORT notepad.0101012D

01010142 8B06           MOV EAX,DWORD PTR DS:[ESI]

01010144 EB 00           JMP SHORT notepad.01010146

01010146 803E 07         CMP BYTE PTR DS:[ESI],7

01010149 ^75 F3           JNZ SHORT notepad.0101013E

0101014B 24 00           AND AL,0

0101014D C1C0 18         ROL EAX,18

01010150 2BC3           SUB EAX,EBX

程序在这里循坏, 我们可没时间等, 看来最远的地方就是0101015F, 在0101015F按F2下断, F9跳过后继续疯狂的F8:

010102B6 8B95 22040000   MOV EDX,DWORD PTR SS:[EBP+422]         ; notepad.01000000

010102BC 8B06           MOV EAX,DWORD PTR DS:[ESI]

010102BE 85C0           TEST EAX,EAX

010102C0 75 03           JNZ SHORT notepad.010102C5

010102C2 8B46 10         MOV EAX,DWORD PTR DS:[ESI+10]

010102C5 03C2           ADD EAX,EDX                             ; notepad.01000000

010102C7 0385 49050000   ADD EAX,DWORD PTR SS:[EBP+549]

010102CD 8B18           MOV EBX,DWORD PTR DS:[EAX]

010102CF 8B7E 10         MOV EDI,DWORD PTR DS:[ESI+10]

010102D2 03FA           ADD EDI,EDX

010102D4 03BD 49050000   ADD EDI,DWORD PTR SS:[EBP+549]

010102DA 85DB           TEST EBX,EBX

010102DC 0F84 A2000000   JE notepad.01010384

010102E2 F7C3 00000080   TEST EBX,80000000

010102E8 75 04           JNZ SHORT notepad.010102EE

010102EA 03DA           ADD EBX,EDX

010102EC 43             INC EBX

010102ED 43             INC EBX

010102EE 53             PUSH EBX

010102EF 81E3 FFFFFF7F   AND EBX,7FFFFFFF

010102F5 53             PUSH EBX

010102F6 FFB5 45050000   PUSH DWORD PTR SS:[EBP+545]

010102FC FF95 490F0000   CALL DWORD PTR SS:[EBP+F49]

01010302 85C0           TEST EAX,EAX

01010304 5B             POP EBX

01010305 75 6F           JNZ SHORT notepad.01010376 //下去

01010307 F7C3 00000080   TEST EBX,80000000

0101030D 75 19           JNZ SHORT notepad.01010328

0101030F 57             PUSH EDI

01010376 8907           MOV DWORD PTR DS:[EDI],EAX             ; msvcrt._wtol

01010378 8385 49050000 04 ADD DWORD PTR SS:[EBP+549],4

0101037F ^E9 32FFFFFF     JMP notepad.010102B6 // 又回去了

看看这次是到什么地方? 可以走到01010384 :

01010384 8906           MOV DWORD PTR DS:[ESI],EAX

01010386 8946 0C         MOV DWORD PTR DS:[ESI+C],EAX

01010389 8946 10         MOV DWORD PTR DS:[ESI+10],EAX

0101038C 83C6 14         ADD ESI,14

0101038F 8B95 22040000   MOV EDX,DWORD PTR SS:[EBP+422]

01010395 ^E9 EBFEFFFF     JMP notepad.01010285 //还是要回去继续循环

0101039A B8 20640000     MOV EAX,6420

那我们就大胆一点, 在0101039A下断, F9..... 拦住了. 继续F8(这里就不能像刚才那么疯狂了, 因为马上我们就要到达真正的入口)

0101039A B8 20640000     MOV EAX,6420

0101039F 50             PUSH EAX

010103A0 0385 22040000   ADD EAX,DWORD PTR SS:[EBP+422]

010103A6 59             POP ECX

010103A7 0BC9           OR ECX,ECX

010103A9 8985 A8030000   MOV DWORD PTR SS:[EBP+3A8],EAX

010103AF 61             POPAD

010103B0 75 08           JNZ SHORT notepad.010103BA

010103B2 B8 01000000     MOV EAX,1

010103B7 C2 0C00         RETN 0C

010103BA 68 20640001     PUSH notepad.01006420 //这是什么?

010103BF C3             RETN //过了这里, 你会看到....

好了~~ 当执行到010103BF的时候, 我们就可以打开LoadPe, 找到notepad.exe的进程, 选择dump full, 保存为dumped.exe, 再用PEiD看看: 还是“ASPack 2.x modified - DAMN”. 恩...? 要对自己有信心. 不要怀疑!

把Ollydbg关闭掉, 运行加了壳的notepad.exe, 然后打开Import REConstructor, 选择notepad.exe进程. 这时候显示程序的OEP是00010001, 填入我们刚才找到的00006420(因为ImageBase是01000000, 所以要减去). 按IAT AutoSearch按钮, 出现对话窗Found Something, 确定后再按Get Imports修复. 看来我们运气不错, 都自动完成了. 那么就按Fix Dump, 选择刚才保存的dumped.exe. 然后就可以退出Import REConstructor了.

再用PEiD一看dumped_.exe: “Microsoft Visual C++ 5.0”. 哈哈! 运行一下呢? 也很正常. 最后用LoadPe的Rebuild PE 重建一下, 这时候文件的大小是69.6K, 算是完美脱壳了!

本来是想写新版FSG 1.2的脱壳, 但整理起来很耗时间, 所以就拿一个好对付的来说了, 哈哈.

感谢众多前辈的精彩文章

献给所有和我一样的脱壳菜鸟

=========================================================================

(完)

篇2:用ollydbg手工脱aspack212壳

使用工具:ollydbg、lordpe

脱壳对象:用aspack212加壳的记事本程序

运行平台:win2k

脱aspack212版压缩的程序方法:

01010374 eb 4a jmp short notepad.010103c0

01010376 8907 mov dword ptr ds:[edi],eax

01010378 8385 49050000 04 add dword ptr ss:[ebp+549],4

0101037f ^e9 32ffffff jmp notepad.010102b6

01010384 8906 mov dword ptr ds:[esi],eax

01010386 8946 0c mov dword ptr ds:[esi+c],eax

01010389 8946 10 mov dword ptr ds:[esi+10],eax

0101038c 83c6 14 add esi,14

0101038f 8b95 22040000 mov edx,dword ptr ss:[ebp+422]

0101038f 8b95 22040000 mov edx,dword ptr ss:[ebp+422]

01010395 ^e9 ebfeffff jmp notepad.01010285

0101039a b8 20640000 mov eax,6420====》此处移入eax的其实就是入口值,

0101039f 50 push eax

010103a0 0385 22040000 add eax,dword ptr ss:[ebp+422]====》程序入口地址01006420移入eax。

010103a6 59 pop ecx

010103a7 0bc9 or ecx,ecx

010103a9 8985 a8030000 mov dword ptr ss:[ebp+3a8],eax

010103af 61 popad===》标志。

010103b0 75 08 jnz short notepad.010103ba

010103b2 b8 01000000 mov eax,1

010103b7 c2 0c00 retn 0c

010103ba 68 00000000 push 0====》程序运行到此处时,此处值将改变为入口地址值(见下面的代码)。

010103bf c3 retn=====》返回程序入口处。应在此中断,然后单步到程序真正入口处,再dump。

010103c0 8b85 26040000 mov eax,dword ptr ss:[ebp+426]

010103c6 8d8d 3b040000 lea ecx,dword ptr ss:[ebp+43b]

010103cc 51 push ecx

010103cd 50 push eax

010103ce ff95 490f0000 call dword ptr ss:[ebp+f49]

010103d4 8985 55050000 mov dword ptr ss:[ebp+555],eax

010103da 8d85 47040000 lea eax,dword ptr ss:[ebp+447]

010103e0 50 push eax

010103e1 ff95 510f0000 call dword ptr ss:[ebp+f51]

010103e7 8985 2a040000 mov dword ptr ss:[ebp+42a],eax

程序运行后:

01010395 ^e9 ebfeffff jmp notepad.01010285

0101039a b8 20640000 mov eax,6420

0101039f 50 push eax

010103a0 0385 22040000 add eax,dword ptr ss:[ebp+422]

010103a6 59 pop ecx

010103a7 0bc9 or ecx,ecx

010103a9 8985 a8030000 mov dword ptr ss:[ebp+3a8],eax

010103af 61 popad=====》标志,

010103b0 75 08 jnz short notepad.010103ba

010103b2 b8 01000000 mov eax,1

010103b7 c2 0c00 retn 0c

010103ba 68 20640001 push notepad.01006420====》程序真正入口地址。

010103bf c3 retn====>返回到程序真正入口处。

010103c0 8b85 26040000 mov eax,dword ptr ss:[ebp+426]

010103c6 8d8d 3b040000 lea ecx,dword ptr ss:[ebp+43b]

010103cc 51 push ecx

010103cd 50 push eax

010103ce ff95 490f0000 call dword ptr ss:[ebp+f49]

010103d4 8985 55050000 mov dword ptr ss:[ebp+555],eax

010103da 8d85 47040000 lea eax,dword ptr ss:[ebp+447]

010103e0 50 push eax

010103e1 ff95 510f0000 call dword ptr ss:[ebp+f51]

程序跳到:

01006419 c2 0800 retn 8

0100641c 33c0 xor eax,eax

0100641e ^eb f5 jmp short notepad.01006415

01006420 55 push ebp====》此处为真正入口。

01006421 8bec mov ebp,esp

01006423 6a ff push -1

01006425 68 88180001 push notepad.01001888

0100642a 68 d0650001 push notepad.010065d0 ; jmp to msvcrt._except_handler3

0100642f 64:a1 00000000 mov eax,dword ptr fs:[0]

01006435 50 push eax

dump出来以后,修改入口点为00006420,然后重建pe。ok!(dump工具为lordpe)

用6和7的加法解决问题教案

4.2.4 用2―6的乘法口诀求商-人教课标版

《用ollydbg脱aspack2.12壳的记事本(6千字)(精选2篇).doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

最新推荐
猜你喜欢
点击下载本文文档