适合对象:想进阶的菜鸟,初次接触算法的同志。
使用工具:ollydbg,vc++(编写注册机)
个人觉得算法分析有2个难点
1.定位-那里是关键算法
2.算法的复杂程度
对于第1点,我们发现F8走过0059A1B9的call之后出现了注册码,而此前没有看到,故推测此call为
关键算法call。这样就定位了。
对于第2点就要慢慢看代码了。
暴破Word文档资料管理系统比较简单,这里节省篇幅就不说了(话外:如果你还不会暴破,请跳过这篇文章)
废话少说了,直接开始分析代码:
0059A199 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; eax指向输入的注册码
0059A19C |. 50 PUSH EAX ; 保存指向注册码的指针
0059A19D |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
0059A1A0 |. A1 A06F5A00 MOV EAX,DWORD PTR DS:[5A6FA0]
0059A1A5 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
0059A1A7 |. E8 FC0B0000 CALL DMS.0059ADA8 ; 取机器码
0059A1AC |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C] ; edx指向机器码
0059A1AF |. 8D4D F8 LEA ECX,DWORD PTR SS:[EBP-8]
0059A1B2 |. A1 A06F5A00 MOV EAX,DWORD PTR DS:[5A6FA0]
0059A1B7 |. 8B00 MOV EAX,DWORD PTR DS:[EAX]
0059A1B9 |. E8 B20C0000 CALL DMS.0059AE70 ; 产生注册码,随后进入分析
0059A1BE |. 8B55 F8 MOV EDX,DWORD PTR SS:[EBP-8]
0059A1C1 |. 58 POP EAX
0059A1C2 |. E8 A5ABE6FF CALL DMS.00404D6C ; 关键比较call
0059A1C7 |. 0F85 B1000000 JNZ DMS.0059A27E ; 跳到注册码出错处理部分!
进入0059A1B9处的CALL DMS.0059AE70
0059AE91 |. BB 9F860100 MOV EBX,1869F ; 注意这里MOV EBX,1869F, 1869F是固定的
0059AE96 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0059AE99 |. E8 829DE6FF CALL DMS.00404C20 ; 返回注册码长度
0059AE9E |. 85C0 TEST EAX,EAX ; 嘿嘿,没有输入 ?
0059AEA0 |. 7E 19 JLE SHORT DMS.0059AEBB ; 跳就牺牲了
0059AEA2 |. BA 01000000 MOV EDX,1 ; 初始化
0059AEA7 |> 8B4D FC /MOV ECX,DWORD PTR SS:[EBP-4] ; ecx指向机器码
0059AEAA |. 0FB64C11 FF |MOVZX ECX,BYTE PTR DS:[ECX+EDX-1] ; 取一位机器码的asc码
0059AEAF |. 03D9 |ADD EBX,ECX ; 逐位加上机器码的asc码
0059AEB1 |. 81C3 06020000 |ADD EBX,206 ; 求和(加上0x206),结果保存在EBX
0059AEB7 |. 42 |INC EDX ; 指向下一位
0059AEB8 |. 48 |DEC EAX ; 长度减1,即循环次数减1
0059AEB9 |.^ 75 EC \JNZ SHORT DMS.0059AEA7 ; 还没有完?继续循环
0059AEBB |> 8BD6 MOV EDX,ESI
0059AEBD |. 8BC3 MOV EAX,EBX ; 保存结果
以下我是用c++写的注册机,仅供研究之用,请勿非法传播,研究完,请删除。
请支持共享软件。
//Word文档资料管理系统 注册机
//vc++ 6.0, windows xp sp2编译通过
#include
using std::cout;
using std::cin;
using std::endl;
int main()
{
char code[20];
cout << "please input the code: ";
cin >> code;
int sum = 0x1869f; //对应程序的 MOV EBX,1869F
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课