首页
社区
课程
招聘
[原创]一个cm级别的小软件之爆破篇----软件水平考试测试系统3.0(高级程序员)
发表于: 2011-8-27 23:26 11076

[原创]一个cm级别的小软件之爆破篇----软件水平考试测试系统3.0(高级程序员)

2011-8-27 23:26
11076

【文章标题】: 【原创】一个cm级别的小软件之爆破篇----考试试系统3.0(高级程序员)
【文章作者】: 君君寒
【软件名称】: 软件水平考试测试系统3.0(高级程序员)
【软件大小】: 918kb
【下载地址】: 自己搜索下载
【加壳方式】: Aspack v2.12 -> Alexey Solodovnikov ( Sn-flag:ok )
【保护方式】: 注册码
【编写语言】: Borland Delphi ( 2.0 - 7.0 )
【使用工具】: W32DSM 无极版  od
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  最近一直写程序,破解几乎荒废了,qq群里有人想要考软考,我想起很久以前通过的软考,就想着反正也是清闲,就继续考吧。
  我平常喜欢找点资料,网上查了下考试复习资料并不很多。不过还是被我找到不少。呵呵
  当我打开这个软件的时候讨厌的未注册出来,很是不自在,顺便看了下作者,好象几乎将这个软件忘记了,一没升级,资料一直停留在
  以前的东西,不过不妨碍大家学习的热情,既然作者都不在乎了,我就当个cm破了吧。因为手生了,也就不去想制作注册机
  而且跟了很多次没发现明码比较,得。爆破吧。
  查壳Aspack v2.12 -> Alexey Solodovnikov esp定律秒杀之,
  打开程序正常运行。
  点了下 软件注册跳出一个方框  软件注册界面
  直接点注册 认证 提示 “ 注册码不能为空,请重新输入”好家伙,于是马上打开W32DSM 无极版,然后搜索“注册”
  出现了非常多的 注册相关提示,记录下来。
  0061688A  |.  B8 446A6100   mov     eax, 00616A44                    ;注册码不能为空,请重新输入  比较内容是否为空
  0061688F  |.  E8 705CE3FF   call    0044C504
  00616894  |.  E9 36010000   jmp     006169CF
  00616899  |>  33D2          xor     edx, edx
  0061689B  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
  0061689E  |.  8A0410        mov     al, byte ptr [eax+edx]
  006168A1  |.  EB 07         jmp     short 006168AA
  006168A3  |>  42            /inc     edx
  006168A4  |.  8B45 F4       |mov     eax, dword ptr [ebp-C]
  006168A7  |.  8A0410        |mov     al, byte ptr [eax+edx]
  006168AA  |>  3C 30          cmp     al, 30
  006168AC  |.  72 04         |jb      short 006168B2
  006168AE  |.  3C 39         |cmp     al, 39
  006168B0  |.  76 08         |jbe     short 006168BA
  006168B2  |>  3C 41         |cmp     al, 41
  006168B4  |.  72 08         |jb      short 006168BE
  006168B6  |.  3C 46         |cmp     al, 46
  006168B8  |.  77 04         |ja      short 006168BE
  006168BA  |>  3BCA          |cmp     ecx, edx
  006168BC  |.^ 7D E5         \jge     short 006168A3
  006168BE  |>  83FA 10       cmp     edx, 10
  006168C1  |.  0F85 F0000000 jnz     006169B7
  006168C7  |.  8D4D F0       lea     ecx, dword ptr [ebp-10]
  006168CA  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
  006168CD  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
  006168D0  |.  E8 E7ECFFFF   call    006155BC                         ;  
  006168D5  |.  8B45 F0       mov     eax, dword ptr [ebp-10]
  006168D8  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
  006168DB  |.  E8 CCE1DEFF   call    00404AAC
  006168E0  |.  0F85 B7000000 jnz     0061699D                         ;  
  006168E6  |.  8D55 BC       lea     edx, dword ptr [ebp-44]
  006168E9  |.  33C0          xor     eax, eax
  006168EB  |.  E8 50C2DEFF   call    00402B40
  006168F0  |.  8B45 BC       mov     eax, dword ptr [ebp-44]
  006168F3  |.  8D55 C0       lea     edx, dword ptr [ebp-40]
  006168F6  |.  E8 F533DFFF   call    00409CF0
  006168FB  |.  8B55 C0       mov     edx, dword ptr [ebp-40]
  006168FE  |.  8D45 EC       lea     eax, dword ptr [ebp-14]
  00616901  |.  B9 686A6100   mov     ecx, 00616A68                    ;  ASCII "data\friend.ini"
  00616906  |.  E8 A9E0DEFF   call    004049B4
  0061690B  |.  8B4D EC       mov     ecx, dword ptr [ebp-14]
  0061690E  |.  B2 01         mov     dl, 1
  00616910  |.  A1 90C74800   mov     eax, dword ptr [48C790]
  00616915  |.  E8 265FE7FF   call    0048C840
  0061691A  |.  8B15 8C0B6200 mov     edx, dword ptr [620B8C]          ;  Unpacked.0062B158
  00616920  |.  8902          mov     dword ptr [edx], eax
  00616922  |.  A1 9C0C6200   mov     eax, dword ptr [620C9C]
  00616927  |.  8B00          mov     eax, dword ptr [eax]
  00616929  |.  50            push    eax
  0061692A  |.  A1 8C0B6200   mov     eax, dword ptr [620B8C]
  0061692F  |.  8B00          mov     eax, dword ptr [eax]
  00616931  |.  B9 806A6100   mov     ecx, 00616A80                    ;  注册申请码
  00616936  |.  BA 946A6100   mov     edx, 00616A94                    ;  程序参数
  0061693B  |.  8B18          mov     ebx, dword ptr [eax]
  0061693D  |.  FF53 04       call    dword ptr [ebx+4]
  00616940  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
  00616943  |.  50            push    eax
  00616944  |.  A1 8C0B6200   mov     eax, dword ptr [620B8C]
  00616949  |.  8B00          mov     eax, dword ptr [eax]
  0061694B  |.  B9 A86A6100   mov     ecx, 00616AA8                    ;  注册认证码
  00616950  |.  BA 946A6100   mov     edx, 00616A94                    ;  程序参数
  00616955  |.  8B18          mov     ebx, dword ptr [eax]
  00616957  |.  FF53 04       call    dword ptr [ebx+4]
  0061695A  |.  A1 8C0B6200   mov     eax, dword ptr [620B8C]
  0061695F  |.  8B00          mov     eax, dword ptr [eax]
  00616961  |.  B2 01         mov     dl, 1
  00616963  |.  8B08          mov     ecx, dword ptr [eax]
  00616965  |.  FF51 FC       call    dword ptr [ecx-4]
  00616968  |.  A1 0C0D6200   mov     eax, dword ptr [620D0C]
  0061696D  |.  8B00          mov     eax, dword ptr [eax]
  0061696F  |.  8B80 08030000 mov     eax, dword ptr [eax+308]
  00616975  |.  BA BC6A6100   mov     edx, 00616ABC                    ;  计算机软件水平考试测试系统3.0精
  0061697A  |.  E8 6DCFE3FF   call    004538EC
  0061697F  |.  A1 E8046200   mov     eax, dword ptr [6204E8]
  00616984  |.  C600 01       mov     byte ptr [eax], 1
  00616987  |.  B8 006B6100   mov     eax, 00616B00                    ;  注册成功,感谢您的支持!
  0061698C  |.  E8 735BE3FF   call    0044C504
  00616991  |.  A1 4CB16200   mov     eax, dword ptr [62B14C]
  00616996  |.  E8 ADAAE5FF   call    00471448
  0061699B  |.  EB 32         jmp     short 006169CF
  0061699D  |>  6A 00         push    0
  0061699F  |.  B9 186B6100   mov     ecx, 00616B18                    ;  警告框
  006169A4  |.  BA 206B6100   mov     edx, 00616B20                    ;  注册码错误
  006169A9  |.  A1 AC0A6200   mov     eax, dword ptr [620AAC]
  006169AE  |.  8B00          mov     eax, dword ptr [eax]
  006169B0  |.  E8 47E4E5FF   call    00474DFC
  006169B5  |.  EB 18         jmp     short 006169CF
  006169B7  |>  6A 00         push    0
  006169B9  |.  B9 186B6100   mov     ecx, 00616B18
  006169BE  |.  BA 206B6100   mov     edx, 00616B20                    ;  注册码错误
  006169C3  |.  A1 AC0A6200   mov     eax, dword ptr [620AAC]
  006169C8  |.  8B00          mov     eax, dword ptr [eax]
  006169CA  |.  E8 2DE4E5FF   call    00474DFC
  006169CF  |>  33C0          xor     eax, eax
  006169D1  |.  5A            pop     edx
  006169D2  |.  59            pop     ecx
  006169D3  |.  59            pop     ecx
  006169D4  |.  64:8910       mov     dword ptr fs:[eax], edx
  006169D7  |.  68 366A6100   push    00616A36
  
  
  
  从这些信息里面我们可以知道 文件是通过判断data\friend.ini里面的  注册认证码来确认注册的。
  而且分支如此明显 cm啊,我很惊喜。
  
  
  找到这段代码的程序头下 内存断点
  00616780  /.  55            push    ebp-------------------f2,然后 shift+f9,点软件注册,随便输入注册码,然后就会断下来,取消断点开始单步
  00616781  |.  8BEC          mov     ebp, esp
  00616783  |.  B9 08000000   mov     ecx, 8
  00616788  |>  6A 00         /push    0
  0061678A  |.  6A 00         |push    0
  0061678C  |.  49            |dec     ecx
  0061678D  |.^ 75 F9         \jnz     short 00616788
  0061678F  |.  51            push    ecx
  00616790  |.  53            push    ebx
  00616791  |.  8BD8          mov     ebx, eax
  00616793  |.  33C0          xor     eax, eax
  00616795  |.  55            push    ebp
  00616796  |.  68 2F6A6100   push    00616A2F
  0061679B  |.  64:FF30       push    dword ptr fs:[eax]
  0061679E  |.  64:8920       mov     dword ptr fs:[eax], esp
  006167A1  |.  8D45 FC       lea     eax, dword ptr [ebp-4]
  006167A4  |.  50            push    eax
  
  一直单步,直到
  
  006168C7  |.  8D4D F0       lea     ecx, dword ptr [ebp-10]
  006168CA  |.  8B55 FC       mov     edx, dword ptr [ebp-4]
  006168CD  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
  006168D0  |.  E8 E7ECFFFF   call    006155BC                         ; eax 出现假注册码
  006168D5  |.  8B45 F0       mov     eax, dword ptr [ebp-10]
  006168D8  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
  006168DB  |.  E8 CCE1DEFF   call    00404AAC
  006168E0  |.  0F85 B7000000 jnz     0061699D                         ;  是否成功注册
  006168E6  |.  8D55 BC       lea     edx, dword ptr [ebp-44]
  006168E9  |.  33C0          xor     eax, eax
  006168EB  |.  E8 50C2DEFF   call    00402B40
  006168F0  |.  8B45 BC       mov     eax, dword ptr [ebp-44]
  006168F3  |.  8D55 C0       lea     edx, dword ptr [ebp-40]
  006168F6  |.  E8 F533DFFF   call    00409CF0
  006168FB  |.  8B55 C0       mov     edx, dword ptr [ebp-40]
  
  终于发现假的注册码,偷偷的笑了。
  006168D0  |.  E8 E7ECFFFF   call    006155BC                         ;  eax出现假注册码
  006168D5  |.  8B45 F0       mov     eax, dword ptr [ebp-10]
  006168D8  |.  8B55 F8       mov     edx, dword ptr [ebp-8]
  006168DB  |.  E8 CCE1DEFF   call    00404AAC
  006168E0  |.  0F85 B7000000 jnz     0061699D                         ;  是否成功注册-----这里就是爆破点了
  006168E6  |.  8D55 BC       lea     edx, dword ptr [ebp-44]
  006168E9  |.  33C0          xor     eax, eax
  006168EB  |.  E8 50C2DEFF   call    00402B40
  006168F0  |.  8B45 BC       mov     eax, dword ptr [ebp-44]
  006168F3  |.  8D55 C0       lea     edx, dword ptr [ebp-40]
  006168F6  |.  E8 F533DFFF   call    00409CF0
  006168FB  |.  8B55 C0       mov     edx, dword ptr [ebp-40]
  006168FE  |.  8D45 EC       lea     eax, dword ptr [ebp-14]
  00616901  |.  B9 686A6100   mov     ecx, 00616A68                    ;  ASCII "data\friend.ini"
  00616906  |.  E8 A9E0DEFF   call    004049B4
  0061690B  |.  8B4D EC       mov     ecx, dword ptr [ebp-14]
  0061690E  |.  B2 01         mov     dl, 1
  00616910  |.  A1 90C74800   mov     eax, dword ptr [48C790]
  00616915  |.  E8 265FE7FF   call    0048C840
  0061691A  |.  8B15 8C0B6200 mov     edx, dword ptr [620B8C]          ;  Unpacked.0062B158
  00616920  |.  8902          mov     dword ptr [edx], eax
  00616922  |.  A1 9C0C6200   mov     eax, dword ptr [620C9C]
  00616927  |.  8B00          mov     eax, dword ptr [eax]
  00616929  |.  50            push    eax
  0061692A  |.  A1 8C0B6200   mov     eax, dword ptr [620B8C]
  0061692F  |.  8B00          mov     eax, dword ptr [eax]
  00616931  |.  B9 806A6100   mov     ecx, 00616A80                    ;  注册申请码
  00616936  |.  BA 946A6100   mov     edx, 00616A94                    ;  程序参数
  0061693B  |.  8B18          mov     ebx, dword ptr [eax]
  0061693D  |.  FF53 04       call    dword ptr [ebx+4]
  00616940  |.  8B45 F4       mov     eax, dword ptr [ebp-C]
  00616943  |.  50            push    eax
  00616944  |.  A1 8C0B6200   mov     eax, dword ptr [620B8C]
  00616949  |.  8B00          mov     eax, dword ptr [eax]
  0061694B  |.  B9 A86A6100   mov     ecx, 00616AA8                    ;  注册认证码
  00616950  |.  BA 946A6100   mov     edx, 00616A94                    ;  程序参数
  00616955  |.  8B18          mov     ebx, dword ptr [eax]
  00616957  |.  FF53 04       call    dword ptr [ebx+4]
  0061695A  |.  A1 8C0B6200   mov     eax, dword ptr [620B8C]
  0061695F  |.  8B00          mov     eax, dword ptr [eax]
  00616961  |.  B2 01         mov     dl, 1
  00616963  |.  8B08          mov     ecx, dword ptr [eax]
  00616965  |.  FF51 FC       call    dword ptr [ecx-4]
  00616968  |.  A1 0C0D6200   mov     eax, dword ptr [620D0C]
  0061696D  |.  8B00          mov     eax, dword ptr [eax]
  0061696F  |.  8B80 08030000 mov     eax, dword ptr [eax+308]
  00616975  |.  BA BC6A6100   mov     edx, 00616ABC                    ;  计算机软件水平考试测试系统3.0精
  0061697A  |.  E8 6DCFE3FF   call    004538EC
  0061697F  |.  A1 E8046200   mov     eax, dword ptr [6204E8]
  00616984  |.  C600 01       mov     byte ptr [eax], 1
  00616987  |.  B8 006B6100   mov     eax, 00616B00                    ;  注册成功,感谢您的支持!
  0061698C  |.  E8 735BE3FF   call    0044C504
  00616991  |.  A1 4CB16200   mov     eax, dword ptr [62B14C]
  00616996  |.  E8 ADAAE5FF   call    00471448
  0061699B  |.  EB 32         jmp     short 006169CF
  0061699D  |>  6A 00         push    0
  0061699F  |.  B9 186B6100   mov     ecx, 00616B18                    ;  警告框
  006169A4  |.  BA 206B6100   mov     edx, 00616B20                    ;  注册码错误
  006169A9  |.  A1 AC0A6200   mov     eax, dword ptr [620AAC]
  006169AE  |.  8B00          mov     eax, dword ptr [eax]
  006169B0  |.  E8 47E4E5FF   call    00474DFC
  006169B5  |.  EB 18         jmp     short 006169CF
  006169B7  |>  6A 00         push    0
  006169B9  |.  B9 186B6100   mov     ecx, 00616B18
  006169BE  |.  BA 206B6100   mov     edx, 00616B20                    ;  注册码错误
  006169C3  |.  A1 AC0A6200   mov     eax, dword ptr [620AAC]
  006169C8  |.  8B00          mov     eax, dword ptr [eax]
  006169CA  |.  E8 2DE4E5FF   call    00474DFC
  006169CF  |>  33C0          xor     eax, eax
  006169D1  |.  5A            pop     edx
  006169D2  |.  59            pop     ecx
  006169D3  |.  59            pop     ecx
  006169D4  |.  64:8910       mov     dword ptr fs:[eax], edx
  006169D7  |.  68 366A6100   push    00616A36
  006169DC  |>  8D45 BC       lea     eax, dword ptr [ebp-44]
  006169DF  |.  BA 02000000   mov     edx, 2
  006169E4  |.  E8 EBDCDEFF   call    004046D4
  006169E9  |.  8D45 C4       lea     eax, dword ptr [ebp-3C]
  006169EC  |.  E8 BFDCDEFF   call    004046B0
  006169F1  |.  8D45 C8       lea     eax, dword ptr [ebp-38]
  006169F4  |.  E8 B7DCDEFF   call    004046B0
  006169F9  |.  8D45 CC       lea     eax, dword ptr [ebp-34]
  006169FC  |.  E8 AFDCDEFF   call    004046B0
  00616A01  |.  8D45 D0       lea     eax, dword ptr [ebp-30]
  00616A04  |.  E8 A7DCDEFF   call    004046B0
  00616A09  |.  8D45 D4       lea     eax, dword ptr [ebp-2C]
  00616A0C  |.  E8 9FDCDEFF   call    004046B0
  00616A11  |.  8D45 D8       lea     eax, dword ptr [ebp-28]
  00616A14  |.  E8 97DCDEFF   call    004046B0
  00616A19  |.  8D45 DC       lea     eax, dword ptr [ebp-24]
  00616A1C  |.  E8 8FDCDEFF   call    004046B0
  00616A21  |.  8D45 E0       lea     eax, dword ptr [ebp-20]
  00616A24  |.  BA 08000000   mov     edx, 8
  00616A29  |.  E8 A6DCDEFF   call    004046D4
  00616A2E  \.  C3            retn
  00616A2F   .^ E9 88D6DEFF   jmp     004040BC
  00616A34   .^ EB A6         jmp     short 006169DC
  00616A36   .  5B            pop     ebx
  00616A37   .  8BE5          mov     esp, ebp
  00616A39   .  5D            pop     ebp
  00616A3A   .  C3            retn
  
  程序的分支非常明显  如果006168E0 jnz     0061699D 这里跳了那么程序就执行
  0061699D  |>  6A 00         push    0
  0061699F  |.  B9 186B6100   mov     ecx, 00616B18                    ;  警告框
  006169A4  |.  BA 206B6100   mov     edx, 00616B20                    ;  注册码错误
  006169A9  |.  A1 AC0A6200   mov     eax, dword ptr [620AAC]
  006169AE  |.  8B00          mov     eax, dword ptr [eax]
  006169B0  |.  E8 47E4E5FF   call    00474DFC
  如果不跳就 操作data\friend.ini 里面的  注册申请码   注册认证码
  接下来提示注册成功,感谢您的支持!
  那么就来修改它吧006168E0 je     0061699D
  
  然后保存修改后的文件
  重新打开  依旧提示没注册,不过不要紧,随便输入一个注册码,立即提示注册成功,并且功能都可以使用。
  
  诶,一个连爆破都非常挫的程序。不过 至少能用了,先用了再说。呵呵
  
