软件:大嘴日语 V7.0 Build 71016
加壳:ExeStealth v2.73+?(壳没查出来)+Aspack+Upx
下载地址:http://www.skycn.com/soft/12090.html(我不能发附件,只能提供下载地址了
)
对脱壳感兴趣,学习而已
在该软件的四层壳脱完后,手动查找IAT,用Importrec 修复时,会出现两个无效指针(指向同一个地方),用等级1,2,3都无法修复这两个指针。剪切到后,修复脱壳后的程序,提示错误,无法运行。请各位大哥大姐给小弟指点一下。
脱壳过程:
用PEID查壳,没有查出来,用FI查壳,是ExeStealth v2.73r...
经过多次试验,最后一次异常法,可以一次过前面两层壳。
OD除了“忽略在KERNEL中发生的内存访问异常”勾上,其余的都不勾。用插件隐藏OD。
载入程序,停在:
015CD060 > /EB 00 jmp short BmJapane.015CD062
015CD062 \60 pushad
015CD063 E8 00000000 call BmJapane.015CD068
015CD068 5D pop ebp
015CD069 81ED DB274000 sub ebp,BmJapane.004027DB
015CD06F B9 16000000 mov ecx,16
015CD074 83C1 04 add ecx,4
015CD077 83C1 01 add ecx,1
015CD07A EB 05 jmp short BmJapane.015CD081
015CD07C - EB FE jmp short BmJapane.015CD07C
015CD07E 83C7 56 add edi,56
015CD081 EB 00 jmp short BmJapane.015CD083
015CD083 EB 00 jmp short BmJapane.015CD085
015CD085 83E9 02 sub ecx,2
015CD088 81C1 78432765 add ecx,65274378
015CD08E EB 00 jmp short BmJapane.015CD090
shift+f9 第8次 程序运行
重新载入,shift+f9,7次后,看堆栈:
0012FFBC FFFFFFFF SEH 链尾部
0012FFC0 00E5A724 SE 句柄 //找到这里的00E5A724
0012FFC4 7C816FD7 返回到 kernel32.7C816FD7
0012FFC8 7C930738 ntdll.7C930738
ctrl+g 跟随到 00E5A724 F2下断,shift+f9 运行到:
00E5A724 B8 A994E5F0 mov eax,F0E594A9 //停在这里
00E5A729 8D88 9E120010 lea ecx,dword ptr ds:[eax+1000129E]
00E5A72F 8941 01 mov dword ptr ds:[ecx+1],eax
00E5A732 8B5424 04 mov edx,dword ptr ss:[esp+4]
00E5A736 8B52 0C mov edx,dword ptr ds:[edx+C]
00E5A739 C602 E9 mov byte ptr ds:[edx],0E9
00E5A73C 83C2 05 add edx,5
00E5A73F 2BCA sub ecx,edx
00E5A741 894A FC mov dword ptr ds:[edx-4],ecx
00E5A744 33C0 xor eax,eax
00E5A746 C3 retn
00E5A747 B8 78563412 mov eax,12345678
00E5A74C 64:8F05 0000000>pop dword ptr fs:[0]
00E5A753 83C4 04 add esp,4
删除断点,代码往下翻,将找到jmp eax, 下断,shift+f9运行到:
00E5A7E6 - FFE0 jmp eax ; BmJapane.00BE4001 //停在这里
00E5A7E8 0140 BE add dword ptr ds:[eax-42],eax
00E5A7EB 0008 add byte ptr ds:[eax],cl
00E5A7ED A8 E5 test al,0E5
00E5A7EF 0030 add byte ptr ds:[eax],dh
删除断点,f8 到了aspack 的入口了:
00BE4001 60 pushad //停在这里
00BE4002 E8 03000000 call BmJapane.00BE400A
00BE4007 - E9 EB045D45 jmp 461B44F7
00BE400C 55 push ebp
00BE400D C3 retn
00BE400E E8 01000000 call BmJapane.00BE4014
00BE4013 EB 5D jmp short BmJapane.00BE4072
00BE4015 BB EDFFFFFF mov ebx,-13
00BE401A 03DD add ebx,ebp
ESP定律搞定,到了UPX的壳的入口了:
009714A0 60 pushad //停在这里
009714A1 BE 00207C00 mov esi,BmJapane.007C2000
009714A6 8DBE 00F0C3FF lea edi,dword ptr ds:[esi+FFC3F000]
009714AC 57 push edi
009714AD 83CD FF or ebp,FFFFFFFF
009714B0 EB 10 jmp short BmJapane.009714C2
009714B2 90 nop
009714B3 90 nop
009714B4 90 nop
ESP定律搞定,到了程序的入口了:
006B1298 55 push ebp //程序的OEP
006B1299 8BEC mov ebp,esp
006B129B 83C4 F0 add esp,-10
006B129E 53 push ebx
006B129F B8 380A6B00 mov eax,BmJapane.006B0A38
006B12A4 E8 EB65D5FF call BmJapane.00407894
006B12A9 8B1D D49F6B00 mov ebx,dword ptr ds:[6B9FD4] ; BmJapane.006BBCD8
006B12AF 8B03 mov eax,dword ptr ds:[ebx]
006B12B1 E8 5642DEFF call BmJapane.0049550C
006B12B6 8B03 mov eax,dword ptr ds:[ebx]
006B12B8 BA E0156B00 mov edx,BmJapane.006B15E0
006B12BD E8 323EDEFF call BmJapane.004950F4
006B12C2 8B0B mov ecx,dword ptr ds:[ebx]
006B12C4 B2 01 mov dl,1
006B12C6 A1 A8B45A00 mov eax,dword ptr ds:[5AB4A8]
006B12CB E8 7CEADFFF call BmJapane.004AFD4C
我用OD自带的插件和LoadPE都脱了一个,
修复过程
用Importrec 自动查找IAT和手动查找IAT都试了一下,有两个无效指针,I等级1,2,3都修复不了,就剪切掉了,修复脱壳文件。运行错误,参考了 “且行且远大哥的补区段手脱大嘴日语V7.0”,
不过补区段没弄明白,不会弄。
希望好心的大哥大姐给我指点一下。
另附第二层的入口, 第二层壳是什么壳啊,查壳工具查不出来,有知道的大哥大姐请告诉我
015AF000 > 60 pushad ; (初始化 cpu 选择状态)
015AF001 50 push eax
015AF002 E8 01000000 call BmJapane.015AF008
015AF007 - 73 83 jnb short BmJapane.015AEF8C
015AF009 C40458 les eax,fword ptr ds:[eax+ebx*2]
015AF00C 87FA xchg edx,edi
015AF00E D3EF shr edi,cl
015AF010 50 push eax
015AF011 E8 01000000 call BmJapane.015AF017
015AF016 - E9 83C40458 jmp 595FB49E
015AF01B 85FE test esi,edi
015AF01D 50 push eax
015AF01E E8 01000000 call BmJapane.015AF024
015AF023 - 7C 83 jl short BmJapane.015AEFA8
015AF025 C40458 les eax,fword ptr ds:[eax+ebx*2]
015AF028 85FE test esi,edi
015AF02A 74 03 je short BmJapane.015AF02F
015AF02C 75 01 jnz short BmJapane.015AF02F
015AF02E 76 0F jbe short BmJapane.015AF03F
015AF030 8902 mov dword ptr ds:[edx],eax
015AF032 0000 add byte ptr ds:[eax],al
015AF034 00D3 add bl,dl
015AF036 DAE8 fisubr eax ; 非法使用寄存器
015AF038 0100 add dword ptr ds:[eax],eax
015AF03A 0000 add byte ptr ds:[eax],al
015AF03C - 76 83 jbe short BmJapane.015AEFC1
015AF03E C404F8 les eax,fword ptr ds:[eax+edi*8]
015AF041 50 push eax
015AF042 E8 01000000 call BmJapane.015AF048
015AF047 - 71 83 jno short BmJapane.015AEFCC
015AF049 C40458 les eax,fword ptr ds:[eax+ebx*2]
015AF04C 0F8C 02000000 jl BmJapane.015AF054
015AF052 87D6 xchg esi,edx
015AF054 E8 01000000 call BmJapane.015AF05A
015AF059 - 72 83 jb short BmJapane.015AEFDE
015AF05B C4040F les eax,fword ptr ds:[edi+ecx]
015AF05E 8001 00 add byte ptr ds:[ecx],0
015AF061 0000 add byte ptr ds:[eax],al
015AF063 FC cld
015AF064 E8 01000000 call BmJapane.015AF06A
015AF069 7A 83 jpe short BmJapane.015AEFEE
015AF06B C4044F les eax,fword ptr ds:[edi+ecx*2]
015AF06E 50 push eax
015AF06F E8 01000000 call BmJapane.015AF075
015AF074 - 78 83 js short BmJapane.015AEFF9
015AF076 C40458 les eax,fword ptr ds:[eax+ebx*2]
015AF079 70 05 jo short BmJapane.015AF080
015AF07B BA 152A4632 mov edx,32462A15
015AF080 50 push eax
015AF081 E8 01000000 call BmJapane.015AF087
015AF086 ^ 73 83 jnb short BmJapane.015AF00B
015AF088 C40458 les eax,fword ptr ds:[eax+ebx*2]
015AF08B 81DA 0529311B sbb edx,1B312905
015AF091 50 push eax
015AF092 E8 01000000 call BmJapane.015AF098
015AF097 E8 83C40458 call 595FB51F
015AF09C 66:BE BBD9 mov si,0D9BB
015AF0A0 7A 03 jpe short BmJapane.015AF0A5
015AF0A2 7B 01 jpo short BmJapane.015AF0A5
015AF0A4 - E9 7501F872 jmp 7452F21E
015AF0A9 0373 01 add esi,dword ptr ds:[ebx+1]
015AF0AC ^ 78 F8 js short BmJapane.015AF0A6
015AF0AE 76 03 jbe short BmJapane.015AF0B3
015AF0B0 77 01 ja short BmJapane.015AF0B3
015AF0B2 EB 0F jmp short BmJapane.015AF0C3
015AF0B4 8D03 lea eax,dword ptr ds:[ebx]
015AF0B6 0000 add byte ptr ds:[eax],al
015AF0B8 0066 0B add byte ptr ds:[esi+B],ah
015AF0BB F5 cmc
015AF0BC E8 01000000 call BmJapane.015AF0C2
015AF0C1 7B 83 jpo short BmJapane.015AF046
015AF0C3 04 24 add al,24
015AF0C5 06 push es
015AF0C6 C3 retn
015AF0C7 66:D3D7 rcl di,cl
015AF0CA EB 01 jmp short BmJapane.015AF0CD
015AF0CC ^ 78 87 js short BmJapane.015AF055
015AF0CE FE ??? ; 未知命令
015AF0CF 78 03 js short BmJapane.015AF0D4
015AF0D1 79 01 jns short BmJapane.015AF0D4
015AF0D3 ^ 73 F8 jnb short BmJapane.015AF0CD
015AF0D5 78 03 js short BmJapane.015AF0DA
015AF0D7 79 01 jns short BmJapane.015AF0DA
015AF0D9 E8 4A50E801 call 03434128
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!