吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7592|回复: 20
收起左侧

[原创] Free Internet Window Washer 3.0注册算法分析及注册机

[复制链接]
韩_秋生 发表于 2015-3-28 00:55
本帖最后由 韩_秋生 于 2015-4-1 00:00 编辑

【文章标题】: Free Internet Window Washer 3.0注册算法分析及注册机
【文章作者】: 小韩
【下载地址】: 网上搜索
【使用工具】: OD
刚才帖子排版太乱,wgz001 大神帮忙整理了下,发帖太少,有些地方不会设置,在这说声谢谢了。
   好了,开始分析


爆破很简单 爆破完后,就寻思着写注册机看看 小菜表示第一次写注册机 有点小激动


还好算法不复杂,最终写出来了,


    为了避免非零基础人群看过后感到身体不适、头晕恶心、易怒及粗口,请点击右上角~~~~~~~~~~~


             分析错误之处还望大牛赐教!
--------------------------------------------------------------------------------
【相关附件】
程序链接: http://pan.baidu.com/s/1hq9vydu 密码: y6et  解压密码:xiaohan
注册机链接: http://pan.baidu.com/s/1bnsA9or 密码: 97re

【分析过程】
爆破不多说
运行程序,OD附加 搜索ASCII码 RES_Registration_Error 直接来到上方的CALL 下段
004D3A01    E8 7A4E0000     call Clearpch.004D8880                   ; 算法CALL


跟进004D8880
[Asm] 纯文本查看 复制代码
004D8880    55              push ebp                                 ; 头部
004D8881    8BEC            mov ebp,esp
004D8883    6A 00           push 0x0
004D8885    53              push ebx
004D8886    56              push esi
004D8887    8BF0            mov esi,eax                              ; esi传入假注册码
004D8889    33C0            xor eax,eax                              ; eax清零
004D888B    55              push ebp
004D888C    68 1C894D00     push Clearpch.004D891C
004D8891    64:FF30         push dword ptr fs:[eax]
004D8894    64:8920         mov dword ptr fs:[eax],esp
004D8897    33DB            xor ebx,ebx
004D8899    8D45 FC         lea eax,dword ptr ss:[ebp-0x4]
004D889C    8BD6            mov edx,esi                              ; edx传入假注册码
004D889E    E8 B9BFF2FF     call Clearpch.0040485C
004D88A3    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]           ; eax传入假注册码
004D88A6    E8 D9C1F2FF     call Clearpch.00404A84
004D88AB    83F8 09         cmp eax,0x9                              ; 判断注册码位数是否是9位
004D88AE   /75 56           jnz short Clearpch.004D8906              ; 如果是9位 继续进行注册

我们输入的是123456,不足9位,这里就跳过注册了,重新输入9位注册码:123456789
来到这里,继续向下,来到004D88B0,单步
[Asm] 纯文本查看 复制代码
004D88B0    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]           ; 取假注册码传入eax
004D88B3    33C9            xor ecx,ecx                              ; ecx清零
004D88B5    8A08            mov cl,byte ptr ds:[eax]                 ; 假注册码第1位传入cl
004D88B7    8BC1            mov eax,ecx                              ; 假注册码第1位传入eax
004D88B9    8B55 FC         mov edx,dword ptr ss:[ebp-0x4]           ; 取假注册码放在edx中
004D88BC    0FB672 03       movzx esi,byte ptr ds:[edx+0x3]          ; 假注册码第4位传入esi
004D88C0    03C6            add eax,esi                              ; 假注册码1、4位相加 数值放在eax
004D88C2    83E8 60         sub eax,0x60                             ; 1、4位的和-0x60  放入eax
004D88C5    83F8 08         cmp eax,0x8                              ; 判断1、4位之和是否大于8
004D88C8    7E 3C           jle short Clearpch.004D8906              ; 大于8 则继续注册

