首页
社区
课程
招聘
[旧帖] [原创]菜鸟的第一个破解文 0.00雪花
发表于: 2008-2-27 23:40 6925

[旧帖] [原创]菜鸟的第一个破解文 0.00雪花

2008-2-27 23:40
6925
【文章标题】: 菜鸟的第一个破解文
【文章作者】: xiaosan
【软件名称】: A-one Zune Video Converter
【软件大小】: 主应用程序183 KB 
【下载地址】: 自己搜索下载
【加壳方式】: 什么也没有
【编写语言】: Microsoft Visual C++ 6.0
【使用工具】: PEid v0.94 .OD.LD.IR
【操作平台】: Windows XP 
【软件介绍】: 媒体转换工具
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教! 只提供研究学习,请勿做非法用途。
--------------------------------------------------------------------------------
【详细过程】
     安装完毕后,用PEid,查壳。显示为“什么也没有”,用“PEid的扩展,发现该文件已被加密”
  不知道是什么壳,也不能用专用脱壳工具了,只好手动脱壳试试。
      用OD载入,进入后,代码显示如下:
  005F6536 >  9C              pushfd                                EAX 00000000
  005F6537    60              pushad                                ECX 0012FFB0                                       
  005F6538    E8 00000000     call A-one_Zu.005F653D                EDX 7C92EB94 ntdll.KiFastSystemCallRet                                        
  005F653D    5D              pop ebp                               EBX 7FFD5000                                         
  005F653E    83ED 07         sub ebp,7                             ESP 0012FFC4                                        
  005F6541    8D8D 26FCFFFF   lea ecx,dword ptr ss:[ebp-3DA]        EBP 0012FFF0                                          
  005F6547    8039 01         cmp byte ptr ds:[ecx],1               ESI 05940000                                       
  005F654A    0F84 42020000   je A-one_Zu.005F6792                                                        
  005F6550    C601 01         mov byte ptr ds:[ecx],1                                                       
  005F6553    8BC5            mov eax,ebp                                                                                                                                    
  005F6555    2B85 BAFBFFFF   sub eax,dword ptr ss:[ebp-446]                                                                                            
  005F655B    8985 BAFBFFFF   mov dword ptr ss:[ebp-446],eax                                                
  005F6561    0185 EAFBFFFF   add dword ptr ss:[ebp-416],eax                                                                                                                                                 
  005F6567    8DB5 2EFCFFFF   lea esi,dword ptr ss:[ebp-3D2]                                                                  
  005F656D    0106            add dword ptr ds:[esi],eax                                                                                                        
  
   试着用ESP定律,脱掉此壳。F8单步3次。ESP:0012FFAO,在数据窗口中跟随,数值窗口显示:00650076
  然后对此下硬件访问“字”断点,F9运行:到这里
  005F67A7    9D              popfd
  005F67A8  - E9 7D87FFFF     jmp A-one_Zu.005EEF2A
  005F67AD    8BB5 B2FBFFFF   mov esi,dword ptr ss:[ebp-44E]
  005F67B3    0BF6            or esi,esi
  005F67B5    0F84 97000000   je A-one_Zu.005F6852
  005F67BB    8B95 BAFBFFFF   mov edx,dword ptr ss:[ebp-446]
  005F67C1    03F2            add esi,edx
  005F67C3    833E 00         cmp dword ptr ds:[esi],0
  005F67C6    75 0E           jnz short A-one_Zu.005F67D6
  005F67C8    837E 04 00      cmp dword ptr ds:[esi+4],0
  005F67CC    75 08           jnz short A-one_Zu.005F67D6
  005F67CE    837E 08 00      cmp dword ptr ds:[esi+8],0
  005F67D2    75 02           jnz short A-one_Zu.005F67D6
  005F67D4    EB 7A           jmp short A-one_Zu.005F6850
  /*****记得要删除硬件断点哦********/
  继续F8单步两次,跳转到这里:
  005EEF2A    60              pushad
  005EEF2B    E8 00000000     call A-one_Zu.005EEF30
  005EEF30    5B              pop ebx
  005EEF31    8D5B C6         lea ebx,dword ptr ds:[ebx-3A]
  005EEF34    011B            add dword ptr ds:[ebx],ebx
  005EEF36    8B13            mov edx,dword ptr ds:[ebx]
  005EEF38    8D73 14         lea esi,dword ptr ds:[ebx+14]
  005EEF3B    6A 08           push 8
  005EEF3D    59              pop ecx
  005EEF3E    0116            add dword ptr ds:[esi],edx
  005EEF40    AD              lods dword ptr ds:[esi]
  005EEF41    49              dec ecx
  005EEF42  ^ 75 FA           jnz short A-one_Zu.005EEF3E
  之后,结合F8,F4来到了这:
  0041D324    55              push ebp//这里就是OEP了
  0041D325    8BEC            mov ebp,esp
  0041D327    6A FF           push -1
  0041D329    68 40594200     push A-one_Zu.00425940
  0041D32E    68 B0D44100     push A-one_Zu.0041D4B0                           ; jmp to msvcrt._except_handler3; SE handler installation
  0041D333    64:A1 00000000  mov eax,dword ptr fs:[0]
  0041D339    50              push eax
  0041D33A    64:8925 0000000>mov dword ptr fs:[0],esp
  0041D341    83EC 68         sub esp,68
  
  进行脱壳后,首先用LordPE 重建一次,然后用ImportREC对重建后的程序进行修复。修复后,程序可正常运行。
  再用PEid 查壳,发现是VC++写的软件。
  进入软件,试注册。发现“注册码不正确”错误提示。呵呵,
  用OD载入脱壳后的程序。
  
  查找“超级字符串”,找到后,就来到了这里:
  004079EC    .  5E            POP ESI
  004079ED    >  B9 98C74200   MOV ECX,1D32400_.0042C798
  004079F2    .  E8 03560100   CALL <JMP.&mfc42.#6282_?TrimLeft@CString>
  004079F7    .  B9 98C74200   MOV ECX,1D32400_.0042C798
  004079FC    .  E8 F3550100   CALL <JMP.&mfc42.#6283_?TrimRight@CStrin>
  00407A01    .  68 80000000   PUSH 80
  00407A06    .  B9 98C74200   MOV ECX,1D32400_.0042C798
  00407A0B    .  E8 04540100   CALL <JMP.&mfc42.#2915_?GetBuffer@CStrin>
  00407A10    .  50            PUSH EAX
  00407A11    .  E8 1AF1FFFF   CALL 1D32400_.00406B30     
  00407A16    .  83C4 04       ADD ESP,4
  00407A19    .  83F8 01       CMP EAX,1
  00407A1C    .  75 31         JNZ SHORT 1D32400_.00407A4F      ///此跳转自然是关键跳转了。
  00407A1E    .  6A 40         PUSH 40
  00407A20    .  68 CC854200   PUSH 1D32400_.004285CC                   ;  注册成功
  00407A25    .  68 A4854200   PUSH 1D32400_.004285A4                   ;         感谢注册
  00407A2A    .  8BCB          MOV ECX,EBX
  00407A2C    .  E8 CF550100   CALL <JMP.&mfc42.#4224_?MessageBoxA@CWnd>
  00407A31    .  8B15 28C74200 MOV EDX,DWORD PTR DS:[42C728]
  00407A37    .  A1 20C54200   MOV EAX,DWORD PTR DS:[42C520]
  00407A3C    .  52            PUSH EDX
  00407A3D    .  50            PUSH EAX
  00407A3E    .  C705 A4C74200>MOV DWORD PTR DS:[42C7A4],1
  00407A48    .  68 9C854200   PUSH 1D32400_.0042859C                   ;  %s v%s
  00407A4D    .  EB 2F         JMP SHORT 1D32400_.00407A7E
  00407A4F    >  6A 10         PUSH 10
  00407A51    .  68 8C854200   PUSH 1D32400_.0042858C                   ;  注册失败
  00407A56    .  68 64854200   PUSH 1D32400_.00428564                   ;        注册码不正确
  00407A5B    .  8BCB          MOV ECX,EBX
  00407A5D    .  E8 9E550100   CALL <JMP.&mfc42.#4224_?MessageBoxA@CWnd>
  
  分析,此软件非明码比较,可知,关键跳转上的那个call,就是关键call了,跟进,发现是对所输入的注册码进行一连串的
  处理,我是看不懂。呵呵,只好爆破了。。
  发现,关键call后,不是紧接着,关键跳,而是由
  00407A16    .  83C4 04       ADD ESP,4///这个可能是用来,平衡栈的吧。
  00407A19    .  83F8 01       CMP EAX,1//这个是关键 了,由EAX的值决定JNZ。。只好改EAX的值了
  跟进关建call直接来到:
  00406C2B   |.  5F            POP EDI
  00406C2C   |.  0F94C1        SETE CL
  00406C2F   |.  5E            POP ESI
  00406C30       8BC1          MOV EAX,ECX
  00406C32       5B            POP EBX
  00406C33       81C4 00030000 ADD ESP,300
  00406C39   |.  C3            RETN
  将其改为:
  00406C2F  |.  5E            POP ESI
  00406C30  |.  8BC1          MOV EAX,ECX
  00406C32  |.  5B            POP EBX
  00406C33  |.  81C4 00030000 ADD ESP,300
  00406C39  |.  C3            RETN
  00406C3A  |>  5F            POP EDI
  00406C3B  |.  5E            POP ESI
  00406C3C  |.  B8 01000000   MOV EAX,1
  00406C41  |.  90            NOP
  00406C42  |.  90            NOP
  00406C43  |.  5B            POP EBX
  00406C44  |.  81C4 00030000 ADD ESP,300
  00406C4A  \.  C3            RETN
  保存修改,随便输入几个数字。
  软件提示"感谢注册“
  试试转换一下。
  呵呵,能够完全转换,未注册的只能转换50%。。
  看来成功了。。

