• 标 题:分析破解数字五笔3.0 (2千字)
  • 作 者:★★风尘★★
  • 时 间:2002-4-17 11:04:19
  • 链 接:http://bbs.pediy.com

分析破解数字五笔3.0 

软件简介:这是一个五笔输入法,提供汉字的五笔输入。
软件下载:http://www.szwb.com
破解工具:TRW 2000
破解过程:
    首先要注意的是,因为某些程序的特殊性,TRW并不能够直接载入这些程序然后再进行跟踪。但TRW并不是一定要载入程序才能够跟踪该程序。这个事例就是这样的。
(1)先运行TRW,然后运行数字五笔,提示注册是,填入注册码“12345678”(先随便填)。
(2)按下CTR+N回到TRW中。在命令行,
    输入:bpx hmemcpy    回车      (用内存拷贝函数给它下断点。)
    按下:CTR+N                    (返回数字五笔3.0注册提示框,进行跟踪函数的调用)
(4)按下注册面版“OK”键。
    在命令行,
    输入:bd            回车      (禁止断点)
然后按F10单步从第一条执行起。(这里不能用pmodule命令直接跳到数字五笔3.0程序的领空,是因为开始时我们并不是直接载入数字五笔3.0,然后再进行跟踪的。)
(5)来到SZWB程序领空后,大家会看到一段如下的汇篇代码:
017F:014E6E0B 8D542428        LEA      EDX,[ESP+28]  (把你填入的注册码放到寄存器DX中)
017F:014E6E0F 52              PUSH    EDX            (放入栈中)
017F:014E6E10 E8238A0000      CALL    014EF838   
017F:014E6E15 8B0D08A74F01    MOV      ECX,[014FA708] (把你的机器码放到放到寄存器CX中)
017F:014E6E1B A30CA74F01      MOV      [014FA70C],EAX
017F:014E6E20 351A968DE5      XOR      EAX,E58D961A  (把填入的注册码与常数A进行异或运算)
017F:014E6E25 81F1F4EDDCAE    XOR      ECX,AEDCEDF4  (把你的机器码与常数B进行异或运算)
017F:014E6E2B 83C404          ADD      ESP,BYTE +04
017F:014E6E2E 3BC1            CMP      EAX,ECX        (比较两个表达式的值,来做判断条件)
017F:014E6E30 0F85C4000000    JNZ      NEAR 014E6EFA  (相同则不跳)
017F:014E6E36 6A00            PUSH    BYTE +00
017F:014E6E38 68748E4F01      PUSH    DWORD 014F8E74
017F:014E6E3D 68608E4F01      PUSH    DWORD 014F8E60
017F:014E6E42 6A00            PUSH    BYTE +00
    到这里,大家因该知道注册码了吧!
我的机器码是:-1547960322;通过运算得到的注册码是:3907683344。
    本人用VC写的注册机源代码如下:
#include <iostream.h>
void main()
{
unsigned long int a,b,c;
b=1263631342;
cout<<"请输入你的机器码! "<<endl;
cin>>a;
c=b^a;
cout<<"你的注册码是:"<<c<<endl;
cout<<"谢谢使用 !"<<'\n'<<endl;
}
                        菜鸟之作,让高手见笑了!
  (这是作者第二次写破解文章,作者学破解时间也不长,不足处还望各位朋友给予指导和帮助,
      在此,作者先先谢谢大家了!我的Emial:tianrongfeng@yahoo.com  我的QQ号码:32069691)


                                                                              风尘(长沙)
                                                                            2002年4月16日