我们输入的假注册码1、4位之和是1+4=5,小于8,第二次跳过注册,所以把注册码第1位改成5吧
重新输入新注册码523456789,继续向下,来到04D88CA,单步
[Asm] 纯文本查看 复制代码
004D88CA    8BC1            mov eax,ecx                              ; 假注册码第1位传入eax
004D88CC    8B55 FC         mov edx,dword ptr ss:[ebp-0x4]           ; 假注册码传入edx
004D88CF    0FB652 02       movzx edx,byte ptr ds:[edx+0x2]          ; 假注册码第3位传入edx
004D88D3    03C2            add eax,edx                              ; 假注册码1、3位相加 放在eax
004D88D5    03C6            add eax,esi                              ; 假注册码1、3位之和再加上第4位,结果放在eax
004D88D7    2D 90000000     sub eax,0x90                             ; 相加后的和-90 传入eax
004D88DC    B9 0A000000     mov ecx,0xA                              ; ecx赋值A
004D88E1    99              cdq                                      ; 双字节eax以四字节扩展到edx
004D88E2    F7F9            idiv ecx                                 ; eax除以ecx(A=10) 取余数 传入edx
004D88E4    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]           ; 假注册码传入eax
004D88E7    0FB640 05       movzx eax,byte ptr ds:[eax+0x5]          ; 取假注册码第6位放在eax
004D88EB    83E8 30         sub eax,0x30                             ; eax转换成十六进制
004D88EE    3BD0            cmp edx,eax                              ; 判断第6位是否=刚才取的余数
004D88F0    75 14           jnz short Clearpch.004D8906              ; 等于的话 继续注册

到这里,我们先算一下假注册码中第6位的数值:(5+3+4)%10=2,正确的应该是2,不是我们之前输入的6,
再次修改下注册码为:523452789,重新注册。再次来到004D88F0,跳转没实现,继续向下单步
[Asm] 纯文本查看 复制代码
004D88F2    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]           ; 假注册码传入eax
004D88F5    8078 01 35      cmp byte ptr ds:[eax+0x1],0x35           ; 判断第2位的ASCII码值是否大于35  转换成十六进制就是第2位是否大于5
004D88F9    76 0B           jbe short Clearpch.004D8906              ; 大于5 继续注册

假注册码第2位是2,明显不行,我们换成6,新注册码为:563452789 再次来到004D88F9,跳转没实现,继续单步
来到:
[Asm] 纯文本查看 复制代码
004D88FB    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]           ; 假注册码再次传入eax
004D88FE    8078 04 33      cmp byte ptr ds:[eax+0x4],0x33           ; 判断第5位是否小于3
004D8902    73 02           jnb short Clearpch.004D8906              ; 小于3 继续注册

这里又对第5位做了一个判断,我门修改成2,假注册码变为:563422789,离真注册码越来越近了

再次来到这里,继续向下单步
[Asm] 纯文本查看 复制代码
004D8904    B3 01           mov bl,0x1                               ; bl传入1  这时候已经把注册码转到00B99DA0中去了
004D8906    33C0            xor eax,eax                              ; eax清零
004D8908    5A              pop edx                                  ; edx是刚才的余数  弹出
004D8909    59              pop ecx                                  ; ecx是刚才的除数(A=10)  弹出
004D890A    59              pop ecx                                  ; 0018EF50

到这里,算法就结束了,我们继续向下单步,看看它在哪里返回上一层的算法CALL下面
[Asm] 纯文本查看 复制代码
004D890B    64:8910         mov dword ptr fs:[eax],edx
004D890E    68 23894D00     push Clearpch.004D8923
004D8913    8D45 FC         lea eax,dword ptr ss:[ebp-0x4]
004D8916    E8 A9BEF2FF     call Clearpch.004047C4
004D891B    C3              retn
004D891C  ^ E9 03B8F2FF     jmp Clearpch.00404124
004D8921  ^ EB F0           jmp short Clearpch.004D8913
004D8923    8BC3            mov eax,ebx
004D8925    5E              pop esi
004D8926    5B              pop ebx
004D8927    59              pop ecx
004D8928    5D              pop ebp
004D8929    C3              retn      ;在这里返回到散发CALL下面了  

这个retn返回到004D3A06了,继续向下,

