- UID
- 1481
注册时间2005-5-8
阅读权限20
最后登录1970-1-1
以武会友
TA的每日心情 | 衰 2024-4-11 22:10 |
---|
签到天数: 53 天 [LV.5]常住居民I
|
【破文作者】 rdsnow[PYG]
【 E-mail 】 [email protected]
【文章题目】 文件安全专家 V5.9 的简单注册
【软件名称】 文件安全专家5.9
【下载地址】 http://www.adragon.net 或 http://www.ixmx.net/soft/15665.htm
----------------------------------------------------------------------------------------------
【加密方式】 序列号注册
【破解工具】 FLYOD V1.10
【软件限制】 功能限制
【破解平台】 WinXP SP2
----------------------------------------------------------------------------------------------
【软件简介】
文件安全专家基本功能如下:1. 禁止复制文件,被保护的文件不能被复制到任何存储设备上,更有效的保护您的机密文件;2. 禁止读文件,充分保护机密文件,被文件防火墙保护的文件内容不能被Windows和其它任何软件读取;3. 禁止文件被修改,被保护的文件不能被Windows和其它任何软件修改;4. 禁止删除文件,被保护的文件不能被Windows和其它任何软件删除;5. 硬盘写保护,有效避免恶意病毒和黑客软件的破坏,文件防火墙保护硬盘不被改写和破坏;6. 硬盘资料禁止复制和读取,保护机密文件不被复制和非法传播;7. 隐藏文件,被隐藏的文件不能被Windows和其它任何软件找到;8. 可执行代码的保护功能,您可以自定义可以运行的程序,对于有害和可疑软件文件防火墙进行过滤,有效禁止其运行。
【文章简介】
程序VC++编写,无壳,采用了F(用户名)=F(注册码)的注册方法
----------------------------------------------------------------------------------------------
【破解过程】
………………
00410887 . 8BC8 MOV ECX,EAX
00410889 . E8 96110300 CALL FileSafe.00441A24 ; 取出用户名
0041088E . 8D4C24 0C LEA ECX,DWORD PTR SS:[ESP+C]
00410892 . 51 PUSH ECX
00410893 . 68 102B0000 PUSH 2B10
00410898 . 8BCD MOV ECX,EBP
0041089A . E8 A5370300 CALL FileSafe.00444044
0041089F . 8BC8 MOV ECX,EAX
004108A1 . E8 7E110300 CALL FileSafe.00441A24 ; 取出注册码
004108A6 . 8B5424 08 MOV EDX,DWORD PTR SS:[ESP+8]
004108AA . 8B42 F8 MOV EAX,DWORD PTR DS:[EDX-8]
004108AD . 85C0 TEST EAX,EAX
004108AF . 0F84 CE000000 JE FileSafe.00410983 ; 检查用户名是否为空
004108B5 . 8B4424 0C MOV EAX,DWORD PTR SS:[ESP+C]
004108B9 . 8B48 F8 MOV ECX,DWORD PTR DS:[EAX-8]
004108BC . 85C9 TEST ECX,ECX
004108BE . 0F84 BF000000 JE FileSafe.00410983 ; 检查注册码是否为空
004108C4 . 57 PUSH EDI
004108C5 . 68 FF000000 PUSH 0FF
004108CA . 8D4C24 10 LEA ECX,DWORD PTR SS:[ESP+10]
004108CE . E8 1F000300 CALL FileSafe.004408F2
004108D3 . 8BD0 MOV EDX,EAX
004108D5 . 83C9 FF OR ECX,FFFFFFFF
004108D8 . 8BFA MOV EDI,EDX
004108DA . 33C0 XOR EAX,EAX
004108DC . F2:AE REPNE SCAS BYTE PTR ES:[EDI]
004108DE . F7D1 NOT ECX
004108E0 . 49 DEC ECX
004108E1 . 49 DEC ECX
004108E2 . 74 10 JE SHORT FileSafe.004108F4
004108E4 > 0FBE0411 MOVSX EAX,BYTE PTR DS:[ECX+EDX]
004108E8 . 49 DEC ECX
004108E9 . 8D0480 LEA EAX,DWORD PTR DS:[EAX+EAX*4]
004108EC . 8D0480 LEA EAX,DWORD PTR DS:[EAX+EAX*4]
004108EF . 8D3486 LEA ESI,DWORD PTR DS:[ESI+EAX*4]
004108F2 .^ 75 F0 JNZ SHORT FileSafe.004108E4 ; 循环,用户名除第一位外每一位字符的ASC*100,求和
004108F4 > 6A FF PUSH -1
004108F6 . 8D4C24 10 LEA ECX,DWORD PTR SS:[ESP+10]
004108FA . E8 42000300 CALL FileSafe.00440941
004108FF . 68 FF000000 PUSH 0FF
00410904 . 8D4C24 14 LEA ECX,DWORD PTR SS:[ESP+14]
00410908 . 81CE 19018019 OR ESI,19800119 ; 将刚才求得的和与0x19800119进行或运算,完成 F(用户名)
0041090E . E8 DFFF0200 CALL FileSafe.004408F2
00410913 . 6A 0A PUSH 0A
00410915 . 6A 00 PUSH 0
00410917 . 50 PUSH EAX
00410918 . E8 BBAB0100 CALL FileSafe.0042B4D8 ; 注册码转换为十六进制,完成 F(注册码)
0041091D . 83C4 0C ADD ESP,0C
00410920 . 8D4C24 10 LEA ECX,DWORD PTR SS:[ESP+10]
00410924 . 8BF8 MOV EDI,EAX
00410926 . 6A FF PUSH -1
00410928 . E8 14000300 CALL FileSafe.00440941
0041092D . 3BF7 CMP ESI,EDI ; 将 F(用户名) 与 F(注册码) 比较
0041092F . 5F POP EDI
00410930 . 6A 40 PUSH 40
00410932 . 68 ACB94600 PUSH FileSafe.0046B9AC
00410937 . 74 15 JE SHORT FileSafe.0041094E ; 相等就跳到"注册成功"
00410939 . 68 9CB94600 PUSH FileSafe.0046B99C ; 字符串"注册码不正确"
0041093E . 8BCD MOV ECX,EBP
00410940 . E8 701E0300 CALL FileSafe.004427B5
00410945 . 8BCD MOV ECX,EBP
00410947 . E8 8B480300 CALL FileSafe.004451D7
0041094C . EB 48 JMP SHORT FileSafe.00410996
0041094E > 68 90B94600 PUSH FileSafe.0046B990 ; 字符串"注册成功"
00410953 . 8BCD MOV ECX,EBP
00410955 . E8 5B1E0300 CALL FileSafe.004427B5
----------------------------------------------------------------------------------------------
【破解心得】
奇怪,这个程序是Anti-OD的,用附加程序会自动关闭自己以及OD,反而直接载入能正常调试,不知道作者是怎么想的;注册方法也不难,那用户名除第一位外的字符ASC相加求和,乘以100,再跟0x19800119(19800119怎么像生日,呵呵!)进行或运算,结果转化为十进制,就得到注册码了,贴上偶写的注册机,偶不会编程,第一次用VC++写代码,高手看了可不要吐。
void CMy001Dlg::OnOK()
{
// TODO: Add extra validation here
//CDialog::OnOK();
UpdateData(true);
char cName[30];
int i,nRegcode=0;
if (m_Edit1==""){
MessageBox("请输入你的用户名","提示",MB_OK);
return;
}
strcpy(cName,m_Edit1);
for (i=1;i<m_Edit1.GetLength();i++) nRegcode += cName[ i];
nRegcode *= 100;
nRegcode |= 0x19800119;
m_Edit2=nRegcode;
UpdateData(false);
}
注册机就不发了,高手给提提意见.
----------------------------------------------------------------------------------------------
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
----------------------------------------------------------------------------------------------
文章写于2005-4-25 13:24:26
[ Last edited by rdsnow on 2005-6-11 at 05:26 PM ] |
|