首页
社区
课程
招聘
[原创]完美脱ASPack壳, 无需修复ImportTable方法!
发表于: 2009-5-18 08:48 5617

[原创]完美脱ASPack壳, 无需修复ImportTable方法!

2009-5-18 08:48
5617
网上也有好几篇类似的ASPack脱壳文章, 但都并非是真正的完美脱壳, 这里我简单的用 5 个步骤教大家如何完美脱下ASPack壳:

1. 用OD载入被ASPack加壳的程序, 下API断点 BP VirtualFree.
F9 停下来 -> 取消断点 -> Ctrl + F9 -> F8
0040519D 83C6 08 ADD ESI, 8 ; 停在这里
004051A0 833E 00 CMP DWORD PTR DS:[ESI], 0
004051A3 ^ 0F85 1EFFFFFF JNZ 004050C7
004051A9 68 00800000 PUSH 8000 ; 在这里F2下断点, F9运行, 解压完毕, 取消断点...此时用LoadPE Dump(Full)
004051AE 6A 00 PUSH 0
004051B0 FFB5 56010000 PUSH DWORD PTR SS:[EBP+156]
004051B6 FF95 51050000 CALL DWORD PTR SS:[EBP+551]
=================================================
2. F8往下寻找ImportTableRVA, 大概15下到达此处.
00405278 BE 38200000 MOV ESI, 2038 ; ImportTableRva = 2038
0040527D 8B95 22040000 MOV EDX, DWORD PTR SS:[EBP+422] ; [EBP+422] 镜像基址 00400000
00405283 03F2 ADD ESI, EDX
00405285 8B46 0C MOV EAX, DWORD PTR DS:[ESI+C]
00405288 85C0 TEST EAX, EAX
=================================================
3. 寻找OEP及计算ImportTableSize.
Ctrl + B 寻找十六进制 B8 01 00 00 00 C2 0C 00 68 00 00 00 00 C3
004053B2 B8 01000000 MOV EAX, 1
004053B7 C2 0C00 RETN 0C
004053BA 68 00000000 PUSH 0 ; 此处将出现OEP地址
004053BF C3 RETN
往上查看一下发现
0040539A B8 00100000 MOV EAX, 1000 ; F4到此处, OEP = 1000 物理地址
0040539F 50 PUSH EAX
004053A0 0385 22040000 ADD EAX, DWORD PTR SS:[EBP+422]
004053A6 59 POP ECX
004053A7 0BC9 OR ECX, ECX
004053A9 8985 A8030000 MOV DWORD PTR SS:[EBP+3A8], EAX
004053AF 61 POPAD
004053B0 75 08 JNZ SHORT 004053BA
断下来后, 留意ESI的值, ImportTableSize = ESI - 镜像基址 + 14 - ImportTableRva = 00402088 - 00400000 - 00002038 = 00000050.
--------------------------------------------------------------------------
004053B2 B8 01000000 MOV EAX, 1
004053B7 C2 0C00 RETN 0C
004053BA 68 00104000 PUSH 00401000 ; 此处将出现OEP地址
004053BF C3 RETN ; F4到此处, 直接返回OEP入口
--------------------------------------------------------------------------
ImportTableRva = 00002038;
ImportTableSize = 00000050;
OEP = 00401000 - 00400000 = 00001000;
=================================================
4. 打开LoadPE中的PE编辑器, 打开脱壳后的文件, 点击目录, 在下面修改 ImportTableRVA: 00002038, ImportTableSize: 00000050, 点击保存, 点击确定...
返回LoadPE编辑器界面, 在入口点处填入OEP的Offset值 00001000.
最后别忘了点击"保存"按钮噢...
=================================================
5. 到这时候程序已经是完全脱壳并且能正常运行的了, 接下来要想完美一些的话, 就是优化PE文件了.
用LoadPE编辑器把ASPack壳加的区段(.aspack, .adata)清除掉, 并且截去尾部, 修正每个区段的标记, 脱ASPack壳已完美成功了!

2009-05-17
By lvtx

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 205
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
是ASPack的壳么? 是的话用ESP定律不是更快?
2009-5-18 10:57
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
效果应该和esp定律是一样的
2009-5-18 11:16
0
游客
登录 | 注册 方可回帖
返回
//