---------------------------------------------------------------------------------------------------------------
版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2008年02月27日 23:40:45

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (21)
雪    币: 146
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
支持一下,算法分析出来就可以加精了.
2008-2-27 23:50
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
呵呵,现在只能看得懂简单的算法。正在学习中。
2008-2-28 01:15
0
雪    币: 334
活跃值: (47)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习了
有空拿来练习一下
2008-2-28 08:10
0
雪    币: 164
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
越来越喜欢爆破了
2008-2-28 11:49
0
雪    币: 321
活跃值: (271)
能力值: ( LV13,RANK:1050 )
在线值:
发帖
回帖
粉丝
6
呵呵,精彩!!
2008-2-28 12:21
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
谢谢,谢谢各位鼓励。。我会继续努力的。
2008-2-28 22:34
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
8
分析的很好,支持下!
2008-2-28 22:42
0
雪    币: 434
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
应该把算法写出来
2008-2-28 22:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学习中。。。
2008-2-28 22:53
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
自己学习中…………
2008-2-28 23:44
0
雪    币: 2256
活跃值: (941)
能力值: (RANK:2210 )
在线值:
发帖
回帖
粉丝
12
简单的分析下算法
先从算法的流程开始看看,呵呵!慢慢再细致的分析
2008-2-29 10:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
脱壳+破解,收下了,谢谢!~~
2008-3-1 14:17
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
新人学习一下。
2008-3-1 18:02
0
雪    币: 740
活跃值: (952)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
15
支持一下..
2008-3-2 10:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
新人,顶下!!!!!!!
2008-3-2 14:10
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
恭喜LZ,你入门了,我脱过一简单的壳,想反编译,正努力中。
2008-3-2 20:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
学习中,什么时候能成为大师啊?郁闷!!
2008-3-3 09:12
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
问楼主个问题
用“PEid的扩展,发现该文件已被加密”
这个用的什么功能查出来的
还有楼主逆向的是哪个版本的
2008-3-4 14:14
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
v 0.94 在右下角,有“扩展”
2008-3-4 15:24
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
21
菜鸟学习一下,回去好好试试
2008-3-4 23:24
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
越来越喜欢爆破了
2008-3-5 00:10
0
游客
登录 | 注册 方可回帖
返回
//