ZHOU2X 发表于 2006-8-25 10:40:31

骛一狂屏锁王 V1.0 算法分析

【破文标题】骛一狂屏锁王 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 48FFFFFFmov eax,               ;机器码 ASCII "N01RD307BD06"
004024BF|.8D4418 FF      lea eax,dword ptr ds:   ;机器码最后一个字符
004024C3|.8B95 48FFFFFFmov edx,               ;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:      ;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:,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:          ;cl=cl+逐位倒取机器码(从后面)代码
004024E2|.80C1 02      |add cl,2                        ;cl=cl+2
004024E5|.8808         |mov byte ptr ds:,cl          ;sn2=转为字符(cl ),并保存在原代码所在位置
004024E7|.8A0A         |mov cl,byte ptr ds:          ;下面几步是将sn1和sn2所处位置交换
004024E9|.888D 47FFFFFF|mov byte ptr ss:,cl
004024EF|.8A08         |mov cl,byte ptr ds:
004024F1|.880A         |mov byte ptr ds:,cl
004024F3|.42             |inc edx                           ;edx=edx+1
004024F4|.8A8D 47FFFFFF|mov cl,byte ptr ss:
004024FA|.8808         |mov byte ptr ds:,cl
004024FC|.48             |dec eax                           ;eax=eax-1
004024FD|>8D4B FF         lea ecx,dword ptr ds:      ;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:,2C
0040250D|.8D45 F8      lea eax,
00402510|.8B95 48FFFFFFmov edx,
……略部分代码

将所有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

注册码保存在


"Registry"="PHZVI@?Sb@<U"

删除后又可试炼
------------------------------------------------------------------------
【版权声明】本文由 ZHOU2X 原创, 转载请注明作者并保持文章的完整, 谢谢!

[ 本帖最后由 ZHOU2X 于 2006-8-25 10:42 编辑 ]

agang 发表于 2006-8-26 14:38:38

虽然软件老了点,尽管是明码比较,还是学习了,新手们说

0o2tf5s 发表于 2006-9-4 10:05:56

楼主写得很详细,谢谢
不过现在这样的软件真是越来越少了,不加壳,还是明码比较,
爱子难过呀,呵呵
页: [1]
查看完整版本: 骛一狂屏锁王 V1.0 算法分析