菜鸟试脱Hmimys-Packer v1.0
【文章标题】: 菜鸟试脱Hmimys-Packer v1.0【文章作者】: 冷月孤心
【作者邮箱】: 55825450@qq.com
【作者主页】: 喜欢上吾爱破解 UNPACK 更喜欢小生我怕怕的破解练习
【作者QQ号】: 55825450
【软件名称】: 记事本
【软件大小】: 47.8K
【下载地址】: 自己搜索下载
【加壳方式】: Hmimys-Packer v1.0
【保护方式】: Hmimys-Packer v1.0压缩壳
【使用工具】: OllyDbg ImportREC LordPE
【软件介绍】: 拿记事本加壳自己试着脱
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
俺菜鸟,刚刚学了单步跟踪法,就用单步来脱,不对的地方还请大侠指教,俺会很快改正的。
0101ADE0 >E8 BA000000 CALL 0101AE9F //载入后是一个CALL,F7进入
0101ADE5 0300 ADD EAX,DWORD PTR DS:
0101ADE7 0000 ADD BYTE PTR DS:,AL
0101ADE9 0030 ADD BYTE PTR DS:,DH
0101ADEB 0100 ADD DWORD PTR DS:,EAX
0101ADED 0010 ADD BYTE PTR DS:,DL
0101ADEF 0001 ADD BYTE PTR DS:,AL
F7进入后来到这里F8单步向下走
0101AE9F 5E POP ESI ; NOTEPAD.0101ADE5
0101AEA0 83C6 64 ADD ESI,64
0101AEA3 AD LODS DWORD PTR DS:
0101AEA4 50 PUSH EAX
0101AEA5 AD LODS DWORD PTR DS:
0101AEA6 50 PUSH EAX
0101AEA7 83EE 6C SUB ESI,6C
0101AEAA AD LODS DWORD PTR DS:
0101AEAB 50 PUSH EAX
0101AEAC AD LODS DWORD PTR DS:
0101AEAD 50 PUSH EAX
0101AEAE AD LODS DWORD PTR DS:
0101AEAF 50 PUSH EAX
0101AEB0 AD LODS DWORD PTR DS:
0101AEB1 50 PUSH EAX
0101AEB2 AD LODS DWORD PTR DS:
0101AEB3 50 PUSH EAX
0101AEB4 E8 E7070000 CALL 0101B6A0
0101AEB9 AD LODS DWORD PTR DS:
0101AEBA 8BDE MOV EBX,ESI
0101AEBC 8BF0 MOV ESI,EAX
0101AEBE 83C3 44 ADD EBX,44
0101AEC1 AD LODS DWORD PTR DS:
0101AEC2 85C0 TEST EAX,EAX
0101AEC4 74 32 JE SHORT 0101AEF8
0101AEC6 8BF8 MOV EDI,EAX
0101AEC8 56 PUSH ESI
0101AEC9 FF13 CALL DWORD PTR DS:
0101AECB 8BE8 MOV EBP,EAX
0101AECD AC LODS BYTE PTR DS:
0101AECE 84C0 TEST AL,AL
0101AED0^ 75 FB JNZ SHORT 0101AECD 此处JNZ是向上跳的,不能让它往回走,在下句F4
0101AED2 AC LODS BYTE PTR DS: 这里F4后继续F8向下走
0101AED3 84C0 TEST AL,AL
0101AED5^ 74 EA JE SHORT 0101AEC1
0101AED7 4E DEC ESI
0101AED8 AD LODS DWORD PTR DS:
0101AED9 A9 00000080 TEST EAX,80000000
0101AEDE 75 0B JNZ SHORT 0101AEEB
0101AEE0 83EE 04 SUB ESI,4
0101AEE3 56 PUSH ESI
0101AEE4 55 PUSH EBP
0101AEE5 FF53 04 CALL DWORD PTR DS:
0101AEE8 AB STOS DWORD PTR ES:
0101AEE9^ EB E2 JMP SHORT 0101AECD 此处JMP向上跳转的,根据单步的原理不能叫它向上走,但是在下面F4下断程序直接运行了
0101AEEB 25 FFFFFF7F AND EAX,7FFFFFFF 从这里到下面那个JMP都不能F4下断
0101AEF0 50 PUSH EAX
0101AEF1 55 PUSH EBP
0101AEF2 FF53 04 CALL DWORD PTR DS:
0101AEF5 AB STOS DWORD PTR ES:
0101AEF6^ EB DA JMP SHORT 0101AED2 此处JMP也向上跳转的,根据单步的原理不能叫它向上走
0101AEF8 83EB 44 SUB EBX,44 在这里F4下断后继续F8向下走
0101AEFB 8BF3 MOV ESI,EBX
0101AEFD AD LODS DWORD PTR DS:
0101AEFE 50 PUSH EAX
0101AEFF C3 RETN 跟踪到这里发现是一个大跨段跳转,应该跟踪过去就是程序OEP了
OEP就是这里
0100739D 6A DB 6A ;CHAR 'j'
0100739E 70 DB 70 ;CHAR 'p'
0100739F 68 DB 68 ;CHAR 'h'
010073A0 98 DB 98
010073A1 18 DB 18
010073A2 00 DB 00
010073A3 01 DB 01
010073A4 E8 DB E8
010073A5 BF DB BF
010073A6 01 DB 01
010073A7 00 DB 00
010073A8 00 DB 00
010073A9 33 DB 33 ;CHAR '3'
010073AA DB DB DB
010073AB 53 DB 53 ;CHAR 'S'
010073AC 8B DB 8B
010073AD 3D DB 3D ;CHAR '='
010073AE CC DB CC
010073AF 10 DB 10
010073B0 00 DB 00
010073B1 01 DB 01
010073B2 FF DB FF
010073B3 D7 DB D7
010073B4 66 DB 66 ;CHAR 'f'
010073B5 81 DB 81
010073B6 38 DB 38 ;CHAR '8'
010073B7 4D DB 4D ;CHAR 'M'
010073B8 5A DB 5A ;CHAR 'Z'
从模块删除分析是这样的
0100739D 6A 70 PUSH 70
0100739F 68 98180001 PUSH 01001898
010073A4 E8 BF010000 CALL 01007568
010073A9 33DB XOR EBX,EBX
010073AB 53 PUSH EBX
010073AC 8B3D CC100001 MOV EDI,DWORD PTR DS: ; kernel32.7C80B731
010073B2 FFD7 CALL EDI
010073B4 66:8138 4D5A CMP WORD PTR DS:,5A4D
010073B9 75 1F JNZ SHORT 010073DA
010073BB 8B48 3C MOV ECX,DWORD PTR DS:
010073BE 03C8 ADD ECX,EAX
010073C0 8139 50450000 CMP DWORD PTR DS:,4550
010073C6 75 12 JNZ SHORT 010073DA
010073C8 0FB741 18 MOVZX EAX,WORD PTR DS:
010073CC 3D 0B010000 CMP EAX,10B
在0100739D用LordPE修正映像大小,然后完整转存,转存后程序无法打开,用ImportREC修复输入表
--------------------------------------------------------------------------------
2009年09月13日 15:22:37 感谢小生我怕怕的破解练习全集,从中我学了单步跟踪,算是一份作业吧,完成的不是很好。 晕,老大也来了啊 老大,你怎么玩破解了哦? 呵呵。单步跟踪法还是很简单的。。。支持楼主。。加油 本帖最后由 转身 于 2009-9-13 17:40 编辑
最后修复那一步不会哦,楼主说的练习,是在http://www.52pojie.cn/viewthread.php?tid=11642&extra=&page=1 这里么
页:
[1]