老文章档案 · 2003 年

Directory Scanner v1.5 注册算法分析

赢政天下 [WINZHENG.COM] · 网络学院 · 2003-06-22 · 作者:炎之川 人气: · 出处:嬴政天下整理收藏)

Directory Scanner v1.5 注册算法分析

破解目标:Directory Scanner v1.5

官方主页:http://dekasoftware.mastak.com/

软件简介:通过设置过滤掩码,让你快速查找电脑中的文件

下载地址:http://dekasoftware.mastak.com/dirscan.zip

使用工具:W32Dasm、Ollydbg、Windows 自带的计算器、32bit Calculator 1.6 by cybult

作者:炎之川

时间:2003.4.2

主页:http://skipli.yeah.net/

声明: 此文仅用于学习及交流,若要转载请保持文章完整。

Delphi 写的软件,也没有什么干扰分析的东西,W32Dasm 反汇编后可以在串式参考中找到注册成功及失败的提示,算法也比较简单。

简单分析后用 Ollydbg 载入程序,在 43D538 处下断点,然后 Ctrl+F2 重新开始,F9 运行程序,在注册对话框中填入注册名和假注册码,我填入:

Name: lovefire

S/N: 78787878

按 Register,被 Ollydbg 断下:

(; 后是 Ollydbg 所分析的内容,// 后是我加的注释)

0043D538 /. 55 PUSH EBP //停在这里

0043D539 |. 8BEC MOV EBP,ESP

0043D53B |. 6A 00 PUSH 0

0043D53D |. 6A 00 PUSH 0

0043D53F |. 53 PUSH EBX

0043D540 |. 56 PUSH ESI

0043D541 |. 57 PUSH EDI

0043D542 |. 8BF8 MOV EDI,EAX

0043D544 |. 33C0 XOR EAX,EAX

0043D546 |. 55 PUSH EBP

0043D547 |. 68 3BD64300 PUSH DirScan.0043D63B

0043D54C |. 64:FF30 PUSH DWORD PTR FS:[EAX]

0043D54F |. 64:8920 MOV DWORD PTR FS:[EAX],ESP

0043D552 |. 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]

0043D555 |. 8B87 E0010000 MOV EAX,DWORD PTR DS:[EDI+1E0]

0043D55B |. E8 20E4FDFF CALL DirScan.0041B980 //取得注册名

0043D560 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] //注册名放入 eax

0043D563 |. E8 2465FCFF CALL DirScan.00403A8C //比较是否已输入注册名

0043D568 |. 33DB XOR EBX,EBX

0043D56A |. 8BF0 MOV ESI,EAX //eax 中是注册名

0043D56C |. 85F6 TEST ESI,ESI //用户名输入了么?

0043D56E |. 7E 22 JLE SHORT DirScan.0043D592 //没有输入就886啦~~~

0043D570 |. B9 01000000 MOV ECX,1 //ecx 置1,作为记数器

//算法开始

0043D575 |> 69C1 15CD5B07 /IMUL EAX,ECX,75BCD15 //eax = ecx*75BCD15,ecx 是记数器

0043D57B |. 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4] //注册名送 edx

0043D57E |. 0FB6540A FF |MOVZX EDX,BYTE PTR DS:[EDX+ECX-1] //逐位取注册名的字符

0043D583 |. F7EA |IMUL EDX //eax*edx,得数放入eax,溢出值放入edx

0043D585 |. 03C3 |ADD EAX,EBX //eax=eax+ebx,此处第一次循环时ebx=0

0043D587 |. 99 |CDQ //edx 清零

0043D588 |. 33C2 |XOR EAX,EDX //eax异或edx,得数放入eax

0043D58A |. 2BC2 |SUB EAX,EDX //eax=eax-edx,edx中是上面乘法运算的溢出值

0043D58C |. 8BD8 |MOV EBX,EAX //ebx=eax

0043D58E |. 41 |INC ECX //ecx+1,即记数器+1

0043D58F |. 4E |DEC ESI //esi-1

0043D590 |.^75 E3 \JNZ SHORT DirScan.0043D575 //跳回去继续循环

//算法结束,eax 中保存的就是注册码的16进制值,转换为10进制即是注册码

0043D592 |> 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]

0043D595 |. 8B87 E8010000 MOV EAX,DWORD PTR DS:[EDI+1E8]

0043D59B |. E8 E0E3FDFF CALL DirScan.0041B980

0043D5A0 |. 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] //取假码

0043D5A3 |. 33D2 XOR EDX,EDX

0043D5A5 |. E8 3294FCFF CALL DirScan.004069DC

0043D5AA |. 3BD8 CMP EBX,EAX //比较真假注册码

0043D5AC |. 75 4D JNZ SHORT DirScan.0043D5FB //不同则注册失败,若此处改为 jne 0043D5AE,不管注册码是否正确都写入 dirscan.ini 文件,即可爆破(软件没有在启动的时候再次验证注册码有效性)

