首页
社区
课程
招聘
Word文档资料管理系统算法详细分析
发表于: 2005-3-2 12:58 7573

Word文档资料管理系统算法详细分析

2005-3-2 12:58
7573

适合对象:想进阶的菜鸟,初次接触算法的同志。


使用工具: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直播授课

收藏
免费 7
支持
分享
最新回复 (3)
雪    币: 260
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
好贴!!支持你!
2005-3-2 13:01
0
雪    币: 260
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
没有看到图呀!
2005-3-2 13:19
0
雪    币: 260
活跃值: (81)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
怎么没有软件下载地址?你的机器码是什么?
2005-3-2 13:27
0
游客
登录 | 注册 方可回帖
返回