简单的脱壳了下
顺便锻炼下自己
写下脱文。
一开始载入
入口代码凌乱
00419ABD > F2: prefix repne:
00419ABE 85C3 test ebx,eax
00419AC0 1AE2 sbb ah,dl
00419AC2 0FCB bswap ebx
00419AC4 21F9 and ecx,edi
一直单步。
到这里代码开始规范
00419BAF /EB 01 jmp short U.00419BB2
00419BB1 |8489 EEF6C623 test byte ptr ds:[ecx+23C6F6EE],cl
00419BB7 0FAFD5 imul edx,ebp
继续单步
到这里
00419BEF ^\75 E6 jnz short U.00419BD7
00419BF1 ^ EB D3 jmp short U.00419BC6----------直接到这里
下面的都是0000了直接可以运行到这里
继续单步
看到
004198E0 60 pushad
004198E1 BE 00304100 mov esi,U.00413000--------------ESP定律
004198E6 8DBE 00E0FEFF lea edi,dword ptr ds:[esi+FFFEE000]
004198EC 57 push edi
004198ED 83CD FF or ebp,FFFFFFFF
004198F0 EB 10 jmp short U.00419902
004198F2 90 nop
然后到这里
00419A87 8D4424 80 lea eax,dword ptr ss:[esp-80]-----到这里
00419A8B 6A 00 push 0
00419A8D 39C4 cmp esp,eax
00419A8F ^ 75 FA jnz short U.00419A8B
00419A91 83EC 80 sub esp,-80
00419A94 - E9 0128FFFF jmp U.0040C29A---------------大跳转 F4
估计是快到OEP了
00419A99 0000 add byte ptr ds:[eax],al
然后就是这里了
0040C29A 55 push ebp------------OEP
0040C29B 8BEC mov ebp,esp
0040C29D 6A FF push -1
0040C29F 68 98E34000 push U.0040E398
0040C2A4 68 FEC34000 push U.0040C3FE ; jmp to msvcrt._except_handler3
0040C2A9 64:A1 00000000 mov eax,dword ptr fs:[0]
0040C2AF 50 push eax
经过单步以后并没有发现IAT加密和其他的暗桩什么的
压缩壳。
直接用内存景象
重新载入
打开内存(ALT +M)
内存映射,项目 25
地址=0041A000
大小=00002000 (8192.)
物主=U 00400000
区段=.rsrc
包含=data,imports,resources
类型=Imag 01001002
访问=R
初始访问=RWE
F2
SHIFT +F9
00419A22 FF96 04A10100 call dword ptr ds:[esi+1A104] ; kernel32.LoadLibraryA----------到这里
00419A28 95 xchg eax,ebp
00419A29 8A07 mov al,byte ptr ds:[edi]
00419A2B 47 inc edi
然后打开内存
内存映射,项目 23
地址=00401000
大小=00012000 (73728.)
物主=U 00400000
区段=pyhH
类型=Imag 01001002
访问=R
初始访问=RWE
F2
SHIFT+F9
到这里
00419A4A 8903 mov dword ptr ds:[ebx],eax ; kernel32.CreateFileA
00419A4C 83C3 04 add ebx,4
00419A4F ^ EB D8 jmp short U.00419A29
00419A51 FF96 18A10100 call dword ptr ds:[esi+1A118]
往下拉
看到
00419A8B 6A 00 push 0
00419A8D 39C4 cmp esp,eax
00419A8F ^ 75 FA jnz short U.00419A8B
00419A91 83EC 80 sub esp,-80
00419A94 - E9 0128FFFF jmp U.0040C29A-----------F4
然后跳到OEP
然后DUMP
在IAT修复的时候
有两个指针无效
反汇编/十六进制进去看了下 没有找到函数
估计是调用DLL什么 的
(因为我找函数的时候发现是DLL的选择,猜测下)
然后分析后认为不是加密引起的(应该是读狗的DLL,因为一开始就提示要狗)
直接CUT
然后转存修复
最后看了下
程序运行的情况跟没脱壳的没什么不一样。
OK