--------------------------------------------------------------------------------
【经验总结】
  对程序如果有提示,要认真的分析提示,其实读取ini文件是有一个api(GetPrivateProfileStringA )可以断下来的,但
  是我断了下 对程序破解帮助不大不过,追踪计算注册码应该是有帮助的,过程很挫,但是破解那些事都荒废了,大家讲究
  着看吧。软件资料很老,但是还是不错的。谢谢大家花时间看这个挫的爆破,下次我准备弄出注册机篇,欲知后事如何,且
  听下回分解。
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于君君寒, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2011年08月27日 23:21:56


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

收藏
免费 6
支持
分享
最新回复 (14)
雪    币: 1489
活跃值: (1058)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
2
扫了一眼,楼主继续努力。
2011-8-27 23:59
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
LZ 换头像了 ,支持
2011-8-28 15:50
0
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
这个优秀有点假啊
好歹分析一下key过程啊
2011-8-28 22:06
0
雪    币: 6092
活跃值: (734)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
5
等几天的 最近写程序 ,等几天 补充
2011-8-28 23:41
0
雪    币: 6092
活跃值: (734)
能力值: ( LV4,RANK:45 )
在线值:
发帖
回帖
粉丝
6
头像是家里养的小白兔,名字叫百叶,因为太可爱了 非常喜欢,所以就换了
2011-8-28 23:43
0
雪    币: 967
活跃值: (1138)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
很多人受不了我这种说话态度
还是你比较平静,有境界
这个像你学习
记的当时有一个会员,我说了一句,当时他就冒起来,接着就发起狠了
2011-8-29 08:21
0
雪    币: 1015
活跃值: (235)
能力值: ( LV12,RANK:440 )
在线值:
发帖
回帖
粉丝
8
这不是弄出不必要的矛盾嘛。作者也没有权限自己评

