本帖最后由 H夜 于 2019-6-6 18:21 编辑
软件下载地址:http://www.crsky.com/soft/32113.html
使用工具:OD,吾爱破解注册机生成器V1.01D
首先OD载入程序搜索字符串,搜索“注册成功”字样
定位到:
[Asm] 纯文本查看 复制代码 006A81C9 . E8 466DDAFF call 0044EF14
006A81CE . 8BC3 mov eax,ebx
006A81D0 . E8 F7BAD5FF call 00403CCC
006A81D5 . 6A 40 push 0x40
006A81D7 . 68 B0826A00 push 006A82B0 ; 软件注册
006A81DC . 68 BC826A00 push 006A82BC ; 注册成功,本程序所有功能限制下次启动时将被自动解除,欢迎您成为我们正式版本用户!
006A81E1 . 8B45 FC mov eax,dword ptr ss:[ebp-0x4]
向上回朔 找到关键CALL (当然为什么选择这里作为关键呢,只要在这个CALL下段,往下跟就知道了,会出现真码的,也就是明码比较的判断)
[Asm] 纯文本查看 复制代码 006A812F . 64:8920 mov dword ptr fs:[eax],esp
006A8132 . 8B45 FC mov eax,dword ptr ss:[ebp-0x4]
006A8135 . E8 AE020000 call 006A83E8 ; 关键算法
006A813A . 84C0 test al,al
006A813C . 0F84 DB000000 je 006A821D
006A8142 . 33C0 xor eax,eax
006A8144 . 55 push ebp
进入关键CALL
[Asm] 纯文本查看 复制代码 006A83E8 /$ 55 push ebp
006A83E9 |. 8BEC mov ebp,esp
006A83EB |. 33C9 xor ecx,ecx
006A83ED |. 51 push ecx
006A83EE |. 51 push ecx
006A83EF |. 51 push ecx
006A83F0 |. 51 push ecx
006A83F1 |. 51 push ecx
006A83F2 |. 53 push ebx
006A83F3 |. 56 push esi
006A83F4 |. 8BF0 mov esi,eax
006A83F6 |. 33C0 xor eax,eax
006A83F8 |. 55 push ebp
006A83F9 |. 68 A3846A00 push 006A84A3
006A83FE |. 64:FF30 push dword ptr fs:[eax]
006A8401 |. 64:8920 mov dword ptr fs:[eax],esp
006A8404 |. 8D55 FC lea edx,[local.1]
006A8407 |. 8B86 14030000 mov eax,dword ptr ds:[esi+0x314]
006A840D |. E8 C66ADEFF call 0048EED8 ; 取假码
006A8412 |. 8B45 FC mov eax,[local.1]
006A8415 |. 50 push eax
006A8416 |. 8D55 F4 lea edx,[local.3]
006A8419 |. 8B86 10030000 mov eax,dword ptr ds:[esi+0x310]
006A841F |. E8 B46ADEFF call 0048EED8 ; 取机器码
006A8424 |. 8B55 F4 mov edx,[local.3]
006A8427 |. 8D4D F8 lea ecx,[local.2]
006A842A |. 8BC6 mov eax,esi
006A842C |. E8 EFFAFFFF call 006A7F20 ; 取真实注册码
006A8431 |. 8B55 F8 mov edx,[local.2]
006A842C |. E8 EFFAFFFF call 006A7F20 ; 这里也就是关键算法CALL了。
这里将机器码转换为16进制ASCII码,保存在EAX中
[Asm] 纯文本查看 复制代码 006A7F5C |. E8 CBCED5FF call 00404E2C
006A7F61 |. 8BF0 mov esi,eax ; 将长度付给ESI
006A7F63 |. 85F6 test esi,esi
006A7F65 |. 7E 26 jle short 006A7F8D
006A7F67 |. BB 01000000 mov ebx,0x1
006A7F6C |> 8D4D EC /lea ecx,[local.5]
006A7F6F |. 8B45 FC |mov eax,[local.1]
006A7F72 |. 0FB64418 FF |movzx eax,byte ptr ds:[eax+ebx-0x1]
006A7F77 |. 33D2 |xor edx,edx
006A7F79 |. E8 AA20D6FF |call 0040A028 ; 取ascii码
006A7F7E |. 8B55 EC |mov edx,[local.5] ; 将结果放到EDX中
006A7F81 |. 8D45 F8 |lea eax,[local.2]
006A7F84 |. E8 ABCED5FF |call 00404E34 ; 拼接转换后的ascii码
006A7F89 |. 43 |inc ebx ; ebx加1
006A7F8A |. 4E |dec esi ; esi减1
006A7F8B |.^ 75 DF \jnz short 006A7F6C
006A7F8D |> 8B45 F8 mov eax,[local.2] ; 将机器码转换结果放入eax中
006A7F90 |. E8 97CED5FF call 00404E2C
006A7F95 |. 8BF0 mov esi,eax
这里将转换后的EAX中的ASCII码倒序
[Asm] 纯文本查看 复制代码 006A7F97 |. 85F6 test esi,esi
006A7F99 |. 7E 2C jle short 006A7FC7
006A7F9B |. BB 01000000 mov ebx,0x1
006A7FA0 |> 8B45 F8 /mov eax,[local.2]
006A7FA3 |. E8 84CED5FF |call 00404E2C
006A7FA8 |. 2BC3 |sub eax,ebx
006A7FAA |. 8B55 F8 |mov edx,[local.2]
006A7FAD |. 8A1402 |mov dl,byte ptr ds:[edx+eax]
006A7FB0 |. 8D45 E8 |lea eax,[local.6]
006A7FB3 |. E8 8CCDD5FF |call 00404D44
006A7FB8 |. 8B55 E8 |mov edx,[local.6]
006A7FBB |. 8D45 F4 |lea eax,[local.3]
006A7FBE |. E8 71CED5FF |call 00404E34
006A7FC3 |. 43 |inc ebx
006A7FC4 |. 4E |dec esi
006A7FC5 |.^ 75 D9 \jnz short 006A7FA0
006A7FC7 |> 8D45 F8 lea eax,[local.2] ; 将机器码转换后的ascii码倒序
006A7FCA |. 50 push eax
006A7FCB |. B9 04000000 mov ecx,0x4
[Asm] 纯文本查看 复制代码 006A7FEB |. 8B45 F4 mov eax,[local.3]
006A7FEE |. E8 99D0D5FF call 0040508C ; 取注册码前四位
006A7FF3 |. 8B45 F8 mov eax,[local.2]
006A802F |> \8B45 F4 mov eax,[local.3] ; 取注册码前五-八位
006A8032 |. E8 F5CDD5FF call 00404E2C
006A8037 |. 83F8 04 cmp eax,0x4
将固定字符Salemem45erpe放入EDX中,并取出前四位与第五位至第九位
[Asm] 纯文本查看 复制代码 006A806B |> \8D45 F0 lea eax,[local.4]
006A806E |. BA F8806A00 mov edx,006A80F8 ; Salemem45erpe
006A8073 |. E8 7CCBD5FF call 00404BF4
006A8078 |. 8D45 DC lea eax,[local.9]
006A807B |. 50 push eax
006A807C |. B9 04000000 mov ecx,0x4
006A8081 |. BA 01000000 mov edx,0x1
006A8086 |. 8B45 F0 mov eax,[local.4]
006A8089 |. E8 FECFD5FF call 0040508C
006A808E |. FF75 DC push [local.9] ; 取出字符串的前四位
006A8091 |. 68 10816A00 push 006A8110 ; -
006A8096 |. FF75 F8 push [local.2]
006A8099 |. 8D45 D8 lea eax,[local.10]
006A809C |. 50 push eax
006A809D |. B9 05000000 mov ecx,0x5
006A80A2 |. BA 05000000 mov edx,0x5
006A80A7 |. 8B45 F0 mov eax,[local.4]
006A80AA |. E8 DDCFD5FF call 0040508C
006A80AF |. FF75 D8 push [local.10] ; 取出字符串的4-9位
006A80B2 |. 68 10816A00 push 006A8110 ; -
006A80B7 |. FF75 F4 push [local.3]
最后将字符串拼接
总结:
取出机器码:12345678901234567891
将机器码转换为16进制ASCII码:3132333435363738393031323334353637383931
将转换后的结果倒序:1393837363534333231303938373635343332313
取出前四位:1393
取出前五至八位:8373
取出固定字符串前四位:Sale
取出固定字符串前五至九位:mem45
拼接结果:Sale-1393mem45-8373
至此注册码算法结束。
附上吾爱破解专用注册机编写代码:
[Visual Basic] 纯文本查看 复制代码 Function GetMC(X)
MC=X
End Function
Function GetSN()
dim a,b,c,d,e,f,g,i
c = "Salemem45erpe"
for i=1 to len(mc)
b=mid(mc,i,1)
a=a&cstr(hex(asc(b)))
next
a=strreverse(a)
d=mid(a,1,4)
e=mid(a,5,4)
f=mid(c,1,4)
g=mid(c,5,5)
GetSN = f&"-"&d&g&"-"&e
End Function
上张图:
如果帮到你了,请加点热心值哦。。谢谢啦
该注册机仅对部分算法进行分析,实际上还是不建议使用的有暗装。
|