成员区软件学习之--小巧名片
算法关键call内容0057C5E0/$55 push ebp
0057C5E1|.8BEC mov ebp, esp
0057C5E3|.51 push ecx
0057C5E4|.B9 04000000 mov ecx, 4
0057C5E9|>6A 00 /push 0
0057C5EB|.6A 00 |push 0
0057C5ED|.49 |dec ecx
0057C5EE|.^ 75 F9 \jnz short 0057C5E9
0057C5F0|.51 push ecx
0057C5F1|.874D FC xchg dword ptr , ecx
0057C5F4|.53 push ebx
0057C5F5|.56 push esi
0057C5F6|.57 push edi
0057C5F7|.8BF9 mov edi, ecx
0057C5F9|.8955 FC mov dword ptr , edx
0057C5FC|.8B45 FC mov eax, dword ptr
0057C5FF|.E8 A489E8FF call 00404FA8
0057C604|.33C0 xor eax, eax
0057C606|.55 push ebp
0057C607|.68 A1C75700 push 0057C7A1
0057C60C|.64:FF30 push dword ptr fs:
0057C60F|.64:8920 mov dword ptr fs:, esp
0057C612|.8BC7 mov eax, edi
0057C614|.E8 DF84E8FF call 00404AF8
0057C619|.8B45 FC mov eax, dword ptr
0057C61C|.E8 9787E8FF call 00404DB8
0057C621|.8BF0 mov esi, eax
0057C623|.85F6 test esi, esi
0057C625|.7E 26 jle short 0057C64D
0057C627|.BB 01000000 mov ebx, 1
0057C62C|>8D4D EC /lea ecx, dword ptr \
0057C62F|.8B45 FC |mov eax, dword ptr \
0057C632|.0FB64418 FF |movzx eax, byte ptr |
0057C637|.33D2 |xor edx, edx |
0057C639|.E8 AADAE8FF |call 0040A0E8 这个call在循环取硬件码的ascii的hex 。经典的for循环。
0057C63E|.8B55 EC |mov edx, dword ptr |
0057C641|.8D45 F8 |lea eax, dword ptr |
0057C644|.E8 7787E8FF |call 00404DC0 |
0057C649|.43 |inc ebx |
0057C64A|.4E |dec esi |
0057C64B|.^ 75 DF \jnz short 0057C62C /
0057C64D|>8B45 F8 mov eax, dword ptr 堆栈 ss:=018C7FF8, (ASCII "3551463247485943")
eax=00000002
跳转来自 0057C625 把取得的结果赋值给eax ,
0057C650|.E8 6387E8FF call 00404DB8
0057C655|.8BF0 mov esi, eax
0057C657|.85F6 test esi, esi
0057C659|.7E 2C jle short 0057C687
0057C65B|.BB 01000000 mov ebx, 1
0057C660|>8B45 F8 /mov eax, dword ptr
0057C663|.E8 5087E8FF |call 00404DB8
0057C668|.2BC3 |sub eax, ebx
0057C66A|.8B55 F8 |mov edx, dword ptr
0057C66D|.8A1402 |mov dl, byte ptr
0057C670|.8D45 E8 |lea eax, dword ptr
0057C673|.E8 6886E8FF |call 00404CE0
0057C678|.8B55 E8 |mov edx, dword ptr
0057C67B|.8D45 F4 |lea eax, dword ptr
0057C67E|.E8 3D87E8FF |call 00404DC0
0057C683|.43 |inc ebx
0057C684|.4E |dec esi
0057C685|.^ 75 D9 \jnz short 0057C660
0057C687|>8D45 F8 lea eax, dword ptr
0057C68A|.50 push eax
0057C68B|.B9 04000000 mov ecx, 4
0057C690|.BA 01000000 mov edx, 1
0057C695|.8B45 F4 mov eax, dword ptr
0057C698|.E8 7B89E8FF call 00405018
0057C69D|.8D45 F4 lea eax, dword ptr
0057C6A0|.50 push eax
0057C6A1|.B9 04000000 mov ecx, 4
0057C6A6|.BA 05000000 mov edx, 5
0057C6AB|.8B45 F4 mov eax, dword ptr
0057C6AE|.E8 6589E8FF call 00405018
0057C6B3|.8B45 F8 mov eax, dword ptr
0057C6B6|.E8 FD86E8FF call 00404DB8
0057C6BB|.83F8 04 cmp eax, 4
0057C6BE|.7D 2F jge short 0057C6EF
0057C6C0|.8B45 F8 mov eax, dword ptr
0057C6C3|.E8 F086E8FF call 00404DB8
0057C6C8|.8BD8 mov ebx, eax
0057C6CA|.83FB 03 cmp ebx, 3
0057C6CD|.7F 20 jg short 0057C6EF
0057C6CF|>8D4D E4 /lea ecx, dword ptr
0057C6D2|.8BC3 |mov eax, ebx
0057C6D4|.C1E0 02 |shl eax, 2
0057C6D7|.33D2 |xor edx, edx
0057C6D9|.E8 0ADAE8FF |call 0040A0E8
0057C6DE|.8B55 E4 |mov edx, dword ptr
0057C6E1|.8D45 F8 |lea eax, dword ptr
0057C6E4|.E8 D786E8FF |call 00404DC0
0057C6E9|.43 |inc ebx
0057C6EA|.83FB 04 |cmp ebx, 4
0057C6ED|.^ 75 E0 \jnz short 0057C6CF
0057C6EF|>8B45 F4 mov eax, dword ptr
0057C6F2|.E8 C186E8FF call 00404DB8
0057C6F7|.83F8 04 cmp eax, 4
0057C6FA|.7D 2F jge short 0057C72B
0057C6FC|.8B45 F4 mov eax, dword ptr
0057C6FF|.E8 B486E8FF call 00404DB8
0057C704|.8BD8 mov ebx, eax
0057C706|.83FB 03 cmp ebx, 3
0057C709|.7F 20 jg short 0057C72B
0057C70B|>8D4D E0 /lea ecx, dword ptr
0057C70E|.8BC3 |mov eax, ebx
0057C710|.C1E0 02 |shl eax, 2
0057C713|.33D2 |xor edx, edx
0057C715|.E8 CED9E8FF |call 0040A0E8
0057C71A|.8B55 E0 |mov edx, dword ptr
0057C71D|.8D45 F4 |lea eax, dword ptr
0057C720|.E8 9B86E8FF |call 00404DC0
0057C725|.43 |inc ebx
0057C726|.83FB 04 |cmp ebx, 4
0057C729|.^ 75 E0 \jnz short 0057C70B
0057C72B|>8D45 F0 lea eax, dword ptr
0057C72E|.BA B8C75700 mov edx, 0057C7B8 ;mpw456ei878
0057C733|.E8 5884E8FF call 00404B90
0057C738|.8D45 DC lea eax, dword ptr
0057C73B|.50 push eax
0057C73C|.B9 04000000 mov ecx, 4
0057C741|.BA 01000000 mov edx, 1
0057C746|.8B45 F0 mov eax, dword ptr
0057C749|.E8 CA88E8FF call 00405018
0057C74E|.FF75 DC push dword ptr
0057C751|.68 CCC75700 push 0057C7CC ;-
0057C756|.FF75 F8 push dword ptr
0057C759|.8D45 D8 lea eax, dword ptr
0057C75C|.50 push eax
0057C75D|.B9 05000000 mov ecx, 5
0057C762|.BA 05000000 mov edx, 5
0057C767|.8B45 F0 mov eax, dword ptr
0057C76A|.E8 A988E8FF call 00405018
0057C76F|.FF75 D8 push dword ptr
0057C772|.68 CCC75700 push 0057C7CC ;-
0057C777|.FF75 F4 push dword ptr
0057C77A|.8BC7 mov eax, edi
0057C77C|.BA 06000000 mov edx, 6
0057C781|.E8 F286E8FF call 00404E78
0057C786|.33C0 xor eax, eax
0057C788|.5A pop edx
0057C789|.59 pop ecx
0057C78A|.59 pop ecx
0057C78B|.64:8910 mov dword ptr fs:, edx
0057C78E|.68 A8C75700 push 0057C7A8
0057C793|>8D45 D8 lea eax, dword ptr
0057C796|.BA 0A000000 mov edx, 0A
0057C79B|.E8 7C83E8FF call 00404B1C
0057C7A0\.C3 retn
这段代码
0057C650|.E8 6387E8FF call 00404DB8
0057C655|.8BF0 mov esi, eax
0057C657|.85F6 test esi, esi
0057C659|.7E 2C jle short 0057C687
0057C65B|.BB 01000000 mov ebx, 1
0057C660|>8B45 F8 /mov eax, dword ptr
0057C663|.E8 5087E8FF |call 00404DB8
0057C668|.2BC3 |sub eax, ebx
0057C66A|.8B55 F8 |mov edx, dword ptr
0057C66D|.8A1402 |mov dl, byte ptr
0057C670|.8D45 E8 |lea eax, dword ptr
0057C673|.E8 6886E8FF |call 00404CE0
0057C678|.8B55 E8 |mov edx, dword ptr
0057C67B|.8D45 F4 |lea eax, dword ptr
0057C67E|.E8 3D87E8FF |call 00404DC0
0057C683|.43 |inc ebx
0057C684|.4E |dec esi
0057C685|.^ 75 D9 \jnz short 0057C660
把3551463247485943 反转成 "3495847423641553"
粗跟踪到这里
0057C72B|>8D45 F0 lea eax, dword ptr
0057C72E|.BA B8C75700 mov edx, 0057C7B8 ;mpw456ei878
明显的传入一个固定值
0057C733|.E8 5884E8FF call 00404B90
0057C738|.8D45 DC lea eax, dword ptr
0057C73B|.50 push eax
0057C73C|.B9 04000000 mov ecx, 4
0057C741|.BA 01000000 mov edx, 1
0057C746|.8B45 F0 mov eax, dword ptr
0057C749|.E8 CA88E8FF call 00405018
0057C74E|.FF75 DC push dword ptr
0057C751|.68 CCC75700 push 0057C7CC ;-
0057C756|.FF75 F8 push dword ptr
0057C759|.8D45 D8 lea eax, dword ptr
0057C75C|.50 push eax
0057C75D|.B9 05000000 mov ecx, 5
0057C762|.BA 05000000 mov edx, 5
0057C767|.8B45 F0 mov eax, dword ptr
0057C76A|.E8 A988E8FF call 00405018
0057C76F|.FF75 D8 push dword ptr
0057C772|.68 CCC75700 push 0057C7CC ;-
0057C777|.FF75 F4 push dword ptr
0057C77A|.8BC7 mov eax, edi
0057C77C|.BA 06000000 mov edx, 6
0057C781|.E8 F286E8FF call 00404E78
0057C786|.33C0 xor eax, eax
这里是取3495847423641553这个字符串的前1-4放进一个变量v1 取5-8防进另一个变量v2,取mpw456ei878的前4放进一个变量v3,取5-9放进一个变量v4。然后用“-”连接v3-v1-v2-v4;连接后的字符串就是注册码。
时间仓促写的有点乱。请各位海涵。
小笨鸟10斤了 ^ ^ 多谢你的分析,先收藏了.谢谢. 小小菜意见。
@:分析有点少,代码有些长。毕竟贴在这里--初学者乐园--是给别人--初学者--看的~如果看的人没亲自调式过的话理解会有些吃力! 如果有该软件调试,再按你说的方法做可能就会好一些。在此还是谢谢你的分享。
页:
[1]