首页
社区
课程
招聘
[旧帖] [原创][邀请码已发]菜鸟新人第一次成功放炮,谢谢大家提供的火药和引信!求邀请码鼓励 0.00雪花
发表于: 2010-4-28 12:34 3275

[旧帖] [原创][邀请码已发]菜鸟新人第一次成功放炮,谢谢大家提供的火药和引信!求邀请码鼓励 0.00雪花

2010-4-28 12:34
3275
菜鸟新人第一次成功放炮,谢谢大家提供的火药和引信!求邀请码鼓励

【文章标题】: 菜鸟新人第一次成功放炮,谢谢大家提供的火药和引信!
【文章作者】: zsdtx
【作者邮箱】:zsdxt@gmail.com
【时    间】: 2010-04-29,16:50:13
【软件名称】: 某文件管理软件
【软件大小】:320k
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: 机器码+注册码+Keyfile
【编写语言】: Microsoft Visual C++ 6.0
【使用工具】: OD+PEiD
【操作平台】: Windows XP
【作者声明】: 只是感兴趣,没有其他目的,敬请软件作者原谅。
--------------------------------------------------------------------------------

      通过学习看雪论坛的知识,以及一段时间的摸索,渐渐对破解有了一些认识,最近终于成功爆破了某软件,现将爆破过程简介如下,希望与大家共同学习、进步。

【详细过程】

1.  PeiD扫描提示VC编写、无壳,该软件无需安装版,运行后其界面如下,点击注册后提示重启验证:

           
                        

2.  OD载入并查找ASCII字符,可以找到许多提示信息,寻找关键点在汇编窗口中跟随:



3.  第一步  破解试用期限制:
    (1)经过反复验证后发现注册信息、试用信息记录同时保存处于注册表和File.ini文件之中:因为是重启验证,故推测其注册信息隐藏于*.reg 、*.dat或*.ini之类的文件之中,逐一分析。利用机器码或假注册码查找注册表很快找到注册信息,如下图:



    (2)将其删除后第一次重新运行程序显示试用期15天,但再次运行后显示试用期仍是0天,说明其试用期的信息仍隐藏于其他地方,可能是*.dat、*.dll或*.ini之类的文件,但是寻找程序所在的目录、系统根目录均未发现可疑文件。OD载入,利用bp RegOpenKeyExA、bp GetFileTime、bp CreateFileA等下断,单步运行,很快发现汇编窗、寄存器、堆栈窗均先后有可疑信息“File.ini”,继续单步运行发现如下信息: ASCII "D:\Recycler\AEEDCB97-QS21-47B-AA9F-QA237D2D05RGF\File.ini",在D盘中找到File.ini文件,同时删除该文件和注册表相应项后,恢复15天的试用期,至此破解试用期限制成功!如此重复即可每15天无限次延长软件试用期,但较为麻烦,故寻找第二种破解方法。

    (3)根据重启验证和试用时间限制的特点找到3个关键词:regserial(注册系列号)、File.ini(注册信息保存文件)和expired(提示软件过期),因为前述软件的注册和试用信息同时保存于注册表和File.ini文件中,故选择expired作为关键词较为合理。OD载入后在ASCII字符串中很快找到“expired”关键词,在其对应代码下断点。

    (4)OD载入

