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

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

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

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

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

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

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

您的位置:首页精文荟萃破解文章 → 网页特效咖啡豆V2.0算法分析

网页特效咖啡豆V2.0算法分析

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

 进入注册窗口后,可以输入注册用户名及注册码,系统自动还生成了一个注册申请码,我输入用户名:hoto ,注册码:78787878,然后按“注册认证”按钮,发现软件没有提示,那就从HMEMCPY这个万能断点开始吧。
打开TRW2000后,按CTRL+N后,下断点BPX HMEMCPY,然后按“注册认证”按钮,程序被断后,下命令PMODULE后,再按N次F12后就来到这里:

0187:0049A114 MOV EAX,[EBP-08]<--EAX指向用户名
0187:0049A117 LEA EDX,[EBP-04]
0187:0049A11A CALL 0040888C
0187:0049A11F CMP DWORD [EBP-04],BYTE +00<--有没有输入用户名,没有输入就会有提示
0187:0049A123 JNZ 0049A141
0187:0049A125 MOV EAX,0049A1F0
0187:0049A12A PUSH BYTE +10
0187:0049A12C MOV ECX,0049A208
0187:0049A131 MOV EDX,[004A5BAC]
0187:0049A137 MOV EDX,[EDX]
0187:0049A139 XCHG EAX,EDX
0187:0049A13A CALL 00459A34
0187:0049A13F JMP SHORT 0049A198
0187:0049A141 LEA EDX,[EBP-10]
0187:0049A144 MOV EAX,[EBX+0310]
0187:0049A14A CALL 00439784
0187:0049A14F MOV EAX,[EBP-10]<--指向输入的注册码
0187:0049A152 LEA EDX,[EBP-0C]
0187:0049A155 CALL 0040888C
0187:0049A15A CMP DWORD [EBP-0C],BYTE +00<--比较有没有输入注册码,没有输入就提示
0187:0049A15E JNZ 0049A17C
0187:0049A160 MOV EAX,0049A210
0187:0049A165 PUSH BYTE +10
0187:0049A167 MOV ECX,0049A208
0187:0049A16C MOV EDX,[004A5BAC]
0187:0049A172 MOV EDX,[EDX]
0187:0049A174 XCHG EAX,EDX
0187:0049A175 CALL 00459A34
0187:0049A17A JMP SHORT 0049A198
0187:0049A17C MOV EAX,EBX
0187:0049A17E CALL 0049A494<--这是关键CALL,内有注册码的计算过程.
0187:0049A183 TEST AL,AL<--如果返回0,就跳走,注册就失败
0187:0049A185 JZ 0049A190
0187:0049A187 MOV EAX,EBX
0187:0049A189 CALL 0049A224<--不跳走,就会提示注册成功.

