我输入的名字是:TAE! 注册码:78787878 下面是检查注册码个数的地方,和普通的检测方法不一样,瞧瞧:
:004011F5 6BC003 imul eax, 00000003 ;eax是假注册码的个数 :004011F8 C1E002 shl eax, 02 ;右移两位 :004011FB 05CD000000 add eax, 000000CD ;加上0xCD :00401200 8945FC mov dword ptr [ebp-04], eax ;保存 :00401203 817DFCA5010000 cmp dword ptr [ebp-04], 000001A5;和0x1A5比较 :0040120A 0F85BC000000 jne 004012CC ;不同就跳走了 :00401210 33C0 xor eax, eax ;清零 :00401212 8A4594 mov al, byte ptr [ebp-6C] ;依次取注册码字符 :00401215 84C0 test al, al ;是最后一个字符吗? :00401217 7413 je 0040122C ;是就跳走了!准备计算 :00401219 8D4D94 lea ecx, dword ptr [ebp-6C] ;指向注册码
根据上面的算法,可以得到这样一个方程式: (个数*3*2^2)+0xCD=0x1A5 (注:"2^2"指的是2的平方!) 既然知道了这个,求“个数”应该就非常简单了吧?用Windows的计算器简单的算一下, 0x1A5-0xCD=0xD8,用0xD8/2^2=0x36,最后用0x36/3=0x12,换算成10进制,那么就是18, 所以,根据上面的算法可以知道注册码必须是18个字符!那么输入787878787878787878
上一篇:软件狗,dongle
下一篇:文字处理大师 3.0 破解~~~附注册机算法分析
|