标题:手动脱壳入门第八篇JDPack1.01

-------------------------------------------------------------------------------------------------------------------------------

时间:2006/8/28 17:13:40

-------------------------------------------------------------------------------------------------------------------------------

内容:

xTiNt
 手动脱壳入门第八篇JDPack1.01  
手动脱壳入门第八篇JDPack1.01
【脱文标题】 手动脱壳入门第八篇JDPack1.01
【脱文作者】 weiyi75[Dfcg] 
【作者邮箱】 weiyi75@sohu.com 
【作者主页】 Dfcg官方大本营 
【使用工具】 Peid,Ollydbg,ImportREC
【脱壳平台】 Win2K/XP
【软件名称】 JDPack1.01的主程序
【软件简介】 PE文件(EXE、DLL、OCX)压缩加壳工具。压缩比约为50%,压缩后的程序对功能没有任何影响,仍能独立正常运行。可压缩加密程序的代码段、数据段、资源段、输入表、重定位表。反Softice和TRW2000的动态跟踪。全面兼容WIN95\98\NT\2000\XP操作系统。程序完全采用32位纯汇编语言编写,以最小的体积实现最强大的功能与速度,未注册的JDPack加壳程序运行后会弹出一个讨厌的注册提示。我发现这个软件好像没有注册判断部分,是直接以未注册形式发行的试用软件,只能爆破修改Compress执行的代码段,去掉没注Messagebox简单提示,汇编知识太差,我不会破这个程序。算了,还是脱它的壳吧。
【软件大小】 91.0 KB
【加壳方式】 JDPack 1.x / JDProtect 0.9 -> TLZJ18 Softwaree
【保护方式】 JDPack
【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享: 
软件截图,底都是用没注册的JDPack1.01加壳的软件,点确定按钮才能运行。