[Asm] 纯文本查看 复制代码
004D39FE    8B45 FC         mov eax,dword ptr ss:[ebp-0x4]
004D3A01    E8 7A4E0000     call Clearpch.004D8880                   ; 这是我们刚才进入的算法CALL
004D3A06    84C0            test al,al                               ;刚才那个retn回到了这一句
004D3A08    75 4B           jnz short Clearpch.004D3A55              ;来到这里,我们发现跳转实现了,不提示错误了
004D3A0A    6A 10           push 0x10
004D3A0C    8D55 F8         lea edx,dword ptr ss:[ebp-0x8]
004D3A0F    A1 A4EE4D00     mov eax,dword ptr ds:[0x4DEEA4]

好了,让程序跑起来,发现出现程序界面了,原来那个烦人的NAG也去掉了。
重新运行一下程序,发现注册过后的程序,开启的时候已经不会提示让你注册了
综上,我们的注册码经过多次修改,由123456变为563422789,已经成为真注册码了。


总结下吧,真注册码的要满足的条件:
一:注册码必须是9位
二:注册码第1位跟第4位的和要大于8
三:注册码的第1、3、4位之和除以10的余数必须和注册码的第6位相等
四:注册码的第2位必须大于5
五:注册码的第5位必须小于3


至于剩下的几位数,算法中没做运算,随意取值就行。


OK,下面就是写注册机。
至于注册机,怎么顺手怎么写
我用易语言简单写了下,相信能看到这里的,都能写出来。
源码我一起打包,上传网盘。
教程到此结束。
-----------------------------------------------------------------------
这是我第四次修改帖子了,由于是新手,帖子格式老是调整不好。
破解算法,用了两个半小时,整理出来,又是四十多分钟,
修改了四次,又差不多用了3个小时

在这感谢wgz001大大和Hmily大大指导了,要不我现在还搞不定排版。

终于完工了~~~~~~~~~~






1

1
2.png
3.png
4.png
5.png
6.png
7.png

8

8

9

9

免费评分

参与人数 9威望 +2 热心值 +9 收起 理由
远水涵秋 + 1 谢谢@Thanks!
liuphillpotts + 1 我很赞同!
dovepan + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.
Mikoto + 1 我很赞同!
Hmily + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.
Monitor + 1 排版不够好看呢
xugong + 1 热心回复!
我叫安静 + 1 鼓励转贴优秀软件安全工具和文档!
wgz001 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩.

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2015-3-28 23:19
韩_秋生 发表于 2015-3-28 15:33
谢谢H大建议了,注册机易语言简单写了下,有点拿不出手,论坛大大们都不屑用易语言了。这样我就献丑了:lo ...

我觉得挺好,分享技术有啥拿不出手的。



代码用这个功能,加上后就有特效了,我给你加了。
1.png
 楼主| 韩_秋生 发表于 2015-3-28 15:33
Hmily 发表于 2015-3-28 14:54
把注册机代码也贴一下吧,其实前面算法分析的图片可以直接把代码复制出来贴论坛,用代码标签处理下,会更好 ...

谢谢H大建议了,注册机易语言简单写了下,有点拿不出手,论坛大大们都不屑用易语言了。这样我就献丑了我重新编辑下

点评

我觉得挺好,分享技术有啥拿不出手的。 代码用这个功能,加上后就有特效了,我给你加了。 [attachimg]407104[/attachimg]  详情 回复 发表于 2015-3-28 23:19
wgz001 发表于 2015-3-28 01:35
 楼主| 韩_秋生 发表于 2015-3-28 01:37
wgz001 发表于 2015-3-28 01:35
注册机xp下运行后出来一个图片就没了 

额,我加了一个防OD调试的功能,检测到OD运行就会弹窗,不执行注册,3秒后销毁
爱你在梦里 发表于 2015-3-28 05:45
路过学习学习,谢谢了
Hmily 发表于 2015-3-28 14:54
把注册机代码也贴一下吧,其实前面算法分析的图片可以直接把代码复制出来贴论坛,用代码标签处理下,会更好看一些,内容丰富更容易拿精华贴。
xugong 发表于 2015-3-28 15:00
谢谢楼主分享,学习了
 楼主| 韩_秋生 发表于 2015-3-29 00:10
Hmily 发表于 2015-3-28 23:19
我觉得挺好,分享技术有啥拿不出手的。

谢谢Hmily大大了,又学会一招
爱亦无悔 发表于 2015-3-29 17:57
谢谢楼主,努力学习!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 12:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表