各位大神们,小菜在脱一款软件的壳,exeinfo PE查壳显示是:Themida/Winlicense v.2.1.x.x ( std )。以下是软件的头部:
00903004 53 push ebx
00903005 E8 01000000 call 复件_彩?0090300B
0090300A CC int3
0090300B 58 pop eax
0090300C 89C3 mov ebx,eax
0090300E 40 inc eax
0090300F 2D 00800C00 sub eax,0xC8000
00903014 2D 1C8A0910 sub eax,0x10098A1C
00903019 05 118A0910 add eax,0x10098A11
0090301E 803B CC cmp byte ptr ds:[ebx],0xCC
00903021 75 19 jnz X复件_彩?0090303C
00903023 C603 00 mov byte ptr ds:[ebx],0x0
00903026 BB 00100000 mov ebx,0x1000
0090302B 68 9E35B64F push 0x4FB6359E
00903030 68 00778251 push 0x51827700
脱壳后的头部:
005E93F8 >/$ 55 push ebp
005E93F9 |. 8BEC mov ebp,esp
005E93FB |. 6A FF push -0x1
005E93FD |. 68 081B6700 push 333.00671B08
005E9402 |. 68 28CD5E00 push 333.005ECD28 ; SE 处理程序安装
005E9407 |. 64:A1 00000000 mov eax,dword ptr fs:[0]
005E940D |. 50 push eax
005E940E |. 64:8925 000000>mov dword ptr fs:[0],esp
005E9415 |. 83EC 58 sub esp,0x58
005E9418 |. 53 push ebx
005E9419 |. 56 push esi
005E941A |. 57 push edi
005E941B |. 8965 E8 mov [local.6],esp
005E941E |. 90 nop
005E941F |. E8 2E83227C call kernel32.GetVersion
脱壳后,查壳显示是C++程序。是用LordPE直接DUMP的,无法运行,ImpotrRMC,无法自动修复IAT,手动输入后,还是无法运行。提示:
应用程序出错,“0x769b1b2”指令引用的“”内存。改内存不能为“read”.
重新加载OD,F8单步分析,发现未脱壳文件的地址:0X769b1be2是一个系统API函数;而脱了壳之后只是一个地址,也就是该地址没有成功映射函数,所以出现异常;
用LordPE载入,发现脱壳之后的程序只能加载一部分的函数,所以出现很多无法修复的错误指针。。。。
请问各位大神,为什么会出现这种情况(我是用完整转存的)?是不是没有完整脱壳(我在内存数据中能够查看到完整的IAT表)?应该怎样解决?谢谢。。。
附加源文件和脱壳后的文件:http://pan.baidu.com/s/102oVC
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!