BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #37447同步于 2010/1/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

【原创】手工脱PECompact 2.x壳

jmpesp
2010/1/17镜像同步13 回复
这几天感冒得厉害,夜里咳得不停,整天晕头转向的,今天却又蛋疼,看软开版貌似也寂静,就发个贴,保佑自己感冒早点好:) 本文没啥技术含量,就是突然无聊了写点什么的,高手略过。。。脱壳我是大菜中的大菜,所以以下要是我写的有些让你们不明白的,也不要问我,因为我也不知道为虾米要这样,哈哈~~废话少说 开刀。。。系统版本是 Windows XP SP3 首先说下软件,软件叫 “文件批量改名工具 V3.0 Beta”,下载地址可以在这边:http://www.skycn.com/soft/15449.html 先用PEid查壳显示如下图: 用OD载入该软件,停留在入口处: 00401000 > B8 440F5500 mov eax, 00550F44 00401005 50 push eax 00401006 64:FF35 0000000>push dword ptr fs:[0] 0040100D 64:8925 0000000>mov fs:[0], esp 00401014 33C0 xor eax, eax 00401016 8908 mov [eax], ecx 00401018 50 push eax 从 00401014 33C0 xor eax, eax 00401016 8908 mov [eax], ecx 这两句可以知道,会触发一个异常,所以上面的S.E.H.的安装就显得非常重要了。 所以直接在上面安装的结构化异常处理函数地址0x00550f44下个断点,F9运行后会停留在以下地方: 00550F44 B8 0EFD54F0 mov eax, F054FD0E 00550F49 8D88 59120010 lea ecx, [eax+10001259] 00550F4F 8941 01 mov [ecx+1], eax 00550F52 8B5424 04 mov edx, [esp+4] 00550F56 8B52 0C mov edx, [edx+C] 00550F59 C602 E9 mov byte ptr [edx], 0E9 00550F5C 83C2 05 add edx, 5 00550F5F 2BCA sub ecx, edx 00550F61 894A FC mov [edx-4], ecx 00550F64 33C0 xor eax, eax 00550F66 C3 retn 单步跟踪下去,这样到retn后会返回到这边: 7C9232A8 64:8B25 0000000>mov esp, fs:[0] 7C9232AF 64:8F05 0000000>pop dword ptr fs:[0] 7C9232B6 8BE5 mov esp, ebp 7C9232B8 5D pop ebp 7C9232B9 C2 1400 retn 14 很明显这个是系统dll的地址位置。我们继续单步下去,retn后来到这边: 7C9232A8 64:8B25 0000000>mov esp, fs:[0] 7C9232AF 64:8F05 0000000>pop dword ptr fs:[0] 7C9232B6 8BE5 mov esp, ebp 7C9232B8 5D pop ebp 7C9232B9 C2 1400 retn 14 继续单步,retn后来到这边: 7C92327A 5F pop edi ; ntdll.7C930228 7C92327B 5E pop esi 7C92327C 5B pop ebx 7C92327D C2 1400 retn 14 过程依然继续,retn后来到这边: 7C94AA0F F605 FAE3997C 8>test byte ptr [7C99E3FA], 80 7C94AA16 8BF8 mov edi, eax 7C94AA18 0F85 0B570200 jnz 7C970129 7C94AA1E 395D 08 cmp [ebp+8], ebx 7C94AA21 0F84 10570200 je 7C970137 7C94AA27 8BC7 mov eax, edi 7C94AA29 33C9 xor ecx, ecx 7C94AA2B 2BC1 sub eax, ecx 7C94AA2D ^ 0F85 E2F8FFFF jnz 7C94A315 7C94AA33 F646 04 01 test byte ptr [esi+4], 1 7C94AA37 0F85 44570200 jnz 7C970181 7C94AA3D C645 FF 01 mov byte ptr [ebp-1], 1 7C94AA41 5F pop edi 7C94AA42 5B pop ebx 7C94AA43 8A45 FF mov al, [ebp-1] 7C94AA46 5E pop esi 7C94AA47 C9 leave 7C94AA48 C2 0800 retn 8 废话不多说,继续来到这边: 7C92E48A 0AC0 or al, al 7C92E48C 74 0C je short 7C92E49A 7C92E48E 5B pop ebx 7C92E48F 59 pop ecx 7C92E490 6A 00 push 0 7C92E492 51 push ecx 7C92E493 E8 C6EBFFFF call ZwContinue 7C92E498 EB 0B jmp short 7C92E4A5 F7进入ZwContinue函数内部,来到这边: 7C92D05E > B8 20000000 mov eax, 20 7C92D063 BA 0003FE7F mov edx, 7FFE0300 7C92D068 FF12 call [edx] 7C92D06A C2 0800 retn 8 F7步入 call [edx]来到这边: 7C92E510 > 8BD4 mov edx, esp 7C92E512 0F34 sysenter 7C92E514 > C3 retn 呃,快进入内核了,OD是用户态,调试不了内核,所以单步到sysenter后会来到这边: 00550F67 B8 0EFD54F0 mov eax, F054FD0E 00550F6C 64:8F05 0000000>pop dword ptr fs:[0] 00550F73 83C4 04 add esp, 4 00550F76 55 push ebp 00550F77 53 push ebx 00550F78 51 push ecx 00550F79 57 push edi 00550F7A 56 push esi 00550F7B 52 push edx 00550F7C 8D98 12120010 lea ebx, [eax+10001212] 00550F82 8B53 18 mov edx, [ebx+18] 00550F85 52 push edx 00550F86 8BE8 mov ebp, eax 00550F88 6A 40 push 40 00550F8A 68 00100000 push 1000 00550F8F FF73 04 push dword ptr [ebx+4] 00550F92 6A 00 push 0 00550F94 8B4B 10 mov ecx, [ebx+10] 00550F97 03CA add ecx, edx 00550F99 8B01 mov eax, [ecx] 呃 这边就是关键代码了,从上面的代码往下看,会看到下面的某个地方有这么条指令: 00550FF0 /EB 0C jmp short 00550FFE 00550FF2 |03CA add ecx, edx 00550FF4 |68 00800000 push 8000 00550FF9 |6A 00 push 0 00550FFB |57 push edi 00550FFC |FF11 call [ecx] 00550FFE \8BC6 mov eax, esi 00551000 5A pop edx 00551001 5E pop esi 00551002 5F pop edi 00551003 59 pop ecx 00551004 5B pop ebx 00551005 5D pop ebp 00551006 FFE0 jmp eax 这条jmp eax可是关键跳,在此打断点,F9运行到断点,然后单步一下就直接奔到软件的真正入口处了! 004C9A58 55 push ebp 004C9A59 8BEC mov ebp, esp 004C9A5B 83C4 F0 add esp, -10 004C9A5E B8 D47F4C00 mov eax, 004C7FD4 004C9A63 E8 C8CCF3FF call 00406730 004C9A68 A1 A8CA4C00 mov eax, [4CCAA8] 004C9A6D 8B00 mov eax, [eax] Ok,dump下来,脱壳完成,再次用PEid查壳显示如下: 运行下软件,没啥问题,看来脱壳成功! 总结一下吧: 这个是个压缩壳,没有反调试保护,如果是保护壳的话,那就难脱了。。。后面之所以要单步在系统dll处,是因为我这边的OD有时候好像有点Bug,不太好使,所以我就狠下心慢慢跟踪下去了。。。 该贴没啥技术含量,大牛就别看了,我也是无聊加蛋疼 或者说心血来潮才突然写写的 哈哈 保佑我感冒早点好哇~~~其实上面的好多过程我也不懂啊 就是在这边装逼啦 哈哈 大家笑纳 轻拍[em22]
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
coolwc机器人#1 · 2010/1/17
帮顶
FadeToBlack机器人#2 · 2010/1/17
赞! 破解搞过一段,只是f8 f7的太枯燥了,不如写代码有趣,也就放下了。 【 在 jmpesp (民国沉思者...) 的大作中提到: 】 : 这几天感冒得厉害,夜里咳得不停,整天晕头转向的,今天却又蛋疼,看软开版貌似也寂静,就发个贴,保佑自己感冒早点好:) : 本文没啥技术含量,就是突然无聊了写点什么的,高手略过。。。脱壳我是大菜中的大菜,所以以下要是我写的有些让你们不明白的,也不要问我,因为我也不知道为虾米要这样,哈哈~~废话少说 开刀。。。系统版本是 Windows XP SP3 : 首先说下软件,软件叫 “文件批量改名工具 V3.0 Beta”,下载地址可以在这边:http://www.skycn.com/soft/15449.html : ...................
chenjia1984机器人#3 · 2010/1/17
去看雪吧,那边能学到很多知识
derkaiser机器人#4 · 2010/1/17
羡慕LZ这种会脱壳的大菜。。。小菜之中的小菜路过 【 在 jmpesp (民国沉思者...) 的大作中提到: 】 : 这几天感冒得厉害,夜里咳得不停,整天晕头转向的,今天却又蛋疼,看软开版貌似也 : 寂静,就发个贴,保佑自己感冒早点好:) : 本文没啥技术含量,就是突然无聊了写点什么的,高手略过。。。脱壳我是大菜中的大 : 菜,所以以下要是我写的有些让你们不明白的,也不要问我,因为我也不知道为虾米要这 : 样,哈哈~~废话少说 开刀。。。系统版本是 Windows XP SP3 : 首先说下软件,软件叫 “文件批量改名工具 V3.0 Beta”,下载地址可以在这边 :http://www.skycn.com/soft/15449.html : ...................
Vampire机器人#5 · 2010/1/18
原来翻黑客防线的时候看那上面各种脱壳破解调试跟踪 看不懂,但是好像很high啊 这个是不是先得有一定的windows api的基础?
FadeToBlack机器人#6 · 2010/1/18
破解的话至少得知道windows程序的一般流程是什么样的 脱壳需要更多的是对于PE文件和汇编代码的分析 可以看看罗云彬的那本书,现在出第三版了 【 在 Vampire ({吸}{血}{鬼}) 的大作中提到: 】 : 原来翻黑客防线的时候看那上面各种脱壳破解调试跟踪 : 看不懂,但是好像很high啊 : 这个是不是先得有一定的windows api的基础? : ...................
flyingkisser机器人#7 · 2010/1/18
友情路过帮顶。。。 【 在 jmpesp (民国沉思者...) 的大作中提到: 】 : 这几天感冒得厉害,夜里咳得不停,整天晕头转向的,今天却又蛋疼,看软开版貌似也寂静,就发个贴,保佑自己感冒早点好:) : 本文没啥技术含量,就是突然无聊了写点什么的,高手略过。。。脱壳我是大菜中的大菜,所以以下要是我写的有些让你们不明白的,也不要问我,因为我也不知道为虾米要这样,哈哈~~废话少说 开刀。。。系统版本是 Windows XP SP3 : 首先说下软件,软件叫 “文件批量改名工具 V3.0 Beta”,下载地址可以在这边:http://www.skycn.com/soft/15449.html : ...................
coolwc机器人#8 · 2010/1/18
何不给我们展示一下神的世界。。。 【 在 flyingkisser 的大作中提到: 】 : 友情路过帮顶。。。
flyingkisser机器人#9 · 2010/1/18
引用炮儿爷语录:好的! 顺便教育下一代不要再做IT民工。。。 【 在 coolwc (小包) 的大作中提到: 】 : 何不给我们展示一下神的世界。。。