程序下载地址
本地下载
首先必须的工具要准备好
脱壳目标,JDPack1.01的主程序。
安装软件后用Peid测JDPACK.EXE的壳为JDPack 1.x / JDProtect 0.9 -> TLZJ18 Softwaree。
手动脱壳建议大家用Ollydbg,工作平台Win2000,WinXp,Win9x不推荐。
手动脱壳时,用Olldbg载入程序,脱壳程序里面会有有好多循环。对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。不要用Peid查入口,单步跟踪,提高手动找入口能力。
用OD载入程序后。
确定一个入口警告,然后Od提示程序加壳,选不继续分析。
停在这里
0040E000 > 60 PUSHAD 开始地点,注意PUSHAD关键字
0040E001 E8 00000000 CALL JDPACK.0040E006 F7步过,变形Jmp
0040E006 5D POP EBP
0040E007 8BD5 MOV EDX,EBP
0040E009 81ED C62B4000 SUB EBP,JDPACK.00402BC6
0040E00F 2B95 3D344000 SUB EDX,DWORD PTR SS:[EBP+40343D]
0040E015 81EA 06000000 SUB EDX,6
0040E01B 8995 41344000 MOV DWORD PTR SS:[EBP+403441],EDX
0040E021 83BD 45344000 0>CMP DWORD PTR SS:[EBP+403445],0
0040E028 0F85 BC030000 JNZ JDPACK.0040E3EA 不跳。
0040E02E C785 45344000 0>MOV DWORD PTR SS:[EBP+403445],1
0040E038 B9 64070000 MOV ECX,764
0040E03D 8DB5 182C4000 LEA ESI,DWORD PTR SS:[EBP+402C18]
0040E043 8A85 3C344000 MOV AL,BYTE PTR SS:[EBP+40343C]
0040E049 8A1E MOV BL,BYTE PTR DS:[ESI]
0040E04B 32C3 XOR AL,BL
0040E04D 8806 MOV BYTE PTR DS:[ESI],AL
0040E04F 889D 3C344000 MOV BYTE PTR SS:[EBP+40343C],BL
0040E055 46 INC ESI
0040E056 ^ E2 EB LOOPD SHORT JDPACK.0040E043 往回的循环结构,是程序在内存中解压过程。
0040E058 9C PUSHFD F4到这里发现语句有了一些变化。
0040E059 E7 11 OUT 11,EAX ; I/O 命令
0040E05B D5 D4 AAD 0D4
0040E05D A0 A727922D MOV AL,BYTE PTR DS:[2D9227A7]
0040E062 0242 42 ADD AL,BYTE PTR DS:[EDX+42]
0040E065 BD 36836A5B MOV EBP,5B6A8336
...........................................................
0040E058 9C PUSHFD 
0040E059 58 POP EAX
0040E05A F6C4 01 TEST AH,1
0040E05D 74 07 JE SHORT JDPACK.0040E066 隔壁也跳。
0040E05F 80B5 BF2F4000 F>XOR BYTE PTR SS:[EBP+402FBF],0FF
0040E066 8BB5 E9314000 MOV ESI,DWORD PTR SS:[EBP+4031E9] 跳到这里
0040E06C 8BC5 MOV EAX,EBP
0040E06E 56 PUSH ESI
0040E06F 50 PUSH EAX
0040E070 8B88 F1314000 MOV ECX,DWORD PTR DS:[EAX+4031F1]
0040E076 6A 04 PUSH 4
0040E078 68 00100000 PUSH 1000
0040E07D 51 PUSH ECX
0040E07E 6A 00 PUSH 0
0040E080 FF95 C8334000 CALL DWORD PTR SS:[EBP+4033C8]
...........................................................
0040E090 8BB0 ED314000 MOV ESI,DWORD PTR DS:[EAX+4031ED]
0040E096 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441]
0040E09C 8B88 F1314000 MOV ECX,DWORD PTR DS:[EAX+4031F1]
0040E0A2 03F2 ADD ESI,EDX
0040E0A4 60 PUSHAD 注意这里和0040E0B3处的POPAD对应一个解压段。
0040E0A5 8BFE MOV EDI,ESI
0040E0A7 33C0 XOR EAX,EAX
0040E0A9 AC LODS BYTE PTR DS:[ESI]
0040E0AA 3285 BF2F4000 XOR AL,BYTE PTR SS:[EBP+402FBF]
0040E0B0 AA STOS BYTE PTR ES:[EDI]
0040E0B1 ^ E2 F6 LOOPD SHORT JDPACK.0040E0A9 循环解压。
0040E0B3 61 POPAD 和0040E0A4处的PUSHAD对应。F4到这里。
0040E0B4 8BBD C9314000 MOV EDI,DWORD PTR SS:[EBP+4031C9]
0040E0BA F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
0040E0BC 8BB5 C9314000 MOV ESI,DWORD PTR SS:[EBP+4031C9]
0040E0C2 8BB8 ED314000 MOV EDI,DWORD PTR DS:[EAX+4031ED]
0040E0C8 03FA ADD EDI,EDX
0040E0CA 57 PUSH EDI
0040E0CB 56 PUSH ESI
0040E0CC E8 D4030000 CALL JDPACK.0040E4A5 远程Call,F8步过。
0040E0D1 5E POP ESI ; 00340000
0040E0D2 5F POP EDI
0040E0D3 58 POP EAX
0040E0D4 5E POP ESI
0040E0D5 56 PUSH ESI
0040E0D6 50 PUSH EAX
0040E0D7 8B88 F1314000 MOV ECX,DWORD PTR DS:[EAX+4031F1]
0040E0DD 8BB5 C9314000 MOV ESI,DWORD PTR SS:[EBP+4031C9]
0040E0E3 68 00400000 PUSH 4000
0040E0E8 51 PUSH ECX
0040E0E9 56 PUSH ESI
0040E0EA FF95 CC334000 CALL DWORD PTR SS:[EBP+4033CC]
0040E0F0 58 POP EAX
0040E0F1 5E POP ESI
0040E0F2 83C0 08 ADD EAX,8
0040E0F5 4E DEC ESI
0040E0F6 ^ 0F85 72FFFFFF JNZ JDPACK.0040E06E 往回跳。
0040E0FC 83BD D1314000 0>CMP DWORD PTR SS:[EBP+4031D1],0 F4直接到这里。
0040E103 0F84 8A000000 JE JDPACK.0040E193 跳走。
0040E109 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441]
0040E10F 8B85 CD314000 MOV EAX,DWORD PTR SS:[EBP+4031CD]
0040E115 2BD0 SUB EDX,EAX
0040E117 74 7A JE SHORT JDPACK.0040E193
...........................................................
0040E193 8D9D 64334000 LEA EBX,DWORD PTR SS:[EBP+403364] 转到这里。
0040E199 53 PUSH EBX
0040E19A FF95 C4334000 CALL DWORD PTR SS:[EBP+4033C4]
0040E1A0 50 PUSH EAX
0040E1A1 8D9D 0C334000 LEA EBX,DWORD PTR SS:[EBP+40330C]
0040E1A7 53 PUSH EBX
0040E1A8 50 PUSH EAX
0040E1A9 FF95 BC334000 CALL DWORD PTR SS:[EBP+4033BC]
0040E1AF 8985 BD314000 MOV DWORD PTR SS:[EBP+4031BD],EAX
0040E1B5 58 POP EAX
0040E1B6 8D9D 18334000 LEA EBX,DWORD PTR SS:[EBP+403318]
0040E1BC 53 PUSH EBX
往下好多API调用。
...........................................................
0040E260 /74 14 JE SHORT JDPACK.0040E276 不跳。
0040E262 |837B 10 02 CMP DWORD PTR DS:[EBX+10],2
0040E266 |74 02 JE SHORT JDPACK.0040E26A 跳。
0040E268 |EB 1A JMP SHORT JDPACK.0040E284
0040E26A |E8 C7010000 CALL JDPACK.0040E436 远程Call,F8步过
0040E26F |83F8 FF CMP EAX,-1
0040E272 |75 10 JNZ SHORT JDPACK.0040E284 跳走。
0040E274 |EB 0A JMP SHORT JDPACK.0040E280
0040E276 \E8 85010000 CALL JDPACK.0040E400
0040E27B 83F8 FF CMP EAX,-1
0040E27E 75 04 JNZ SHORT JDPACK.0040E284
0040E280 61 POPAD
0040E281 33C0 XOR EAX,EAX
0040E283 C3 RETN
0040E284 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441] 到这里。
0040E28A 8BB5 D9314000 MOV ESI,DWORD PTR SS:[EBP+4031D9]
0040E290 03F2 ADD ESI,EDX
0040E292 8B46 0C MOV EAX,DWORD PTR DS:[ESI+C]
0040E295 0BC0 OR EAX,EAX
0040E297 0F84 4D010000 JE JDPACK.0040E3EA 这是个很大的跳转,有可能是循环出口,先留心。
0040E29D 03C2 ADD EAX,EDX
0040E29F 8985 A5314000 MOV DWORD PTR SS:[EBP+4031A5],EAX
0040E2A5 8BD8 MOV EBX,EAX
0040E2A7 50 PUSH EAX
0040E2A8 FF95 C0334000 CALL DWORD PTR SS:[EBP+4033C0]
0040E2AE 0BC0 OR EAX,EAX
0040E2B0 75 55 JNZ SHORT JDPACK.0040E307 跳走。
0040E2B2 53 PUSH EBX
0040E2B3 FF95 C4334000 CALL DWORD PTR SS:[EBP+4033C4]
0040E2B9 0BC0 OR EAX,EAX
...........................................................
0040E307 8985 E1314000 MOV DWORD PTR SS:[EBP+4031E1],EAX 到这里 ; GDI32.77F40000
0040E30D C785 E5314000 0>MOV DWORD PTR SS:[EBP+4031E5],0
0040E317 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441]
0040E31D 8B06 MOV EAX,DWORD PTR DS:[ESI]
0040E31F 0BC0 OR EAX,EAX
0040E321 75 03 JNZ SHORT JDPACK.0040E326
0040E323 8B46 10 MOV EAX,DWORD PTR DS:[ESI+10]
0040E326 03C2 ADD EAX,EDX
0040E328 0385 E5314000 ADD EAX,DWORD PTR SS:[EBP+4031E5]
0040E32E 8B18 MOV EBX,DWORD PTR DS:[EAX]
0040E330 8B7E 10 MOV EDI,DWORD PTR DS:[ESI+10]
0040E333 03FA ADD EDI,EDX
0040E335 03BD E5314000 ADD EDI,DWORD PTR SS:[EBP+4031E5]
0040E33B 85DB TEST EBX,EBX
0040E33D 0F84 99000000 JE JDPACK.0040E3DC 这也是个很大的跳转,有可能是循环出口,先留心。
0040E34B 03DA ADD EBX,EDX
0040E34D 83C3 02 ADD EBX,2
0040E350 EB 15 JMP SHORT JDPACK.0040E367 跳。
0040E367 53 PUSH EBX 到这里 
0040E368 FFB5 E1314000 PUSH DWORD PTR SS:[EBP+4031E1]
0040E36E FF95 BC334000 CALL DWORD PTR SS:[EBP+4033BC]
0040E374 EB 04 JMP SHORT JDPACK.0040E37A 跳。
0040E37A 803B 00 CMP BYTE PTR DS:[EBX],0 到这里。
0040E37D ^ 75 F7 JNZ SHORT JDPACK.0040E376 小循环。
0040E37F 0BC0 OR EAX,EAX F4到这里。
0040E381 75 4B JNZ SHORT JDPACK.0040E3CE 跳走。
0040E383 FFB5 A5314000 PUSH DWORD PTR SS:[EBP+4031A5]
0040E389 53 PUSH EBX
0040E38A 8D9D 90324000 LEA EBX,DWORD PTR SS:[EBP+403290]
0040E390 53 PUSH EBX
0040E391 8D9D DD344000 LEA EBX,DWORD PTR SS:[EBP+4034DD]
0040E397 53 PUSH EBX
0040E398 FF95 C1314000 CALL DWORD PTR SS:[EBP+4031C1]
...........................................................
0040E3CE 8907 MOV DWORD PTR DS:[EDI],EAX 到这里。 
0040E3D0 8385 E5314000 0>ADD DWORD PTR SS:[EBP+4031E5],4
0040E3D7 ^ E9 3BFFFFFF JMP JDPACK.0040E317
0040E3DC 83C6 14 ADD ESI,14
0040E3DF 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441]
0040E3E5 ^ E9 A8FEFFFF JMP JDPACK.0040E292
0040E3EA 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441]
0040E3F0 8B85 D5314000 MOV EAX,DWORD PTR SS:[EBP+4031D5]
0040E3F6 03C2 ADD EAX,EDX
0040E3F8 894424 1C MOV DWORD PTR SS:[ESP+1C],EAX
0040E3FC 61 POPAD
0040E3FD 50 PUSH EAX
0040E3FE C3 RETN
0040E3D0 8385 E5314000 0>ADD DWORD PTR SS:[EBP+4031E5],4
0040E3D7 ^ E9 3BFFFFFF JMP JDPACK.0040E317 往回跳
0040E3DC 83C6 14 ADD ESI,14
0040E3DF 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441]
0040E3E5 ^ E9 A8FEFFFF JMP JDPACK.0040E292 也往回跳
0040E3EA 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441] 很幸运,F4直接到达这里。
0040E3F0 8B85 D5314000 MOV EAX,DWORD PTR SS:[EBP+4031D5]
0040E3F6 03C2 ADD EAX,EDX
0040E3F8 894424 1C MOV DWORD PTR SS:[ESP+1C],EAX
0040E3FC 61 POPAD 与入口关键字对应,下面有Retn语句,入口就在附近。
0040E3FD 50 PUSH EAX
0040E3FE C3 RETN 准备返回到程序入口点,跨段。
004035C9 6A 00 PUSH 0 入口点,跨段来到这里并且经过了PoPad关键字,我们在这里用Od的 Dump插件直接脱壳
004035CB E8 A20A0000 CALL JDPACK.00404072 ; JMP to kernel32.GetModuleHandleA
004035D0 A3 5B704000 MOV DWORD PTR DS:[40705B],EAX
004035D5 68 80000000 PUSH 80
004035DA 68 2C754000 PUSH JDPACK.0040752C
004035DF FF35 5B704000 PUSH DWORD PTR DS:[40705B]
004035E5 E8 820A0000 CALL JDPACK.0040406C ; JMP to kernel32.GetModuleFileNameA
004035EA E8 87070000 CALL JDPACK.00403D76
004035EF 6A 00 PUSH 0
004035F1 68 0B364000 PUSH JDPACK.0040360B
重建输入表时,插件有两个选项。Method2重建输入表很快,脱壳后运行率高。Method1重建输入表慢,脱壳后运行率较低。不过本程序用Method2重建输入表无法运行,Method1重建输入表后程序可直接运行。
"手动脱壳入门第八篇"脱壳动画!

  
 

  