精华或者优秀什么的更多的是对作者辛劳付出的一种肯定,同时也是方便用户阅读。
如果楼上真的有疑问的话,可以向所在版块的版主询问,再不要像以前那样直接说作者了噢

ps:也不知道君君最近情况怎么样,以前看你的"卖身贴",心情真的很沉重
2011-8-29 08:43
0
雪    币: 246
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
生活太艰辛
能坚持自己的爱好很不容易。
2011-8-29 23:26
0
雪    币: 291
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
我们为了生活,几乎都快要放弃自己的兴趣爱好了。o(︶︿︶)o 唉,都不知道何年何月才能走出这个约束啊
2011-8-31 21:16
0
雪    币: 4440
活跃值: (3103)
能力值: ( LV10,RANK:175 )
在线值:
发帖
回帖
粉丝
11
一时没反应过来 CM是Crack Me 的意思  - -
2011-9-1 09:45
0
雪    币: 10665
活跃值: (3574)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
12
这种程序真的很无语
2011-9-3 09:50
0
雪    币: 12348
活跃值: (5113)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13

来学习一下
2011-9-9 14:15
0
雪    币: 1363
活跃值: (139)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
呵呵,看过,谢谢楼主~~~
2011-9-9 16:46
0
雪    币: 205
活跃值: (21)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
谢谢,原来CM是这个意思,呵呵
2011-9-11 12:40
0
游客
登录 | 注册 方可回帖
返回
//