- UID
- 8198
注册时间2006-2-16
阅读权限40
最后登录1970-1-1
独步武林
该用户从未签到
|
【破文标题】骛一狂屏锁王 V1.0 算法分析
【破文作者】ZHOU2X
【破解工具】PEID,W32Dasm,Ollydbg,KeyMake
【破解平台】WinXP
【软件名称】骛一狂屏锁王 V1.0
【软件大小】1839 KB
【原版下载】http://www.softreg.com.cn/shareware_view.asp?id=/749EEF5B-36D7-4542-BEC9-37DCD68AE245/&agentid=46466
【保护方式】注册码、30次
【软件简介】 是一款对计算机进行锁定的小软件。它可以屏蔽系统的任何热键和禁止任何窗口的打开。可以有效的提高系统的安全系数。在锁定的状态下,即使重启也还处于锁定状态。如果没有处于锁定状态,那它会随机器一起启动。以方便于用户的随时使用。
------------------------------------------------------------------------
骛一狂屏锁王 V1.0 是2004年的一个小软件,拿到时压缩包中有内存注册机,应该是明码验证;因为在学习算法,就拿来分析了一下。
用 PEID 检测,是 Borland C++ 1999,无壳
试运行,右键点击任务栏图标时,菜单中有“注册”字样,打开后软件提示没有注册时有30次的使用限制,输入错误的注册码时会显示“注册码不正确”。
用OD查找这一字符串。找到后向上看看哪里跳来的,一步步找到算法地址。
- ……略部分代码
- 004024B4 |. 59 pop ecx
- 004024B5 |. 8BD8 mov ebx,eax ; 机器码长度入 ebx
- 004024B7 |. 33F6 xor esi,esi ; esi=0
- 004024B9 |. 8B85 48FFFFFF mov eax,[local.46] ; 机器码 ASCII "N01RD307BD06"
- 004024BF |. 8D4418 FF lea eax,dword ptr ds:[eax+ebx-1] ; 机器码最后一个字符
- 004024C3 |. 8B95 48FFFFFF mov edx,[local.46] ; ASCII "N01RD307BD06"
- 004024C9 |. EB 32 jmp short Lock.004024FD
- 004024CB |> BF 07000000 /mov edi,7 ; edi=7
- 004024D0 |. 8D4E 01 |lea ecx,dword ptr ds:[esi+1] ; ecx=esi+1
- 004024D3 |. 2BFE |sub edi,esi ; edi=edi-esi
- 004024D5 |. 46 |inc esi ; esi=esi+1
- 004024D6 |. 0FAFCF |imul ecx,edi ; ecx=ecx*edi
- 004024D9 |. 000A |add byte ptr ds:[edx],cl ; sn1=转为字符(逐位取机器码代码 + cl ),并保存在原代码所在位置
- 004024DB |. 8BCB |mov ecx,ebx ; ecx=ebx
- 004024DD |. 03C9 |add ecx,ecx ; ecx=ecx+ecx
- 004024DF |. 4B |dec ebx ; ebx=ebx-1
- 004024E0 |. 0208 |add cl,byte ptr ds:[eax] ; cl=cl+逐位倒取机器码(从后面)代码
- 004024E2 |. 80C1 02 |add cl,2 ; cl=cl+2
- 004024E5 |. 8808 |mov byte ptr ds:[eax],cl ; sn2=转为字符(cl ),并保存在原代码所在位置
- 004024E7 |. 8A0A |mov cl,byte ptr ds:[edx] ; 下面几步是将sn1和sn2所处位置交换
- 004024E9 |. 888D 47FFFFFF |mov byte ptr ss:[ebp-B9],cl
- 004024EF |. 8A08 |mov cl,byte ptr ds:[eax]
- 004024F1 |. 880A |mov byte ptr ds:[edx],cl
- 004024F3 |. 42 |inc edx ; edx=edx+1
- 004024F4 |. 8A8D 47FFFFFF |mov cl,byte ptr ss:[ebp-B9]
- 004024FA |. 8808 |mov byte ptr ds:[eax],cl
- 004024FC |. 48 |dec eax ; eax=eax-1
- 004024FD |> 8D4B FF lea ecx,dword ptr ds:[ebx-1] ; ecx=ebx-1
- 00402500 |. 3BF1 |cmp esi,ecx
- 00402502 |.^ 7C C7 \jl short Lock.004024CB ; 如果 esi < ecx 则循环
- 00402504 |. 66:C785 60FFFF>mov word ptr ss:[ebp-A0],2C
- 0040250D |. 8D45 F8 lea eax,[local.2]
- 00402510 |. 8B95 48FFFFFF mov edx,[local.46]
- ……略部分代码
复制代码
将所有sn1和sn2连起来就是注册码,因为是明码校验,只要用 OD 跟一遍就比较容易理解其算法了。
注册成功后,任务栏图标右键菜单显示“已注册”
------------------------------------------------------------------------
易语言注册机原码:
- .版本 2
- .子程序 _按钮1_被单击
- .局部变量 edi, 整数型
- .局部变量 ecx, 字节型
- .局部变量 esi, 整数型
- .局部变量 edx, 字节型
- .局部变量 ebx, 整数型
- .局部变量 sn1, 文本型
- .局部变量 sn2, 文本型
- .判断开始 (编辑框1.内容 ≠ “”)
- .默认
- 信息框 (“请输入机器码!”, 48, “错误”)
- 返回 ()
- .判断结束
- ebx = 取文本长度 (编辑框1.内容)
- .判断循环首 (esi < ebx - 1)
- edi = 7
- ecx = esi + 1
- edi = edi - esi
- esi = esi + 1
- ecx = ecx × edi
- edx = 取代码 (编辑框1.内容, esi) + ecx
- sn1 = 字符 (edx) + sn1
- ecx = ebx
- ecx = ecx + ecx
- ebx = ebx - 1
- ecx = ecx + 取代码 (编辑框1.内容, ebx + 1) + 2
- sn2 = sn2 + 字符 (ecx)
- .判断循环尾 ()
- 编辑框2.内容 = sn2 + sn1
复制代码
机器码: N01RD307BD06
注册码: PHZVI@?Sb@<U
注册码保存在
- [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Maqinuo]
- "Registry"="PHZVI@?Sb@<U"
复制代码
删除后又可试炼
------------------------------------------------------------------------
【版权声明】本文由 ZHOU2X 原创, 转载请注明作者并保持文章的完整, 谢谢!
[ 本帖最后由 ZHOU2X 于 2006-8-25 10:42 编辑 ] |
|