xTiNt
 手动脱壳入门第八篇JDPack1.01  
手动脱壳入门第八篇JDPack1.01
【脱文标题】 手动脱壳入门第八篇JDPack1.01
【脱文作者】 weiyi75[Dfcg] 
【作者邮箱】 weiyi75@sohu.com 
【作者主页】 Dfcg官方大本营 
【使用工具】 Peid,Ollydbg,ImportREC
【脱壳平台】 Win2K/XP
【软件名称】 JDPack1.01的主程序
【软件简介】 PE文件(EXE、DLL、OCX)压缩加壳工具。压缩比约为50%,压缩后的程序对功能没有任何影响,仍能独立正常运行。可压缩加密程序的代码段、数据段、资源段、输入表、重定位表。反Softice和TRW2000的动态跟踪。全面兼容WIN95\98\NT\2000\XP操作系统。程序完全采用32位纯汇编语言编写,以最小的体积实现最强大的功能与速度,未注册的JDPack加壳程序运行后会弹出一个讨厌的注册提示。我发现这个软件好像没有注册判断部分,是直接以未注册形式发行的试用软件,只能爆破修改Compress执行的代码段,去掉没注Messagebox简单提示,汇编知识太差,我不会破这个程序。算了,还是脱它的壳吧。
【软件大小】 91.0 KB
【加壳方式】 JDPack 1.x / JDProtect 0.9 -> TLZJ18 Softwaree
【保护方式】 JDPack
【脱壳声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享: 
软件截图,底都是用没注册的JDPack1.01加壳的软件,点确定按钮才能运行。


