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破解如何给软件脱壳基础教程
查看所有0条评论>>