-
-
[原创]XX分析软件双重手动脱壳 ASPack 2.12 & UPX 0.89.6 - 1.02 / 1.05 - 1.24
-
发表于: 2007-10-6 11:20 5694
-
作 者:dongfeng
Email: dongfeng4478@163.com
Q Q: 447224949
目的:今天弄了一个分析软件来用,可是要注册,想着这看雪混了这么久也试着破解破解,可是加了壳了,只有先脱掉再说,虽说最终还是因为功力不够没破到这个软件,但还把它的两层壳脱掉了。相信有很多新朋友还和我是一个水平,把脱壳的过程写下来新朋友们可以看看。
脱壳软件:XX分析软件
软件下载:http://www.cncpsoft.com/showsoft.asp?soft_id=48
脱壳日期:2007-10-4
脱壳环境:Windows XP SP2
使用工具:PEID,OLLYDBG,Imprec
首先用PEID查壳,显示ASPack 2.12 -> Alexey Solodovnikov,是ASPack2.12的壳,以前只练习过2.11以下的,心想着不知2.12是否能脱。
用OLLYDBG载入软件主程序:提示代码部分也许是经过了压缩,加密,或者包含很大数目的嵌入式数据。……直接点否就可以。
0055C001 z> 60 pushad 代码起始位置,按F8过到下一步
0055C002 E8 03000000 call zhyc.0055C00A 这个CALL 要按F7进入此时代码跳到另一段
0055C007 - E9 EB045D45 jmp 45B2C4F7
0055C00C 55 push ebp
0055C00D C3 retn
0055C00A 5D pop ebp 上面按F7后的首行,同样F8过
0055C00B 45 inc ebp
0055C00C 55 push ebp
0055C00D C3 retn 一直走到这里又返回另一段
0055C00E E8 01000000 call zhyc.0055C014
0055C013 EB 5D jmp short zhyc.0055C072
0055C007 - E9 EB045D45 jmp 45B2C4F7 从005C00D返回来这里,同样F8过
0055C00C 55 push ebp
0055C00D C3 retn
0055C00E E8 01000000 call zhyc.0055C014 从第一行无条件跳到这里,这里要用F7进入
0055C013 EB 5D jmp short zhyc.0055C072
0055C015 BB EDFFFFFF mov ebx,-13
0055C014 5D pop ebp F7进入后到这里,一路按F8过
0055C015 BB EDFFFFFF mov ebx,-13
0055C01A 03DD add ebx,ebp
0055C01C 81EB 00C01500 sub ebx,15C000
0055C022 83BD 22040000 00 cmp dword ptr ss:[ebp+422],0
0055C029 899D 22040000 mov dword ptr ss:[ebp+422],ebx
*省略部分*
0055C136 74 0A je short zhyc.0055C142
0055C138 EB 00 jmp short zhyc.0055C13A
0055C13A 3C E9 cmp al,0E9
0055C13C 74 04 je short zhyc.0055C142
0055C13E 43 inc ebx
0055C13F 49 dec ecx
0055C140 ^ EB EB jmp short zhyc.0055C12D 一直到这里有个往回跳,不要往回跳
0055C142 8B06 mov eax,dword ptr ds:[esi] 点一下这一行,按下F4运行到所选,再按F8
0055C144 EB 00 jmp short zhyc.0055C146
0055C146 803E 2B cmp byte ptr ds:[esi],2B
0055C149 ^ 75 F3 jnz short zhyc.0055C13E 这里也有一个跳,同样不能跳
0055C14B 24 00 and al,0 点一下这一行,F4,再F8
0055C14D C1C0 18 rol eax,18
0055C150 2BC3 sub eax,ebx
0055C152 8906 mov dword ptr ds:[esi],eax
0055C154 83C3 05 add ebx,5
0055C157 83C6 04 add esi,4
0055C15A 83E9 05 sub ecx,5
0055C15D ^ EB CE jmp short zhyc.0055C12D 到这里不能跳
0055C15F 5B pop ebx 点一下,F4,再F8
0055C160 5E pop esi
0055C161 59 pop ecx
0055C162 58 pop eax
0055C163 EB 08 jmp short zhyc.0055C16D
0055C165 0000 add byte ptr ds:[eax],al
0055C167 0000 add byte ptr ds:[eax],al
0055C169 0000 add byte ptr ds:[eax],al
0055C16B 0000 add byte ptr ds:[eax],al
0055C16D 8BC8 mov ecx,eax
0055C16F 8B3E mov edi,dword ptr ds:[esi]
0055C171 03BD 22040000 add edi,dword ptr ss:[ebp+422]
0055C177 8BB5 52010000 mov esi,dword ptr ss:[ebp+152]
0055C17D C1F9 02 sar ecx,2
0055C180 F3:A5 rep movs dword ptr es:[edi],dword ptr ds:[esi>
0055C182 8BC8 mov ecx,eax
0055C184 83E1 03 and ecx,3
0055C187 F3:A4 rep movs byte ptr es:[edi],byte ptr ds:[esi]
0055C189 5E pop esi
0055C18A 68 00800000 push 8000
0055C18F 6A 00 push 0
0055C191 FFB5 52010000 push dword ptr ss:[ebp+152]
0055C197 FF95 51050000 call dword ptr ss:[ebp+551]
0055C19D 83C6 08 add esi,8
0055C1A0 833E 00 cmp dword ptr ds:[esi],0
0055C1A3 ^ 0F85 1EFFFFFF jnz zhyc.0055C0C7 这里不能跳
0055C1A9 68 00800000 push 8000 点一下,F4,再F8
0055C1AE 6A 00 push 0
0055C1B0 FFB5 56010000 push dword ptr ss:[ebp+156]
0055C1B6 FF95 51050000 call dword ptr ss:[ebp+551]
0055C1BC 8B9D 31050000 mov ebx,dword ptr ss:[ebp+531]
0055C1C2 0BDB or ebx,ebx
0055C1C4 74 08 je short zhyc.0055C1CE
*部分省略*
0055C372 50 push eax
0055C373 57 push edi
0055C374 EB 4A jmp short zhyc.0055C3C0
0055C376 8907 mov dword ptr ds:[edi],eax
0055C378 8385 49050000 04 add dword ptr ss:[ebp+549],4
0055C37F ^ E9 32FFFFFF jmp zhyc.0055C2B6 一直到这里,还是不能跳
0055C384 8906 mov dword ptr ds:[esi],eax 点一下,F4,再F8
0055C386 8946 0C mov dword ptr ds:[esi+C],eax
0055C389 8946 10 mov dword ptr ds:[esi+10],eax
0055C38C 83C6 14 add esi,14
0055C38F 8B95 22040000 mov edx,dword ptr ss:[ebp+422]
0055C395 ^ E9 EBFEFFFF jmp zhyc.0055C285 一直F8到这里也不能跳
0055C39A B8 60A11500 mov eax,15A160 点这一行,F4,再接着F8
0055C39F 50 push eax
0055C3A0 0385 22040000 add eax,dword ptr ss:[ebp+422]
0055C3A6 59 pop ecx
0055C3A7 0BC9 or ecx,ecx
0055C3A9 8985 A8030000 mov dword ptr ss:[ebp+3A8],eax
0055C3AF 61 popad 看,这里面出口标志
0055C3B0 75 08 jnz short zhyc.0055C3BA
0055C3B2 B8 01000000 mov eax,1
0055C3B7 C2 0C00 retn 0C
0055C3BA 68 60A15500 push zhyc.0055A160 这里跨区段
0055C3BF C3 retn 注间从这里返回到入回地址
0055C3C0 8B85 26040000 mov eax,dword ptr ss:[ebp+426]
0055A160 60 pushad 从上面跳到这里,在这里应该是入口地址
0055A161 BE 15905200 mov esi,zhyc.00529015
0055A166 8DBE EB7FEDFF lea edi,dword ptr ds:[esi+FFED7FEB]
0055A16C 57 push edi
0055A16D 83CD FF or ebp,FFFFFFFF
0055A170 EB 10 jmp short zhyc.0055A182
0055A172 90 nop
在0055A160 这一行点右键,再点“脱壳在当前调试的进程”用OD插件脱壳,然后其它的都默认,直接点脱壳,另起一个名字比如我起的123保存就行了。
然后找到这个软件,运行,还可以的,心想这个壳就这样被干掉了,那看看是什么语言写的,同样用PEID查看,显示UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo ,不会吧,还有一个壳,不过不要紧,不是什么难的壳,同样用手动脱掉。
这次用OD载入我们刚才脱掉壳的那个名为123的程序。同样提示代码部分也许是经过了压缩,加密,或者包含很大数目的嵌入式数据。……和上个壳一样点否就行了。
0055A160 1> 60 pushad 这时代码停在这,一路F8过
0055A161 BE 15905200 mov esi,123.00529015
0055A166 8DBE EB7FEDFF lea edi,dword ptr ds:[esi+FFED7FEB]
0055A16C 57 push edi
0055A16D 83CD FF or ebp,FFFFFFFF
0055A170 EB 10 jmp short 123.0055A182
0055A172 90 nop
0055A173 90 nop
0055A174 90 nop
0055A175 90 nop
0055A176 90 nop
0055A177 90 nop
0055A178 8A06 mov al,byte ptr ds:[esi]
0055A17A 46 inc esi
0055A17B 8807 mov byte ptr ds:[edi],al
0055A17D 47 inc edi
0055A17E 01DB add ebx,ebx
0055A180 75 07 jnz short 123.0055A189
0055A182 8B1E mov ebx,dword ptr ds:[esi]
0055A184 83EE FC sub esi,-4
0055A187 11DB adc ebx,ebx
0055A189 ^ 72 ED jb short 123.0055A178 F8到这里
0055A18B B8 01000000 mov eax,1 点这一行F4,再按F8
0055A190 01DB add ebx,ebx
0055A192 75 07 jnz short 123.0055A19B
0055A194 8B1E mov ebx,dword ptr ds:[esi]
*省略部分*
0055A1E3 01DB add ebx,ebx
0055A1E5 75 07 jnz short 123.0055A1EE
0055A1E7 8B1E mov ebx,dword ptr ds:[esi]
0055A1E9 83EE FC sub esi,-4
0055A1EC 11DB adc ebx,ebx
0055A1EE ^ 72 CC jb short 123.0055A1BC 一直F8到这里
0055A1F0 41 inc ecx F4 , F8
0055A1F1 01DB add ebx,ebx
0055A1F3 75 07 jnz short 123.0055A1FC
0055A1F5 8B1E mov ebx,dword ptr ds:[esi]
0055A1F7 83EE FC sub esi,-4
0055A1FA 11DB adc ebx,ebx
0055A1FC ^ 72 BE jb short 123.0055A1BC 到这里
0055A1FE 01DB add ebx,ebx F4,F8
0055A200 75 07 jnz short 123.0055A209
0055A202 8B1E mov ebx,dword ptr ds:[esi]
0055A204 83EE FC sub esi,-4
0055A207 11DB adc ebx,ebx
*部分省略*
0055A23C 8B02 mov eax,dword ptr ds:[edx]
0055A23E 83C2 04 add edx,4
0055A241 8907 mov dword ptr ds:[edi],eax
0055A243 83C7 04 add edi,4
0055A246 83E9 04 sub ecx,4
0055A249 ^ 77 F1 ja short 123.0055A23C 到这里
0055A24B 01CF add edi,ecx F4,F8
0055A24D ^ E9 2CFFFFFF jmp 123.0055A17E 到这里
0055A252 5E pop esi F4,F8
0055A253 89F7 mov edi,esi
0055A255 B9 6C000000 mov ecx,6C
0055A25A 8A07 mov al,byte ptr ds:[edi]
0055A25C 47 inc edi
0055A25D 2C E8 sub al,0E8
0055A25F 3C 01 cmp al,1
0055A261 ^ 77 F7 ja short 123.0055A25A F8到这里
0055A263 803F 09 cmp byte ptr ds:[edi],9 F4,F8
0055A266 ^ 75 F2 jnz short 123.0055A25A F8到这里
0055A268 8B07 mov eax,dword ptr ds:[edi] F4,F8
0055A26A 8A5F 04 mov bl,byte ptr ds:[edi+4]
0055A26D 66:C1E8 08 shr ax,8
0055A271 C1C0 10 rol eax,10
0055A274 86C4 xchg ah,al
0055A276 29F8 sub eax,edi
0055A278 80EB E8 sub bl,0E8
0055A27B 01F0 add eax,esi
0055A27D 8907 mov dword ptr ds:[edi],eax
0055A27F 83C7 05 add edi,5
0055A282 88D8 mov al,bl
0055A284 ^ E2 D9 loopd short 123.0055A25F F8到这里
0055A286 8DBE 00801500 lea edi,dword ptr ds:[esi+158000] F4,F8
0055A28C 8B07 mov eax,dword ptr ds:[edi]
0055A28E 09C0 or eax,eax
0055A290 74 45 je short 123.0055A2D7
*部分省略*
0055A2BF 55 push ebp
0055A2C0 FF96 58AE1500 call dword ptr ds:[esi+15AE58]
0055A2C6 09C0 or eax,eax
0055A2C8 74 07 je short 123.0055A2D1
0055A2CA 8903 mov dword ptr ds:[ebx],eax
0055A2CC 83C3 04 add ebx,4
0055A2CF ^ EB D8 jmp short 123.0055A2A9 一直F8 到这里
0055A2D1 FF96 5CAE1500 call dword ptr ds:[esi+15AE5C]
0055A2D7 61 popad 这里出口标志,直点这行,F4,F8
0055A2D8 - E9 276EEAFF jmp 123.00401104 跨区段跳
0055A2DD 0000 add byte ptr ds:[eax],al
00401104 68 6C1B4000 push 123.00401B6C 跳到这里,这应该是真正的程序入口地址了吧
00401109 E8 EEFFFFFF call 123.004010FC 0040110E 0000 add byte ptr ds:[eax],al
00401110 0000 add byte ptr ds:[eax],al
00401112 0000 add byte ptr ds:[eax],al
00401114 3000 xor byte ptr ds:[eax],al
在00401104这一行点右键,再点“脱壳在当前调试的进程”用OD插件脱壳,然后其它的都默认,直接点脱壳,另起一个名字比如我起的456保存就行了。
这一次脱完壳后赶快用PEID查一下脱了没有,显示Microsoft Visual Basic 5.0 / 6.0,呵呵,脱掉了,欣喜之余一运行,提示这个程序不是有效的Win32应用程序,郁闷啊。看来是PE头被破坏,用Imprec来修复试试。
打开Imprec,点获取系统中的进程下面的下拉列表,找到123.exe,(此时OD没关闭,可以直接找到进程,如果关了,要先运行123.exe.)
在OEP后面的输入框里填上1104,就是我们刚才脱壳的入口地址,但00400000是基址,不用填。然后点“自动搜索IAT”,会弹出发现某些数据对话框,点确定就可以了。再点下面的“获取输入表”会自动获得不用操作。最后点“修复抓取文件”,选择我们刚脱了壳的456.exe文件打开就可以了。会自动生成一个456_.exe的文件,这个就是修复好了的,运行还真的可以了。
顺便说一下,第一次写破文,写得不清楚,望各位前辈多多指教和多多原谅。还有这个软件是VB写的,好像不怎么好破,有次数限制,有功能限制,用OD载入又搜索不到字串,望各位前辈指教指教,不甚感激。
Email: dongfeng4478@163.com
Q Q: 447224949
目的:今天弄了一个分析软件来用,可是要注册,想着这看雪混了这么久也试着破解破解,可是加了壳了,只有先脱掉再说,虽说最终还是因为功力不够没破到这个软件,但还把它的两层壳脱掉了。相信有很多新朋友还和我是一个水平,把脱壳的过程写下来新朋友们可以看看。
脱壳软件:XX分析软件
软件下载:http://www.cncpsoft.com/showsoft.asp?soft_id=48
脱壳日期:2007-10-4
脱壳环境:Windows XP SP2
使用工具:PEID,OLLYDBG,Imprec
首先用PEID查壳,显示ASPack 2.12 -> Alexey Solodovnikov,是ASPack2.12的壳,以前只练习过2.11以下的,心想着不知2.12是否能脱。
用OLLYDBG载入软件主程序:提示代码部分也许是经过了压缩,加密,或者包含很大数目的嵌入式数据。……直接点否就可以。
0055C001 z> 60 pushad 代码起始位置,按F8过到下一步
0055C002 E8 03000000 call zhyc.0055C00A 这个CALL 要按F7进入此时代码跳到另一段
0055C007 - E9 EB045D45 jmp 45B2C4F7
0055C00C 55 push ebp
0055C00D C3 retn
0055C00A 5D pop ebp 上面按F7后的首行,同样F8过
0055C00B 45 inc ebp
0055C00C 55 push ebp
0055C00D C3 retn 一直走到这里又返回另一段
0055C00E E8 01000000 call zhyc.0055C014
0055C013 EB 5D jmp short zhyc.0055C072
0055C007 - E9 EB045D45 jmp 45B2C4F7 从005C00D返回来这里,同样F8过
0055C00C 55 push ebp
0055C00D C3 retn
0055C00E E8 01000000 call zhyc.0055C014 从第一行无条件跳到这里,这里要用F7进入
0055C013 EB 5D jmp short zhyc.0055C072
0055C015 BB EDFFFFFF mov ebx,-13
0055C014 5D pop ebp F7进入后到这里,一路按F8过
0055C015 BB EDFFFFFF mov ebx,-13
0055C01A 03DD add ebx,ebp
0055C01C 81EB 00C01500 sub ebx,15C000
0055C022 83BD 22040000 00 cmp dword ptr ss:[ebp+422],0
0055C029 899D 22040000 mov dword ptr ss:[ebp+422],ebx
*省略部分*
0055C136 74 0A je short zhyc.0055C142
0055C138 EB 00 jmp short zhyc.0055C13A
0055C13A 3C E9 cmp al,0E9
0055C13C 74 04 je short zhyc.0055C142
0055C13E 43 inc ebx
0055C13F 49 dec ecx
0055C140 ^ EB EB jmp short zhyc.0055C12D 一直到这里有个往回跳,不要往回跳
0055C142 8B06 mov eax,dword ptr ds:[esi] 点一下这一行,按下F4运行到所选,再按F8
0055C144 EB 00 jmp short zhyc.0055C146
0055C146 803E 2B cmp byte ptr ds:[esi],2B
0055C149 ^ 75 F3 jnz short zhyc.0055C13E 这里也有一个跳,同样不能跳
0055C14B 24 00 and al,0 点一下这一行,F4,再F8
0055C14D C1C0 18 rol eax,18
0055C150 2BC3 sub eax,ebx
0055C152 8906 mov dword ptr ds:[esi],eax
0055C154 83C3 05 add ebx,5
0055C157 83C6 04 add esi,4
0055C15A 83E9 05 sub ecx,5
0055C15D ^ EB CE jmp short zhyc.0055C12D 到这里不能跳
0055C15F 5B pop ebx 点一下,F4,再F8
0055C160 5E pop esi
0055C161 59 pop ecx
0055C162 58 pop eax
0055C163 EB 08 jmp short zhyc.0055C16D
0055C165 0000 add byte ptr ds:[eax],al
0055C167 0000 add byte ptr ds:[eax],al
0055C169 0000 add byte ptr ds:[eax],al
0055C16B 0000 add byte ptr ds:[eax],al
0055C16D 8BC8 mov ecx,eax
0055C16F 8B3E mov edi,dword ptr ds:[esi]
0055C171 03BD 22040000 add edi,dword ptr ss:[ebp+422]
0055C177 8BB5 52010000 mov esi,dword ptr ss:[ebp+152]
0055C17D C1F9 02 sar ecx,2
0055C180 F3:A5 rep movs dword ptr es:[edi],dword ptr ds:[esi>
0055C182 8BC8 mov ecx,eax
0055C184 83E1 03 and ecx,3
0055C187 F3:A4 rep movs byte ptr es:[edi],byte ptr ds:[esi]
0055C189 5E pop esi
0055C18A 68 00800000 push 8000
0055C18F 6A 00 push 0
0055C191 FFB5 52010000 push dword ptr ss:[ebp+152]
0055C197 FF95 51050000 call dword ptr ss:[ebp+551]
0055C19D 83C6 08 add esi,8
0055C1A0 833E 00 cmp dword ptr ds:[esi],0
0055C1A3 ^ 0F85 1EFFFFFF jnz zhyc.0055C0C7 这里不能跳
0055C1A9 68 00800000 push 8000 点一下,F4,再F8
0055C1AE 6A 00 push 0
0055C1B0 FFB5 56010000 push dword ptr ss:[ebp+156]
0055C1B6 FF95 51050000 call dword ptr ss:[ebp+551]
0055C1BC 8B9D 31050000 mov ebx,dword ptr ss:[ebp+531]
0055C1C2 0BDB or ebx,ebx
0055C1C4 74 08 je short zhyc.0055C1CE
*部分省略*
0055C372 50 push eax
0055C373 57 push edi
0055C374 EB 4A jmp short zhyc.0055C3C0
0055C376 8907 mov dword ptr ds:[edi],eax
0055C378 8385 49050000 04 add dword ptr ss:[ebp+549],4
0055C37F ^ E9 32FFFFFF jmp zhyc.0055C2B6 一直到这里,还是不能跳
0055C384 8906 mov dword ptr ds:[esi],eax 点一下,F4,再F8
0055C386 8946 0C mov dword ptr ds:[esi+C],eax
0055C389 8946 10 mov dword ptr ds:[esi+10],eax
0055C38C 83C6 14 add esi,14
0055C38F 8B95 22040000 mov edx,dword ptr ss:[ebp+422]
0055C395 ^ E9 EBFEFFFF jmp zhyc.0055C285 一直F8到这里也不能跳
0055C39A B8 60A11500 mov eax,15A160 点这一行,F4,再接着F8
0055C39F 50 push eax
0055C3A0 0385 22040000 add eax,dword ptr ss:[ebp+422]
0055C3A6 59 pop ecx
0055C3A7 0BC9 or ecx,ecx
0055C3A9 8985 A8030000 mov dword ptr ss:[ebp+3A8],eax
0055C3AF 61 popad 看,这里面出口标志
0055C3B0 75 08 jnz short zhyc.0055C3BA
0055C3B2 B8 01000000 mov eax,1
0055C3B7 C2 0C00 retn 0C
0055C3BA 68 60A15500 push zhyc.0055A160 这里跨区段
0055C3BF C3 retn 注间从这里返回到入回地址
0055C3C0 8B85 26040000 mov eax,dword ptr ss:[ebp+426]
0055A160 60 pushad 从上面跳到这里,在这里应该是入口地址
0055A161 BE 15905200 mov esi,zhyc.00529015
0055A166 8DBE EB7FEDFF lea edi,dword ptr ds:[esi+FFED7FEB]
0055A16C 57 push edi
0055A16D 83CD FF or ebp,FFFFFFFF
0055A170 EB 10 jmp short zhyc.0055A182
0055A172 90 nop
在0055A160 这一行点右键,再点“脱壳在当前调试的进程”用OD插件脱壳,然后其它的都默认,直接点脱壳,另起一个名字比如我起的123保存就行了。
然后找到这个软件,运行,还可以的,心想这个壳就这样被干掉了,那看看是什么语言写的,同样用PEID查看,显示UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo ,不会吧,还有一个壳,不过不要紧,不是什么难的壳,同样用手动脱掉。
这次用OD载入我们刚才脱掉壳的那个名为123的程序。同样提示代码部分也许是经过了压缩,加密,或者包含很大数目的嵌入式数据。……和上个壳一样点否就行了。
0055A160 1> 60 pushad 这时代码停在这,一路F8过
0055A161 BE 15905200 mov esi,123.00529015
0055A166 8DBE EB7FEDFF lea edi,dword ptr ds:[esi+FFED7FEB]
0055A16C 57 push edi
0055A16D 83CD FF or ebp,FFFFFFFF
0055A170 EB 10 jmp short 123.0055A182
0055A172 90 nop
0055A173 90 nop
0055A174 90 nop
0055A175 90 nop
0055A176 90 nop
0055A177 90 nop
0055A178 8A06 mov al,byte ptr ds:[esi]
0055A17A 46 inc esi
0055A17B 8807 mov byte ptr ds:[edi],al
0055A17D 47 inc edi
0055A17E 01DB add ebx,ebx
0055A180 75 07 jnz short 123.0055A189
0055A182 8B1E mov ebx,dword ptr ds:[esi]
0055A184 83EE FC sub esi,-4
0055A187 11DB adc ebx,ebx
0055A189 ^ 72 ED jb short 123.0055A178 F8到这里
0055A18B B8 01000000 mov eax,1 点这一行F4,再按F8
0055A190 01DB add ebx,ebx
0055A192 75 07 jnz short 123.0055A19B
0055A194 8B1E mov ebx,dword ptr ds:[esi]
*省略部分*
0055A1E3 01DB add ebx,ebx
0055A1E5 75 07 jnz short 123.0055A1EE
0055A1E7 8B1E mov ebx,dword ptr ds:[esi]
0055A1E9 83EE FC sub esi,-4
0055A1EC 11DB adc ebx,ebx
0055A1EE ^ 72 CC jb short 123.0055A1BC 一直F8到这里
0055A1F0 41 inc ecx F4 , F8
0055A1F1 01DB add ebx,ebx
0055A1F3 75 07 jnz short 123.0055A1FC
0055A1F5 8B1E mov ebx,dword ptr ds:[esi]
0055A1F7 83EE FC sub esi,-4
0055A1FA 11DB adc ebx,ebx
0055A1FC ^ 72 BE jb short 123.0055A1BC 到这里
0055A1FE 01DB add ebx,ebx F4,F8
0055A200 75 07 jnz short 123.0055A209
0055A202 8B1E mov ebx,dword ptr ds:[esi]
0055A204 83EE FC sub esi,-4
0055A207 11DB adc ebx,ebx
*部分省略*
0055A23C 8B02 mov eax,dword ptr ds:[edx]
0055A23E 83C2 04 add edx,4
0055A241 8907 mov dword ptr ds:[edi],eax
0055A243 83C7 04 add edi,4
0055A246 83E9 04 sub ecx,4
0055A249 ^ 77 F1 ja short 123.0055A23C 到这里
0055A24B 01CF add edi,ecx F4,F8
0055A24D ^ E9 2CFFFFFF jmp 123.0055A17E 到这里
0055A252 5E pop esi F4,F8
0055A253 89F7 mov edi,esi
0055A255 B9 6C000000 mov ecx,6C
0055A25A 8A07 mov al,byte ptr ds:[edi]
0055A25C 47 inc edi
0055A25D 2C E8 sub al,0E8
0055A25F 3C 01 cmp al,1
0055A261 ^ 77 F7 ja short 123.0055A25A F8到这里
0055A263 803F 09 cmp byte ptr ds:[edi],9 F4,F8
0055A266 ^ 75 F2 jnz short 123.0055A25A F8到这里
0055A268 8B07 mov eax,dword ptr ds:[edi] F4,F8
0055A26A 8A5F 04 mov bl,byte ptr ds:[edi+4]
0055A26D 66:C1E8 08 shr ax,8
0055A271 C1C0 10 rol eax,10
0055A274 86C4 xchg ah,al
0055A276 29F8 sub eax,edi
0055A278 80EB E8 sub bl,0E8
0055A27B 01F0 add eax,esi
0055A27D 8907 mov dword ptr ds:[edi],eax
0055A27F 83C7 05 add edi,5
0055A282 88D8 mov al,bl
0055A284 ^ E2 D9 loopd short 123.0055A25F F8到这里
0055A286 8DBE 00801500 lea edi,dword ptr ds:[esi+158000] F4,F8
0055A28C 8B07 mov eax,dword ptr ds:[edi]
0055A28E 09C0 or eax,eax
0055A290 74 45 je short 123.0055A2D7
*部分省略*
0055A2BF 55 push ebp
0055A2C0 FF96 58AE1500 call dword ptr ds:[esi+15AE58]
0055A2C6 09C0 or eax,eax
0055A2C8 74 07 je short 123.0055A2D1
0055A2CA 8903 mov dword ptr ds:[ebx],eax
0055A2CC 83C3 04 add ebx,4
0055A2CF ^ EB D8 jmp short 123.0055A2A9 一直F8 到这里
0055A2D1 FF96 5CAE1500 call dword ptr ds:[esi+15AE5C]
0055A2D7 61 popad 这里出口标志,直点这行,F4,F8
0055A2D8 - E9 276EEAFF jmp 123.00401104 跨区段跳
0055A2DD 0000 add byte ptr ds:[eax],al
00401104 68 6C1B4000 push 123.00401B6C 跳到这里,这应该是真正的程序入口地址了吧
00401109 E8 EEFFFFFF call 123.004010FC 0040110E 0000 add byte ptr ds:[eax],al
00401110 0000 add byte ptr ds:[eax],al
00401112 0000 add byte ptr ds:[eax],al
00401114 3000 xor byte ptr ds:[eax],al
在00401104这一行点右键,再点“脱壳在当前调试的进程”用OD插件脱壳,然后其它的都默认,直接点脱壳,另起一个名字比如我起的456保存就行了。
这一次脱完壳后赶快用PEID查一下脱了没有,显示Microsoft Visual Basic 5.0 / 6.0,呵呵,脱掉了,欣喜之余一运行,提示这个程序不是有效的Win32应用程序,郁闷啊。看来是PE头被破坏,用Imprec来修复试试。
打开Imprec,点获取系统中的进程下面的下拉列表,找到123.exe,(此时OD没关闭,可以直接找到进程,如果关了,要先运行123.exe.)
在OEP后面的输入框里填上1104,就是我们刚才脱壳的入口地址,但00400000是基址,不用填。然后点“自动搜索IAT”,会弹出发现某些数据对话框,点确定就可以了。再点下面的“获取输入表”会自动获得不用操作。最后点“修复抓取文件”,选择我们刚脱了壳的456.exe文件打开就可以了。会自动生成一个456_.exe的文件,这个就是修复好了的,运行还真的可以了。
顺便说一下,第一次写破文,写得不清楚,望各位前辈多多指教和多多原谅。还有这个软件是VB写的,好像不怎么好破,有次数限制,有功能限制,用OD载入又搜索不到字串,望各位前辈指教指教,不甚感激。
赞赏
他的文章
看原图
赞赏
雪币:
留言: