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条评论>>