冷月孤心 发表于 2009-9-13 15:34

菜鸟试脱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 15:41

感谢小生我怕怕的破解练习全集,从中我学了单步跟踪,算是一份作业吧,完成的不是很好。

llight 发表于 2009-9-13 15:54

晕,老大也来了啊

aref 发表于 2009-9-13 16:50

老大,你怎么玩破解了哦?

qnbs1 发表于 2009-9-13 16:55

呵呵。单步跟踪法还是很简单的。。。支持楼主。。加油

转身 发表于 2009-9-13 17:34

本帖最后由 转身 于 2009-9-13 17:40 编辑

最后修复那一步不会哦,楼主说的练习,是在http://www.52pojie.cn/viewthread.php?tid=11642&extra=&page=1 这里么
页: [1]
查看完整版本: 菜鸟试脱Hmimys-Packer v1.0