--------------进入关键CALL后,分析注册算法-----------
0187:0049A494 PUSH EBP
0187:0049A495 MOV EBP,ESP
0187:0049A497 ADD ESP,BYTE -18
0187:0049A49A PUSH EBX
0187:0049A49B PUSH ESI
0187:0049A49C XOR EDX,EDX
0187:0049A49E MOV [EBP-18],EDX<--存输入注册码的变量,记 char *key;
0187:0049A4A1 MOV [EBP-14],EDX
0187:0049A4A4 MOV [EBP-0C],EDX<--存用户名的局部变量,记 char *name;
0187:0049A4A7 MOV [EBP-04],EAX
0187:0049A4AA XOR EAX,EAX
0187:0049A4AC PUSH EBP
0187:0049A4AD PUSH DWORD 0049A593
0187:0049A4B2 PUSH DWORD [FS:EAX]
0187:0049A4B5 MOV [FS:EAX],ESP
0187:0049A4B8 XOR EBX,EBX
0187:0049A4BA LEA EDX,[EBP-0C]
0187:0049A4BD MOV EAX,[EBP-04]
0187:0049A4C0 MOV EAX,[EAX+02FC]
0187:0049A4C6 CALL 00439784
0187:0049A4CB MOV EAX,[EBP-0C]<--取用户名地址到EAX
0187:0049A4CE CALL 004046BC<--取用户名的长度
0187:0049A4D3 MOV ESI,EAX
0187:0049A4D5 TEST ESI,ESI
0187:0049A4D7 JNG 0049A511
0187:0049A4D9 MOV DWORD [EBP-10],01
0187:0049A4E0 LEA EAX,[EBP-14]
0187:0049A4E3 PUSH EAX
0187:0049A4E4 MOV ECX,01
0187:0049A4E9 MOV EDX,[EBP-10]
0187:0049A4EC MOV EAX,[EBP-0C]
0187:0049A4EF CALL 00404914
0187:0049A4F4 MOV EAX,[EBP-14]
0187:0049A4F7 CALL 004048B4
0187:0049A4FC MOV AL,[EAX]<--取出用户名的一个字节,我输入"hoto",第一次就取出'h'
0187:0049A4FE AND EAX,FF
0187:0049A503 ADD EBX,EAX
0187:0049A505 XOR EBX,000BFA05 <--上面3句是对取出的字节进行变换.
0187:0049A50B INC DWORD [EBP-10]
0187:0049A50E DEC ESI
0187:0049A50F JNZ 0049A4E0<--所有的用户名都处理完了吗?
0187:0049A511 MOV EAX,[004A6D38]<--取出注册申请码(即机器码)
0187:0049A516 MOV EDX,EAX
0187:0049A518 SHL EAX,04
0187:0049A51B ADD EAX,EDX<--对注册申请码进入变换
0187:0049A51D ADD EBX,EAX<--将注册申请码变换后累加到用户名的处理值上
0187:0049A51F ADD EBX,0013A3D4
0187:0049A525 XOR EBX,0059ED8D<--再进入一次处理
0187:0049A52B LEA EDX,[EBP-18]
0187:0049A52E MOV EAX,[EBP-04]
0187:0049A531 MOV EAX,[EAX+0310]
0187:0049A537 CALL 00439784
0187:0049A53C MOV EAX,[EBP-18]<--取出注册码,即"78787878"
0187:0049A53F CALL 00408AF0<--此CALL将注册码转化DWORD值.
0187:0049A544 MOV ESI,EBX
0187:0049A546 XOR ESI,00C473240<--将用户名处理的值再一次变化,得到真正的注册码,(如果将此值转化为十进制字符串形式,就是注册码)
0187:0049A54C CMP EAX,ESI<--比较两个注册码
0187:0049A54E JNZ 0049A569<--不相等就会返回0,注册失败
0187:0049A550 MOV BYTE [EBP-05],01<--如果相等就返回1,注册成功
0187:0049A554 MOV EAX,004A6D30
0187:0049A559 MOV EDX,[EBP-0C]
0187:0049A55C CALL 00404458
0187:0049A561 MOV [004A6D34],ESI
0187:0049A567 JMP SHORT 0049A56D
0187:0049A569 MOV BYTE [EBP-05],00
0187:0049A56D XOR EAX,EAX
0187:0049A56F POP EDX
0187:0049A570 POP ECX
0187:0049A571 POP ECX
0187:0049A572 MOV [FS:EAX],EDX
0187:0049A575 PUSH DWORD 0049A59A
0187:0049A57A LEA EAX,[EBP-18]
0187:0049A57D CALL 00404404
0187:0049A582 LEA EAX,[EBP-14]
0187:0049A585 CALL 00404404
0187:0049A58A LEA EAX,[EBP-0C]
0187:0049A58D CALL 00404404
0187:0049A592 RET

注册成功后,软件在注册表中写入信息
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\DiskMenu]

------------------VC 6.0 注册机 -------------------
this->UpdateData(true);
if(this->m_input == "")
{
this->m_output = "请输入注册用户名";
this->m_edit2.SetWindowText(this->m_output);
return;
}
if(this->m_input2 == "")
{
this->m_output = "请输入注册申请码";
this->m_edit2.SetWindowText(this->m_output);
return;
}
//this->m_input 是输入的用户名,this->m_input1 是机器码,this->m_output 是输出用的注册码。
char name[256];
unsigned long reg,reg1;
int i,len;
strcpy(name,this->m_input);
len = strlen(name);
reg = 0;
reg1 = atoi(this->m_input2);
for(i=0;i {
reg += name[i];
reg = reg ^ 0xBFA05;
}

reg += reg1 +(reg1 <<4);
reg += 0x13A3D4;
reg = reg ^ 0x59ED8D;
reg = reg ^ 0xC47324;
this->m_output.Format("%lu",reg);
---------------------------------------------------------

    
    
     
    
    
     

相关阅读 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破解如何给软件脱壳基础教程