程序下载地址
本地下载
首先必须的工具要准备好
脱壳目标,JDPack1.01的主程序。
安装软件后用Peid测JDPACK.EXE的壳为JDPack 1.x / JDProtect 0.9 -> TLZJ18 Softwaree。
手动脱壳建议大家用Ollydbg,工作平台Win2000,WinXp,Win9x不推荐。
手动脱壳时,用Olldbg载入程序,脱壳程序里面会有有好多循环。对付循环时,只能让程序往前运行,基本不能让它往回跳,要想法跳出循环圈。不要用Peid查入口,单步跟踪,提高手动找入口能力。
用OD载入程序后。
确定一个入口警告,然后Od提示程序加壳,选不继续分析。
停在这里
0040E000 > 60 PUSHAD 开始地点,注意PUSHAD关键字
0040E001 E8 00000000 CALL JDPACK.0040E006 F7步过,变形Jmp
0040E006 5D POP EBP
0040E007 8BD5 MOV EDX,EBP
0040E009 81ED C62B4000 SUB EBP,JDPACK.00402BC6
0040E00F 2B95 3D344000 SUB EDX,DWORD PTR SS:[EBP+40343D]
0040E015 81EA 06000000 SUB EDX,6
0040E01B 8995 41344000 MOV DWORD PTR SS:[EBP+403441],EDX
0040E021 83BD 45344000 0>CMP DWORD PTR SS:[EBP+403445],0
0040E028 0F85 BC030000 JNZ JDPACK.0040E3EA 不跳。
0040E02E C785 45344000 0>MOV DWORD PTR SS:[EBP+403445],1
0040E038 B9 64070000 MOV ECX,764
0040E03D 8DB5 182C4000 LEA ESI,DWORD PTR SS:[EBP+402C18]
0040E043 8A85 3C344000 MOV AL,BYTE PTR SS:[EBP+40343C]
0040E049 8A1E MOV BL,BYTE PTR DS:[ESI]
0040E04B 32C3 XOR AL,BL
0040E04D 8806 MOV BYTE PTR DS:[ESI],AL
0040E04F 889D 3C344000 MOV BYTE PTR SS:[EBP+40343C],BL
0040E055 46 INC ESI
0040E056 ^ E2 EB LOOPD SHORT JDPACK.0040E043 往回的循环结构,是程序在内存中解压过程。
0040E058 9C PUSHFD F4到这里发现语句有了一些变化。
0040E059 E7 11 OUT 11,EAX ; I/O 命令
0040E05B D5 D4 AAD 0D4
0040E05D A0 A727922D MOV AL,BYTE PTR DS:[2D9227A7]
0040E062 0242 42 ADD AL,BYTE PTR DS:[EDX+42]
0040E065 BD 36836A5B MOV EBP,5B6A8336
...........................................................
0040E058 9C PUSHFD 
0040E059 58 POP EAX
0040E05A F6C4 01 TEST AH,1
0040E05D 74 07 JE SHORT JDPACK.0040E066 隔壁也跳。
0040E05F 80B5 BF2F4000 F>XOR BYTE PTR SS:[EBP+402FBF],0FF
0040E066 8BB5 E9314000 MOV ESI,DWORD PTR SS:[EBP+4031E9] 跳到这里
0040E06C 8BC5 MOV EAX,EBP
0040E06E 56 PUSH ESI
0040E06F 50 PUSH EAX
0040E070 8B88 F1314000 MOV ECX,DWORD PTR DS:[EAX+4031F1]
0040E076 6A 04 PUSH 4
0040E078 68 00100000 PUSH 1000
0040E07D 51 PUSH ECX
0040E07E 6A 00 PUSH 0
0040E080 FF95 C8334000 CALL DWORD PTR SS:[EBP+4033C8]
...........................................................
0040E090 8BB0 ED314000 MOV ESI,DWORD PTR DS:[EAX+4031ED]
0040E096 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441]
0040E09C 8B88 F1314000 MOV ECX,DWORD PTR DS:[EAX+4031F1]
0040E0A2 03F2 ADD ESI,EDX
0040E0A4 60 PUSHAD 注意这里和0040E0B3处的POPAD对应一个解压段。
0040E0A5 8BFE MOV EDI,ESI
0040E0A7 33C0 XOR EAX,EAX
0040E0A9 AC LODS BYTE PTR DS:[ESI]
0040E0AA 3285 BF2F4000 XOR AL,BYTE PTR SS:[EBP+402FBF]
0040E0B0 AA STOS BYTE PTR ES:[EDI]
0040E0B1 ^ E2 F6 LOOPD SHORT JDPACK.0040E0A9 循环解压。
0040E0B3 61 POPAD 和0040E0A4处的PUSHAD对应。F4到这里。
0040E0B4 8BBD C9314000 MOV EDI,DWORD PTR SS:[EBP+4031C9]
0040E0BA F3:A4 REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[>
0040E0BC 8BB5 C9314000 MOV ESI,DWORD PTR SS:[EBP+4031C9]
0040E0C2 8BB8 ED314000 MOV EDI,DWORD PTR DS:[EAX+4031ED]
0040E0C8 03FA ADD EDI,EDX
0040E0CA 57 PUSH EDI
0040E0CB 56 PUSH ESI
0040E0CC E8 D4030000 CALL JDPACK.0040E4A5 远程Call,F8步过。
0040E0D1 5E POP ESI ; 00340000
0040E0D2 5F POP EDI
0040E0D3 58 POP EAX
0040E0D4 5E POP ESI
0040E0D5 56 PUSH ESI
0040E0D6 50 PUSH EAX
0040E0D7 8B88 F1314000 MOV ECX,DWORD PTR DS:[EAX+4031F1]
0040E0DD 8BB5 C9314000 MOV ESI,DWORD PTR SS:[EBP+4031C9]
0040E0E3 68 00400000 PUSH 4000
0040E0E8 51 PUSH ECX
0040E0E9 56 PUSH ESI
0040E0EA FF95 CC334000 CALL DWORD PTR SS:[EBP+4033CC]
0040E0F0 58 POP EAX
0040E0F1 5E POP ESI
0040E0F2 83C0 08 ADD EAX,8
0040E0F5 4E DEC ESI
0040E0F6 ^ 0F85 72FFFFFF JNZ JDPACK.0040E06E 往回跳。
0040E0FC 83BD D1314000 0>CMP DWORD PTR SS:[EBP+4031D1],0 F4直接到这里。
0040E103 0F84 8A000000 JE JDPACK.0040E193 跳走。
0040E109 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441]
0040E10F 8B85 CD314000 MOV EAX,DWORD PTR SS:[EBP+4031CD]
0040E115 2BD0 SUB EDX,EAX
0040E117 74 7A JE SHORT JDPACK.0040E193
...........................................................
0040E193 8D9D 64334000 LEA EBX,DWORD PTR SS:[EBP+403364] 转到这里。
0040E199 53 PUSH EBX
0040E19A FF95 C4334000 CALL DWORD PTR SS:[EBP+4033C4]
0040E1A0 50 PUSH EAX
0040E1A1 8D9D 0C334000 LEA EBX,DWORD PTR SS:[EBP+40330C]
0040E1A7 53 PUSH EBX
0040E1A8 50 PUSH EAX
0040E1A9 FF95 BC334000 CALL DWORD PTR SS:[EBP+4033BC]
0040E1AF 8985 BD314000 MOV DWORD PTR SS:[EBP+4031BD],EAX
0040E1B5 58 POP EAX
0040E1B6 8D9D 18334000 LEA EBX,DWORD PTR SS:[EBP+403318]
0040E1BC 53 PUSH EBX
往下好多API调用。
...........................................................
0040E260 /74 14 JE SHORT JDPACK.0040E276 不跳。
0040E262 |837B 10 02 CMP DWORD PTR DS:[EBX+10],2
0040E266 |74 02 JE SHORT JDPACK.0040E26A 跳。
0040E268 |EB 1A JMP SHORT JDPACK.0040E284
0040E26A |E8 C7010000 CALL JDPACK.0040E436 远程Call,F8步过
0040E26F |83F8 FF CMP EAX,-1
0040E272 |75 10 JNZ SHORT JDPACK.0040E284 跳走。
0040E274 |EB 0A JMP SHORT JDPACK.0040E280
0040E276 \E8 85010000 CALL JDPACK.0040E400
0040E27B 83F8 FF CMP EAX,-1
0040E27E 75 04 JNZ SHORT JDPACK.0040E284
0040E280 61 POPAD
0040E281 33C0 XOR EAX,EAX
0040E283 C3 RETN
0040E284 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441] 到这里。
0040E28A 8BB5 D9314000 MOV ESI,DWORD PTR SS:[EBP+4031D9]
0040E290 03F2 ADD ESI,EDX
0040E292 8B46 0C MOV EAX,DWORD PTR DS:[ESI+C]
0040E295 0BC0 OR EAX,EAX
0040E297 0F84 4D010000 JE JDPACK.0040E3EA 这是个很大的跳转,有可能是循环出口,先留心。
0040E29D 03C2 ADD EAX,EDX
0040E29F 8985 A5314000 MOV DWORD PTR SS:[EBP+4031A5],EAX
0040E2A5 8BD8 MOV EBX,EAX
0040E2A7 50 PUSH EAX
0040E2A8 FF95 C0334000 CALL DWORD PTR SS:[EBP+4033C0]
0040E2AE 0BC0 OR EAX,EAX
0040E2B0 75 55 JNZ SHORT JDPACK.0040E307 跳走。
0040E2B2 53 PUSH EBX
0040E2B3 FF95 C4334000 CALL DWORD PTR SS:[EBP+4033C4]
0040E2B9 0BC0 OR EAX,EAX
...........................................................
0040E307 8985 E1314000 MOV DWORD PTR SS:[EBP+4031E1],EAX 到这里 ; GDI32.77F40000
0040E30D C785 E5314000 0>MOV DWORD PTR SS:[EBP+4031E5],0
0040E317 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441]
0040E31D 8B06 MOV EAX,DWORD PTR DS:[ESI]
0040E31F 0BC0 OR EAX,EAX
0040E321 75 03 JNZ SHORT JDPACK.0040E326
0040E323 8B46 10 MOV EAX,DWORD PTR DS:[ESI+10]
0040E326 03C2 ADD EAX,EDX
0040E328 0385 E5314000 ADD EAX,DWORD PTR SS:[EBP+4031E5]
0040E32E 8B18 MOV EBX,DWORD PTR DS:[EAX]
0040E330 8B7E 10 MOV EDI,DWORD PTR DS:[ESI+10]
0040E333 03FA ADD EDI,EDX
0040E335 03BD E5314000 ADD EDI,DWORD PTR SS:[EBP+4031E5]
0040E33B 85DB TEST EBX,EBX
0040E33D 0F84 99000000 JE JDPACK.0040E3DC 这也是个很大的跳转,有可能是循环出口,先留心。
0040E34B 03DA ADD EBX,EDX
0040E34D 83C3 02 ADD EBX,2
0040E350 EB 15 JMP SHORT JDPACK.0040E367 跳。
0040E367 53 PUSH EBX 到这里 
0040E368 FFB5 E1314000 PUSH DWORD PTR SS:[EBP+4031E1]
0040E36E FF95 BC334000 CALL DWORD PTR SS:[EBP+4033BC]
0040E374 EB 04 JMP SHORT JDPACK.0040E37A 跳。
0040E37A 803B 00 CMP BYTE PTR DS:[EBX],0 到这里。
0040E37D ^ 75 F7 JNZ SHORT JDPACK.0040E376 小循环。
0040E37F 0BC0 OR EAX,EAX F4到这里。
0040E381 75 4B JNZ SHORT JDPACK.0040E3CE 跳走。
0040E383 FFB5 A5314000 PUSH DWORD PTR SS:[EBP+4031A5]
0040E389 53 PUSH EBX
0040E38A 8D9D 90324000 LEA EBX,DWORD PTR SS:[EBP+403290]
0040E390 53 PUSH EBX
0040E391 8D9D DD344000 LEA EBX,DWORD PTR SS:[EBP+4034DD]
0040E397 53 PUSH EBX
0040E398 FF95 C1314000 CALL DWORD PTR SS:[EBP+4031C1]
...........................................................
0040E3CE 8907 MOV DWORD PTR DS:[EDI],EAX 到这里。 
0040E3D0 8385 E5314000 0>ADD DWORD PTR SS:[EBP+4031E5],4
0040E3D7 ^ E9 3BFFFFFF JMP JDPACK.0040E317
0040E3DC 83C6 14 ADD ESI,14
0040E3DF 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441]
0040E3E5 ^ E9 A8FEFFFF JMP JDPACK.0040E292
0040E3EA 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441]
0040E3F0 8B85 D5314000 MOV EAX,DWORD PTR SS:[EBP+4031D5]
0040E3F6 03C2 ADD EAX,EDX
0040E3F8 894424 1C MOV DWORD PTR SS:[ESP+1C],EAX
0040E3FC 61 POPAD
0040E3FD 50 PUSH EAX
0040E3FE C3 RETN
0040E3D0 8385 E5314000 0>ADD DWORD PTR SS:[EBP+4031E5],4
0040E3D7 ^ E9 3BFFFFFF JMP JDPACK.0040E317 往回跳
0040E3DC 83C6 14 ADD ESI,14
0040E3DF 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441]
0040E3E5 ^ E9 A8FEFFFF JMP JDPACK.0040E292 也往回跳
0040E3EA 8B95 41344000 MOV EDX,DWORD PTR SS:[EBP+403441] 很幸运,F4直接到达这里。
0040E3F0 8B85 D5314000 MOV EAX,DWORD PTR SS:[EBP+4031D5]
0040E3F6 03C2 ADD EAX,EDX
0040E3F8 894424 1C MOV DWORD PTR SS:[ESP+1C],EAX
0040E3FC 61 POPAD 与入口关键字对应,下面有Retn语句,入口就在附近。
0040E3FD 50 PUSH EAX
0040E3FE C3 RETN 准备返回到程序入口点,跨段。
004035C9 6A 00 PUSH 0 入口点,跨段来到这里并且经过了PoPad关键字,我们在这里用Od的 Dump插件直接脱壳
004035CB E8 A20A0000 CALL JDPACK.00404072 ; JMP to kernel32.GetModuleHandleA
004035D0 A3 5B704000 MOV DWORD PTR DS:[40705B],EAX
004035D5 68 80000000 PUSH 80
004035DA 68 2C754000 PUSH JDPACK.0040752C
004035DF FF35 5B704000 PUSH DWORD PTR DS:[40705B]
004035E5 E8 820A0000 CALL JDPACK.0040406C ; JMP to kernel32.GetModuleFileNameA
004035EA E8 87070000 CALL JDPACK.00403D76
004035EF 6A 00 PUSH 0
004035F1 68 0B364000 PUSH JDPACK.0040360B
重建输入表时,插件有两个选项。Method2重建输入表很快,脱壳后运行率高。Method1重建输入表慢,脱壳后运行率较低。不过本程序用Method2重建输入表无法运行,Method1重建输入表后程序可直接运行。
"手动脱壳入门第八篇"脱壳动画!