00415023 >/$  55            push    ebp                              ;  (initial cpu selection)
00415024  |.  8BEC          mov     ebp, esp
00415026  |.  6A FF         push    -1
00415028  |.  68 38674300   push    00436738
0041502D  |.  68 4C914100   push    0041914C                         ;  SE 处理程序安装
00415032  |.  64:A1 0000000>mov     eax, dword ptr fs:[0]
00415038  |.  50            push    eax
00415039  |.  64:8925 00000>mov     dword ptr fs:[0], esp
00415040  |.  83EC 58       sub     esp, 58
00415043  |.  53            push    ebx
00415044  |.  56            push    esi
00415045  |.  57            push    edi
00415046  |.  8965 E8       mov     dword ptr [ebp-18], esp
00415049  |.  FF15 44324300 call    dword ptr [<&KERNEL32.GetVersion>;  kernel32.GetVersion
¨¨¨¨¨¨
    (5)在ASCII字符串表查找关键词“expired”,并在汇编窗口跟随下断点:
00409D68  |.  8D4424 0C     lea     eax, dword ptr [esp+C]           ; |
00409D6C  |.  52            push    edx                              ; |Buffer
00409D6D  |.  50            push    eax                              ; |pValueType
00409D6E  |.  6A 00         push    0                                ; |Reserved = NULL
00409D70  |.  68 88F94300   push    0043F988                         ; |expired               验证是否过期的关键点,在此下断点
00409D75  |.  51            push    ecx                              ; |hKey
00409D76  |.  C74424 20 010>mov     dword ptr [esp+20], 1            ; |
00409D7E  |.  C64424 1B 00  mov     byte ptr [esp+1B], 0             ; |
00409D83  |.  FF15 10304300 call    dword ptr [<&ADVAPI32.RegQueryVa>; \RegQueryValueExA
00409D89  |.  85C0          test    eax, eax
00409D8B  |.  74 11         je      short 00409D9E
¨¨¨¨¨¨
    (6)F9运行,程序被断下,F8单步运行:
7C92E4DF  |.  8B0424        mov     eax, dword ptr [esp]
7C92E4E2  |.  8BE5          mov     esp, ebp
7C92E4E4  |.  5D            pop     ebp
7C92E4E5  \.  C3            retn
¨¨¨¨¨¨多次F8单步运行后至此
00408DCE   .  C68424 940300>mov     byte ptr [esp+394], 1
00408DD6   .  E8 550C0000   call    00409A30
00408DDB   .  85C0          test    eax, eax
00408DDD   .  74 0B         je      short 00408DEA
00408DDF   .  892D E4F84300 mov     dword ptr [43F8E4], ebp
00408DE5   .  E9 A2020000   jmp     0040908C
00408DEA   >  8BCE          mov     ecx, esi
00408DEC   .  C705 78224400>mov     dword ptr [442278], 0F                                
00408DF6   .  E8 250F0000   call    00409D20
00408DFB   .  85C0          test    eax, eax                                               以上为比较“File.ini”文件的信息记录
00408DFD      74 59         je      short 00408E58                                         关键跳,不跳则提示未注册和试用期为0天,改为jmp跳过!
00408DFF   .  8D4424 18     lea     eax, dword ptr [esp+18]
00408E03   .  8BCE          mov     ecx, esi
00408E05   .  50            push    eax
00408E06   .  892D E0F84300 mov     dword ptr [43F8E0], ebp
00408E0C   .  E8 7F040000   call    00409290
00408E11   .  813D E0F84300>cmp     dword ptr [43F8E0], 13AED
00408E1B   .  75 0B         jnz     short 00408E28
¨¨¨¨¨¨再多次F8单步运行后至此
00408FA4   .  E8 E7020000   call    00409290
00408FA9   .  813D E0F84300>cmp     dword ptr [43F8E0], 13AED
00408FB3   .  75 0B         jnz     short 00408FC0
00408FB5   .  892D E4F84300 mov     dword ptr [43F8E4], ebp
00408FBB   .  E9 CC000000   jmp     0040908C
00408FC0   >  51            push    ecx
00408FC1   .  8B4C24 18     mov     ecx, dword ptr [esp+18]
00408FC5   .  8BC4          mov     eax, esp
00408FC7   .  896424 28     mov     dword ptr [esp+28], esp
00408FCB   .  8908          mov     dword ptr [eax], ecx
00408FCD   .  8D4C24 2C     lea     ecx, dword ptr [esp+2C]
00408FD1   .  E8 9A1C0000   call    0040AC70
00408FD6   .  3BC5          cmp     eax, ebp                                             以上为比较注册表信息记录
00408FD8      74 37         je      short 00409011                                       关键跳,不跳则提示未注册和试用期为0天,改为jmp跳过!
00408FDA   .  8BCE          mov     ecx, esi
00408FDC   .  E8 7F140000   call    0040A460
00408FE1   .  8D4C24 2C     lea     ecx, dword ptr [esp+2C]
00408FE5   .  892D 78224400 mov     dword ptr [442278], ebp
00408FEB   .  E8 BDBF0100   call    00424FAD
00408FF0   .  8D8C24 C00000>lea     ecx, dword ptr [esp+C0]
00408FF7   .  C68424 940300>mov     byte ptr [esp+394], 8
00408FFF   .  E8 B8F90100   call    004289BC
00409004   .  C68424 940300>mov     byte ptr [esp+394], 7
0040900C   .  E9 B0010000   jmp     004091C1
00409011   >  8B5424 28     mov     edx, dword ptr [esp+28]
¨¨¨¨¨¨经过上述2处修改后再多次F8单步运行,最后至此
00409107   .  8D8C24 F80000>lea     ecx, dword ptr [esp+F8]
0040910E   .  E8 DD1E0000   call    0040AFF0
00409113   .  8D8C24 F40000>lea     ecx, dword ptr [esp+F4]
0040911A   .  C68424 940300>mov     byte ptr [esp+394], 0E
00409122   .  894E 1C       mov     dword ptr [esi+1C], ecx
00409125   .  8D8C24 F40000>lea     ecx, dword ptr [esp+F4]
0040912C   .  E8 7CBE0100   call    00424FAD                      至此程序正常运行,去掉15天试用期,虽然还是未注册版,但提示还可试用14726天!



    (7)如果还想去掉“未注册”标志,则根据ASCII码字符串“-还可试用%d天”寻找下断点,详细如下
00408524   .  E8 CC050200   call    00428AF5
00408529   .  68 40224400   push    00442240
0040852E   .  8D8E 94000000 lea     ecx, dword ptr [esi+94]
00408534   .  E8 0C060200   call    00428B45
00408539   .  8BCE          mov     ecx, esi
0040853B   .  E8 F5CC0100   call    00425235
00408540   .  6A 00         push    0
00408542   .  8BCE          mov     ecx, esi
00408544   .  E8 4FF00100   call    00427598
00408549   .  A1 7CFE4300   mov     eax, dword ptr [43FE7C]          计算试用天数
0040854E   .  894424 04     mov     dword ptr [esp+4], eax
00408552   .  A1 E4F84300   mov     eax, dword ptr [43F8E4]
00408557   .  C74424 10 000>mov     dword ptr [esp+10], 0
0040855F   .  85C0          test    eax, eax                          关键比较
00408561      EB 33         je      short 00408596                   关键跳,在此之前下断,改为jmp即可跳试用天数记录,并显示“已注册”
00408563   .  8B0D 78224400 mov     ecx, dword ptr [442278]         
00408569   .  8D5424 04     lea     edx, dword ptr [esp+4]
0040856D   .  D905 2CF74300 fld     dword ptr [43F72C]
00408573   .  51            push    ecx
00408574   .  83EC 08       sub     esp, 8
00408577   .  DD1C24        fstp    qword ptr [esp]
0040857A   .  68 70F74300   push    0043F770                         ;  XXX还可试用%d天!
0040857F   .  52            push    edx
00408580   .  E8 9CB00100   call    00423621
00408585   .  8B4424 18     mov     eax, dword ptr [esp+18]
00408589   .  83C4 14       add     esp, 14
0040858C   .  8BCE          mov     ecx, esi
0040858E   .  50            push    eax
0040858F   .  E8 88FA0100   call    0042801C
00408594   .  EB 51         jmp     short 004085E7
00408596   >  D905 2CF74300 fld     dword ptr [43F72C]
0040859C   .  83EC 08       sub     esp, 8
0040859F   .  8D4C24 0C     lea     ecx, dword ptr [esp+C]
004085A3   .  DD1C24        fstp    qword ptr [esp]
004085A6   .  68 50F74300   push    0043F750                         ;  XXX v%.1f-已注册
004085AB   .  51            push    ecx
004085AC   .  E8 70B00100   call    00423621
004085B1   .  8B5424 14     mov     edx, dword ptr [esp+14]
004085B5   .  83C4 10       add     esp, 10
004085B8   .  8BCE          mov     ecx, esi
以上是去掉试用期限制的方法。

4.  第二步  完美爆破
    (1)完美爆破的第一步和去掉时间限制方法的第(5)、第(6)步一样,因为两者都必须去掉程序启动时的验证动作,才能进入正常的界面;
    (2)第二步是根据“未注册”、“注册版”、  “感谢您的支持”等提示信息下断点,过程如下:

0040B252   .  E8 9ED80100   call    00428AF5
0040B257   .  8B15 7CFE4300 mov     edx, dword ptr [43FE7C]          ;  Xxxxx.0043FE90
0040B25D   .  895424 0C     mov     dword ptr [esp+C], edx
0040B261   .  A1 E4F84300   mov     eax, dword ptr [43F8E4]
0040B266   .  899C24 580100>mov     dword ptr [esp+158], ebx 
0040B26D   .  D905 0CFB4300 fld     dword ptr [43FB0C]
0040B273   .  85C0          test    eax, eax                              关键比较,在以上下断点
0040B275      0F84 8E000000 je      0040B309                            关键跳转,不跳必挂,改为jmp跳过
0040B27B   .  83EC 08       sub     esp, 8
0040B27E   .  8D4424 14     lea     eax, dword ptr [esp+14]
0040B282   .  DD1C24        fstp    qword ptr [esp]
0040B285   .  68 38FB4300   push    0043FB38                         ;  XXX  XX版v%.1f(未注册)
0040B28A   .  50            push    eax
0040B28B   .  E8 91830100   call    00423621
0040B290   .  A1 78224400   mov     eax, dword ptr [442278]
0040B295   .  83C4 10       add     esp, 10
0040B298   .  85C0          test    eax, eax
0040B29A   .  0F85 81000000 jnz     0040B321
0040B2A0   .  6A 00         push    0
0040B2A2   .  8D8C24 8C0000>lea     ecx, dword ptr [esp+8C]
0040B2A9   .  E8 82D0FFFF   call    00408330
0040B2AE   .  8D8C24 880000>lea     ecx, dword ptr [esp+88]
0040B2B5   .  C68424 580100>mov     byte ptr [esp+158], 2
0040B2BD   .  E8 EB9C0100   call    00424FAD
0040B2C2   .  8B16          mov     edx, dword ptr [esi]
0040B2C4   .  8BCE          mov     ecx, esi
0040B2C6   .  FF92 C8000000 call    dword ptr [edx+C8]
0040B2CC   .  8D8C24 1C0100>lea     ecx, dword ptr [esp+11C]
0040B2D3   .  C68424 580100>mov     byte ptr [esp+158], 4
0040B2DB   .  E8 DCD60100   call    004289BC
0040B2E0   .  8D8C24 180100>lea     ecx, dword ptr [esp+118]
0040B2E7   .  C68424 580100>mov     byte ptr [esp+158], 3
0040B2EF   .  E8 C8D60100   call    004289BC
0040B2F4   .  8D8C24 880000>lea     ecx, dword ptr [esp+88]
0040B2FB   .  889C24 580100>mov     byte ptr [esp+158], bl
0040B302   .  E8 79990100   call      00424C80
0040B307   .  EB 18         jmp     short 0040B321
0040B309   >  83EC 08       sub     esp, 8
0040B30C   .  8D4424 14     lea     eax, dword ptr [esp+14]
0040B310   .  DD1C24        fstp    qword ptr [esp]
0040B313   .  68 1CFB4300   push    0043FB1C                         ;  XXX  xx版v%.1f
0040B318   .  50            push    eax
0040B319   .  E8 03830100   call    00423621
0040B31E   .  83C4 10       add     esp, 10
¨¨¨¨¨¨
0040C280  /$  6A FF         push    -1
0040C282  |.  68 DE1C4300   push    00431CDE                         ;  SE 处理程序安装
0040C287  |.  64:A1 0000000>mov     eax, dword ptr fs:[0]
0040C28D  |.  50            push    eax
0040C28E  |.  64:8925 00000>mov     dword ptr fs:[0], esp
0040C295  |.  81EC C8000000 sub     esp, 0C8
0040C29B  |.  56            push    esi
0040C29C  |.  8BF1          mov     esi, ecx
0040C29E  |.  6A 00         push    0
0040C2A0  |.  8D4C24 08     lea     ecx, dword ptr [esp+8]
0040C2A4  |.  E8 87C0FFFF   call    00408330
0040C2A9  |.  A1 E4F84300   mov     eax, dword ptr [43F8E4]
0040C2AE  |.  C78424 D40000>mov     dword ptr [esp+D4], 0
0040C2B9  |.  85C0          test    eax, eax                               关键比较,在以上下断点
0040C2BB      74 0B         je      short 0040C2C8                      关键跳转,不跳必挂,改为jmp跳过
0040C2BD  |.  8D4C24 04     lea     ecx, dword ptr [esp+4]
0040C2C1  |.  E8 E78C0100   call    00424FAD
0040C2C6  |.  EB 10         jmp     short 0040C2D8
0040C2C8  |>  6A 00         push    0
0040C2CA  |.  6A 00         push    0
0040C2CC  |.  68 34FC4300   push    0043FC34                         ;  您已经注册,感谢您的支持!
0040C2D1  |.  8BCE          mov     ecx, esi
0040C2D3  |.  E8 64AB0100   call    00426E3C
0040C2D8  |>  8D8C24 980000>lea     ecx, dword ptr [esp+98]
0040C2DF  |.  C78424 D40000>mov     dword ptr [esp+D4], 2
0040C2EA  |.  E8 CDC60100   call    004289BC



       以上是完美的爆破。

【总     结】该软件采用 机器码+注册码+Keyfile的保护方法,需要重启验证,非明码比较,保护文件隐藏较深,一般方法很难找到,给新手带来不小难度。在调试过程中寻找关键点是成功的要诀。在本次调试中具体表现在如下两点:(1)在寻找保护文件时,常规方法找不到,后来OD载入后发现可疑信息“file.ini”,遂在D盘中的Recycler\AEEDCB97-QS21-47B-AA9F-QA237D2D05RGF文件夹中找到该文件;(2)在寻找重启验证的关键跳转时,刚开始利用bp RegOpenKeyExA、bp GetFileTime、bp CreateFileA等下断点均无法找到,最后灵机一动,择expired作为关键词很快就找到。故,如何随机应变是破解的基本功。由于本人还是十足的菜鸟,注册算法分析还未掌握,故无法追寻到注册码和写注册机,望各位多多指教!
这是本人的初次成功爆破,其中的喜悦心情可想而知,本人诚挚期待看雪的版主给予奖励一个邀请码,以增加学习的动力。真诚感谢论坛的所有朋友,因为你们给予了我许多的知识与快乐!祝大家身体健康、万事胜意!
201
0-4-28

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (41)
雪    币: 28
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
不错哦LZ,我还得多学学才行。
2010-4-28 13:00
0
雪    币: 268
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
GUX
3
不错哦, 向楼主学习!
2010-4-28 14:34
0
雪    币: 76
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
新人学习了。多谢分享。
2010-4-28 15:13
0
雪    币: 74
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
做得挺好的,学习了
2010-4-28 15:26
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
厉害 膜拜ing
2010-4-28 16:20
0
雪    币: 102
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
值得学习,还蛮详细的
2010-4-28 16:42
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
向楼主学习
2010-4-28 16:53
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
楼主也是菜鸟呀,对我来说可是高手了。。
向楼主学习呀。。

楼主要是能提供下此软件更好了。。期待楼主。。
2010-4-28 17:53
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主破解的什么软件,搞一个,让我们跟着一起学习学习
2010-4-28 18:21
0
雪    币: 33
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
这个我不会啊
2010-4-28 19:20
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
真不错,好好学习参摩
2010-4-28 20:01
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习一下。。呵呵。
2010-4-28 20:22
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
总的说来还是相当不错的!
2010-4-28 20:27
0
雪    币: 77
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
谢谢楼主分享!适合我这样的新人!
2010-4-28 22:24
0
雪    币: 79
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
楼主经验值得我们小菜学习
2010-4-28 22:41
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
楼主好样的,破解输入注册码的软件对我还是难题,继续努力
2010-4-29 09:35
0
雪    币: 226
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
不错,顶起!!!
2010-4-29 13:40
0
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
向楼主学习。
2010-4-29 13:57
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
谢谢楼主分享。楼主不错了。。。
2010-4-29 14:17
0
雪    币: 826
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
楼主好样的,佩服中
2010-4-29 14:35
0
雪    币: 265
活跃值: (27)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
学习了!!!
2010-4-29 20:16
0
雪    币: 252
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
谢谢大家的支持与鼓励!
2010-4-30 20:41
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
我也想要邀请码
2010-4-30 20:44
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
适合新人学习。谢谢
2010-4-30 21:36
0
游客
登录 | 注册 方可回帖
返回
//