看见有朋友分析了一下XXXXX3000英雄版的注册码的比较过程的分析,就想也分析一下,写出它的注册码的生成的算法过程,也写了一个注册机。 所用工具:TRW2000,W32DASM
Referenced by a CALL at Addresses: :00401C93 , :00401EF9
:00402840 83EC20 sub esp, 00000020 :00402843 56 push esi :00402844 57 push edi :00402845 B908000000 mov ecx, 00000008 :0040284A 33C0 xor eax, eax :0040284C 8D7C2408 lea edi, dWord ptr [esp+08]<----存入第一组注册码的局部变量,以下记为reg1,是一个DWORD类型,也可以看成4个字符形式。 :00402850 F3 repz :00402851 AB stosd :00402852 8B44242C mov eax, dword ptr [esp+2C] <----得到用户名的地址 :00402856 50 push eax <----将用户名作为参数传入 :00402857 E8B4010000 call 00402A10 <----此CALL(记为CALL 1)内将用户名进行变化后在EAX以长整数返回,按F8进入. :0040285C 83C404 add esp, 00000004 :0040285F 89442408 mov dword ptr [esp+08], eax <----将返回的值放入reg1中 :00402863 33F6 xor esi, esi
* Referenced by a (U)nconditional or (C)onditional Jump at Address: :00402888(C)
:00402865 0FBE443408 movsx eax, byte ptr [esp+esi+08] :0040286A 83F841 cmp eax, 00000041 :0040286D 7C08 jl 00402877 :0040286F 83F85A cmp eax, 0000005A :00402872 7F03 jg 00402877 :00402874 83C020 add eax, 00000020 <---- 如果是大写的,则变为小写。
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses: :0040286D(C), :00402872(C)
:00402877 50 push eax :00402878 E863020000 call 00402AE0 <---- 将EAX 转化为一个字符。(记为CALL 3) :0040287D 83C404 add esp, 00000004 :00402880 88443408 mov byte ptr [esp+esi+08], <----保存这个字符到reg1中。
上一篇:法律文书、合同样本库 5.10破解手记--算法分析
下一篇:黑马多媒体电子教室精简版简单算法分析
|