电脑老爸http://fjmcc.newhua.com/down/PcLaoba.zip 用OD载入F9运行 来到注册界面随便输入个序列号 利用F12暂停法 找到弹出窗口的CALL下F2断点然后运行 再次F9 输入序列号 这时断在刚刚下F2断点的位置一路F8返回到程序的自身 向上拉发现当前版本:高级版再向上拉发现当前版本:标准版 004B12DB /E9 1C060000 jmp 004B18FC 一个好大JMP 可能是注册成功后的JMP 所以从004B12E0 68 04000080 push 0x80000004开始有可能是高级版的算法 经过分析 我这注册码为1234567|-2141962095 004B12E0 68 04000080 push 0x80000004 004B12E5 6A 00 push 0x0 004B12E7 A1 90032402 mov eax,dword ptrds:[0x2240390] 004B12EC 85C0 test eax,eax 取|后面的 -2141962095 004B12EE 75 05 jnz short 004B12F5 004B12F0 B8 8C384000 mov eax,0040388C 004B12F5 50 push eax 004B12F6 68 01000000 push 0x1 004B12FB BB 64010000 mov ebx,0x164 004B1300 E8 FC9A0100 call 004CAE01 004B1305 83C4 10 add esp,0x10 004B1308 8945 F8 mov dword ptrss:[ebp-0x8],eax 004B130B 8955 FC mov dword ptrss:[ebp-0x4],edx 004B130E DD45 F8 fld qword ptrss:[ebp-0x8] 004B1311 DC0D E0C74700 fmul qword ptrds:[0x47C7E0] -2141962095*7 004B1317 DD5D F0 fstp qword ptrss:[ebp-0x10] 004B131A DD45 F0 fld qword ptrss:[ebp-0x10] 004B131D E8 D52AFFFF call 004A3DF7 浮点数转16放到EAX 004B1322 68 01030080 push 0x80000301 004B1327 6A 00 push 0x0 004B1329 50 push eax 004B132A 68 01000000 push 0x1 004B132F BB D4010000 mov ebx,0x1D4 004B1334 E8 C89A0100 call 004CAE01 把eax转换成字符串 004B1339 83C4 10 add esp,0x10 004B133C 8945 EC mov dword ptrss:[ebp-0x14],eax 004B133F 68 01030080 push 0x80000301 004B1344 6A 00 push 0x0 004B1346 68 05000000 push 0x5 004B134B 68 04000080 push 0x80000004 004B1350 6A 00 push 0x0 004B1352 8B45 EC mov eax,dword ptrss:[ebp-0x14] 004B1355 85C0 test eax,eax 004B1357 75 05 jnz short 004B135E 004B1359 B8 8C384000 mov eax,0040388C 004B135E 50 push eax 004B135F 68 02000000 push 0x2 004B1364 BB 38010000 mov ebx,0x138 004B1369 E8 939A0100 call 004CAE01 取字符串后5位 004B136E 83C4 1C add esp,0x1C 004B1371 8945 E8 mov dword ptrss:[ebp-0x18],eax 004B1374 8B5D EC mov ebx,dword ptrss:[ebp-0x14] 004B1377 85DB test ebx,ebx
后面的算法和上面一样只是 004B1311 DC0D E0C74700 fmul qword ptrds:[0x47C7E0] -2141962095*7 后面分是乘1 除8 乘11 乘10 然后转16进 取后5位
算法大约是
python 小脚本 [Bash shell] 纯文本查看 复制代码
def Number(Code,Multiple):
if(Multiple>0):
number=hex(int(Code*Multiple) & 0xffffffff)
else:
number=hex(int(Code/-Multiple) & 0xffffffff)
return(str(number[-5:]))
Code=input("Code:")
Code2=int(Code.split('|')[1])
print((Number(Code2,7)+"-"+Number(Code2,1)+"-"+Number(Code2,-8)+"-"+Number(Code2,11)+"-"+Number(Code2,10)).upper()
)
Code:1234567|-2141962095
DC3F7-44091-A8813-EC63B-A85AA
本人技术不高,希望能加入90sec交流 更加希望能够认识更多的朋友
===================================== 管理给予通过,转正成功。 管理05
|