文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页精文荟萃破解文章 → Directory Scanner v1.5 注册算法分析

Directory Scanner v1.5 注册算法分析

时间:2004/10/15 0:51:00来源:本站整理作者:蓝点我要评论(0)

 


 


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 文件中。

最后特别感谢小楼兄!

    
    
     
    
    
     

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 去除winrar注册框方法

最新文章 比特币病毒怎么破解 比去除winrar注册框方法 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据

人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程