首页
社区
课程
招聘
[求助]Pecompact壳的dll脱壳后如何校验脱壳成功?
发表于: 2014-12-9 13:28 7217

[求助]Pecompact壳的dll脱壳后如何校验脱壳成功?

2014-12-9 13:28
7217
本着学习的目的,研究了某PECompact壳的DLL,使用PEID查出来是PECOMPACT,读了大量文章OD手动脱后修复,也尝试了几种脱壳机,均显示脱壳成功,但将该DLL载入使用时,DLL视乎没有载入,使用PE工具查看导入和导出函数也是合法的,该样本是一段NTRQQ的QQ插件。
附上原版样本: NtrQQ.zip
手工脱掉后244KB,三种脱壳机脱的结果分别是238KB、186KB、224K。
我看飘云阁破解该软件的思路是从另一个DLL,HummerEngine.dll着手处理的,而没有选择该DLL,莫非该DLL的脱壳难度较大?

或者说我手动脱的有问题?请问如何校验?脱掉DLL的壳有哪些注意事项?
大神若是脱掉后可否发个附件我比较一下具体有哪些不同?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 293
活跃值: (45)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
2
注意文件末尾那个附加数据,是文件的CRC校验码,脱壳后别忘了添加,新的CRC校验码可以跟到。
注意这里678AB0BF nop掉。
678AB0B2              8B45 0C         mov eax,dword ptr ss:[ebp+C]
678AB0B5              48              dec eax
678AB0B6              75 32           jnz short NtrQQ.678AB0EA
678AB0B8              E8 66FEFFFF     call NtrQQ.678AAF23
678AB0BD              84C0            test al,al
678AB0BF              75 10           jnz short NtrQQ.678AB0D1                 ; //Nop
678AB0C1              E8 D2FEFFFF     call NtrQQ.678AAF98
678AB0C6              3C 01           cmp al,1
678AB0C8              75 07           jnz short NtrQQ.678AB0D1
678AB0CA              E8 4FFBFFFF     call NtrQQ.678AAC1E
678AB0CF              EB 19           jmp short NtrQQ.678AB0EA
678AB0D1              33C0            xor eax,eax
678AB0D3              50              push eax
678AB0D4              50              push eax
678AB0D5              50              push eax
678AB0D6              68 76AF8A67     push NtrQQ.678AAF76
678AB0DB              50              push eax
678AB0DC              50              push eax
678AB0DD              FF15 D8F08B67   call dword ptr ds:[678BF0D8]             ; kernel32.CreateThread
678AB0E3              50              push eax
678AB0E4              FF15 C4F08B67   call dword ptr ds:[678BF0C4]             ; kernel32.CloseHandle
678AB0EA              33C0            xor eax,eax

678AB0C1这个Call就是计算CRC了,根据附加数据CRC校验码进行比较。
678AB035              56              push esi
678AB036              57              push edi
678AB037              53              push ebx
678AB038              68 486C8C67     push NtrQQ.678C6C48                      ; ASCII "RtlComputeCrc32"
678AB03D              68 586C8C67     push NtrQQ.678C6C58                      ; UNICODE "ntdll.dll"
678AB042              FF15 30F08B67   call dword ptr ds:[678BF030]             ; kernel32.GetModuleHandleW
678AB048              50              push eax
678AB049              FF15 94F08B67   call dword ptr ds:[678BF094]             ; apphelp.73425D3D
678AB04F              FFD0            call eax
678AB051              50              push eax
678AB052              8D45 E8         lea eax,dword ptr ss:[ebp-18]
678AB055              68 706C8C67     push NtrQQ.678C6C70                      ; ASCII "%08X"
678AB05A              50              push eax
678AB05B              FF15 98F28B67   call dword ptr ds:[678BF298]             ; USER32.wsprintfA
678AB061              83C4 0C         add esp,0C
678AB064              FF75 D0         push dword ptr ss:[ebp-30]
678AB067              FF15 C4F08B67   call dword ptr ds:[678BF0C4]             ; kernel32.CloseHandle
678AB06D              8D45 E8         lea eax,dword ptr ss:[ebp-18]
678AB070              50              push eax
678AB071              8D45 D4         lea eax,dword ptr ss:[ebp-2C]
678AB074              50              push eax
678AB075              FF15 6CF18B67   call dword ptr ds:[678BF16C]             ; kernel32.lstrcmpA
2014-12-10 12:14
0
雪    币: 293
活跃值: (45)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
3
还要提醒您一下,上面说到Nop的地方,是通过GetStartupInfo来检测调试器的,后面还有几处检测,不合适会直接调用ZwShutdownSystem重启,调用地方比较多,直接在入口Retn,调试时注意下。
给您发个可用的。
上传的附件:
2014-12-10 15:27
0
雪    币: 204
活跃值: (329)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
非常感谢你的解答,怪不得我每次调试的时候,只要一改马上就无法载入了,原来是GetStartupInfo在作怪。
2014-12-12 16:38
0
游客
登录 | 注册 方可回帖
返回
//