0043D5AE |. A1 E8FA4300 MOV EAX,DWORD PTR DS:[43FAE8]

0043D5B3 |. 8918 MOV DWORD PTR DS:[EAX],EBX

0043D5B5 |. B9 54D64300 MOV ECX,DirScan.0043D654 ; ASCII "dirscan.ini"

0043D5BA |. B2 01 MOV DL,1

0043D5BC |. A1 644F4300 MOV EAX,DWORD PTR DS:[434F64]

0043D5C1 |. E8 FA79FFFF CALL DirScan.00434FC0

0043D5C6 |. 8BF0 MOV ESI,EAX

0043D5C8 |. 53 PUSH EBX

0043D5C9 |. B9 68D64300 MOV ECX,DirScan.0043D668 ; ASCII "Serial"

0043D5CE |. BA 78D64300 MOV EDX,DirScan.0043D678 ; ASCII "Register" //注册成功就将信息写入 dirscan.ini 中

0043D5D3 |. 8BC6 MOV EAX,ESI

0043D5D5 |. E8 DE7BFFFF CALL DirScan.004351B8

0043D5DA |. 8BC6 MOV EAX,ESI

0043D5DC |. E8 5B57FCFF CALL DirScan.00402D3C

0043D5E1 |. 6A 40 PUSH 40

0043D5E3 |. B9 84D64300 MOV ECX,DirScan.0043D684 ; ASCII "Directory scanner"

0043D5E8 |. BA 98D64300 MOV EDX,DirScan.0043D698 ; ASCII "Thank you for registering Directory Scanner!" //注册成功

0043D5ED |. A1 A4FB4300 MOV EAX,DWORD PTR DS:[43FBA4]

0043D5F2 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]

0043D5F4 |. E8 53DFFEFF CALL DirScan.0042B54C

0043D5F9 |. EB 18 JMP SHORT DirScan.0043D613

0043D5FB |> 6A 10 PUSH 10

0043D5FD |. B9 84D64300 MOV ECX,DirScan.0043D684 ; ASCII "Directory scanner"

0043D602 |. BA C8D64300 MOV EDX,DirScan.0043D6C8 ; ASCII "Wrong Serial Number. Register aborted!" //注册失败

0043D607 |. A1 A4FB4300 MOV EAX,DWORD PTR DS:[43FBA4]

0043D60C |. 8B00 MOV EAX,DWORD PTR DS:[EAX]

0043D60E |. E8 39DFFEFF CALL DirScan.0042B54C

0043D613 |> A1 68074400 MOV EAX,DWORD PTR DS:[440768]

0043D618 |. E8 5BBDFEFF CALL DirScan.00429378

0043D61D |. 33C0 XOR EAX,EAX

0043D61F |. 5A POP EDX

0043D620 |. 59 POP ECX

0043D621 |. 59 POP ECX

0043D622 |. 64:8910 MOV DWORD PTR FS:[EAX],EDX

0043D625 |. 68 42D64300 PUSH DirScan.0043D642

0043D62A |> 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8]

0043D62D |. E8 DE61FCFF CALL DirScan.00403810

0043D632 |. 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]

0043D635 |. E8 D661FCFF CALL DirScan.00403810

0043D63A \. C3 RETN

具体算法:

1、具体循环次数乘预设的数75BCD15,再乘逐位取得的注册名的ASCII值,值放入eax,溢出值放入edx,最后加上ebx的值,ebx初始值为0,第二次循环的值由第一次循环所得值决定,之后累加;

2、edx双字扩展(清零)之后,(eax*edx)-edx,得出的值放入 ebx,供下次循环使用;

3、循环完成之后,eax中存放的值即注册码的16进制数,转换为10进制即为注册码。

一组可用的注册码:

Name: lovefire

S/N: 1870109538

注册成功后,注册信息写入 windows 安装目录下的 dirscan.ini 文件中。

最后特别感谢小楼兄! (出处:嬴政天下整理收藏)

相关文章:

·ASProtect的加密算法初步分析

·MD5算法研究

·Active Ebook Compiler的注册算法

·语音界面2.0算法分析及注册机源码!

·简单算法——小护士 V1.2

·侠客系统修改器1.21破解手记--算法分析

·中文拨号上网计时计费器 V4.12注册算法分析

·加密算法之RSA算法

·加密算法之DES算法

·加密算法之ElGamal算法

相关软件:

·胜新通用人事工资管理系统 V5.01注册码算法

·胜新出纳-支票打印软件 V4.0X 的注册码算法

·胜新现代办公百宝箱 V5.01 的注册码算法

·胜新信函宝典-信封打印软件 V2.02 注册码的算法

·胜新通用企业计划管理系统的注册码算法

·共享软件加密算法库 V3.0

·操作系统内存分配银行家算法模拟系统 XP

→ 特别推荐

→ 热点TOP10

关于我们 |

帮助(?)

| 广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright © 1999-2003

winzheng.com All Rights Reserved.

繁体版:由华琦数码技术提供

Powered

by:MeSky.Net

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史