嘿``顶你一个!~
搞一下“破解我3”吧``
破解我4是E写的东东`!!!~OD下看到浮点,,好讨厌~~有时间再玩了`
找字符串就断在
0049D134 /. 55 push ebp
0049D135 |. 8BEC mov ebp, esp
0049D137 |. 6A 00 push 0
0049D139 |. 6A 00 push 0
0049D13B |. 6A 00 push 0
0049D13D |. 53 push ebx
0049D13E |. 8BD8 mov ebx, eax
0049D140 |. 33C0 xor eax, eax
0049D142 |. 55 push ebp
0049D143 |. 68 F0D14900 push 0049D1F0
0049D148 |. 64:FF30 push dword ptr fs:[eax]
0049D14B |. 64:8920 mov dword ptr fs:[eax], esp
0049D14E |. 8D55 FC lea edx, dword ptr [ebp-4]
0049D151 |. 8B83 DC020000 mov eax, dword ptr [ebx+2DC]
0049D157 |. E8 3038F9FF call 0043098C ; 取注册名
0049D15C |. 8B55 FC mov edx, dword ptr [ebp-4]
0049D15F |. B8 F0084A00 mov eax, 004A08F0
0049D164 |. E8 4B6AF6FF call 00403BB4
0049D169 |. 8D55 F8 lea edx, dword ptr [ebp-8]
0049D16C |. 8B83 D8020000 mov eax, dword ptr [ebx+2D8]
0049D172 |. E8 1538F9FF call 0043098C ; 取注册码
0049D177 |. 8B55 F8 mov edx, dword ptr [ebp-8]
0049D17A |. B8 F4084A00 mov eax, 004A08F4
0049D17F |. E8 306AF6FF call 00403BB4
0049D184 |. 8D55 F4 lea edx, dword ptr [ebp-C]
0049D187 |. A1 F0084A00 mov eax, dword ptr [4A08F0]
0049D18C |. E8 FBFEFFFF call 0049D08C ; 跟进去call1
0049D191 |. 8B45 F4 mov eax, dword ptr [ebp-C]
0049D194 |. 8B15 F4084A00 mov edx, dword ptr [4A08F4]
0049D19A |. E8 516DF6FF call 00403EF0 ; 对比call,不跟了`
0049D19F |. 75 17 jnz short 0049D1B8
0049D1A1 |. 6A 00 push 0 ; /Arg1 = 00000000
0049D1A3 |. 66:8B0D FCD14>mov cx, word ptr [49D1FC] ; |
0049D1AA |. B2 02 mov dl, 2 ; |
0049D1AC |. B8 08D24900 mov eax, 0049D208 ; |恭喜,注册成功了!
0049D1B1 |. E8 C6A2FBFF call 0045747C ; \破解我3.0045747C
0049D1B6 |. EB 15 jmp short 0049D1CD
0049D1B8 |> 6A 00 push 0 ; /Arg1 = 00000000
0049D1BA |. 66:8B0D FCD14>mov cx, word ptr [49D1FC] ; |
0049D1C1 |. B2 01 mov dl, 1 ; |
0049D1C3 |. B8 24D24900 mov eax, 0049D224 ; |加油,注册不成功!
0049D1C8 |. E8 AFA2FBFF call 0045747C ; \破解我3.0045747C
call1:
0049D08C /$ 55 push ebp
0049D08D |. 8BEC mov ebp, esp
0049D08F |. 83C4 F8 add esp, -8
0049D092 |. 53 push ebx
0049D093 |. 56 push esi
0049D094 |. 33C9 xor ecx, ecx
0049D096 |. 894D F8 mov dword ptr [ebp-8], ecx
0049D099 |. 8BF2 mov esi, edx
0049D09B |. 8945 FC mov dword ptr [ebp-4], eax
0049D09E |. 8B45 FC mov eax, dword ptr [ebp-4]
0049D0A1 |. E8 EE6EF6FF call 00403F94
0049D0A6 |. 33C0 xor eax, eax
0049D0A8 |. 55 push ebp
0049D0A9 |. 68 14D14900 push 0049D114
0049D0AE |. 64:FF30 push dword ptr fs:[eax]
0049D0B1 |. 64:8920 mov dword ptr fs:[eax], esp
0049D0B4 |. 8D45 FC lea eax, dword ptr [ebp-4]
0049D0B7 |. BA 2CD14900 mov edx, 0049D12C ; "acafeel"作者大名到edx
0049D0BC |. E8 276DF6FF call 00403DE8 ; 第二位,第四位,最后一位变为大写,连到注册名后面
0049D0C1 |. BB 01000000 mov ebx, 1
0049D0C6 |> 8B45 FC /mov eax, dword ptr [ebp-4] ; 循环开始
0049D0C9 |. 0FB64418 FF |movzx eax, byte ptr [eax+ebx-1] ; 每次循环取注册名各个字符
0049D0CE |. C1E0 02 |shl eax, 2 ; 左移2位
0049D0D1 |. 83E8 02 |sub eax, 2 ; 再减2
0049D0D4 |. B9 1B000000 |mov ecx, 1B ; 0x1b到ecx
0049D0D9 |. 99 |cdq
0049D0DA |. F7F9 |idiv ecx ; 结果除以0x1b
0049D0DC |. 8BC2 |mov eax, edx
0049D0DE |. 83C0 4F |add eax, 4F ; 余数加上0x4f
0049D0E1 |. 8D55 F8 |lea edx, dword ptr [ebp-8]
0049D0E4 |. E8 1FB5F6FF |call 00408608 ; 加上后格式化为十进制字符串,每次循环都连起来
0049D0E9 |. 8B55 F8 |mov edx, dword ptr [ebp-8]
0049D0EC |. 8BC6 |mov eax, esi
0049D0EE |. E8 F56CF6FF |call 00403DE8
0049D0F3 |. 43 |inc ebx ; 计数器加一
0049D0F4 |. 83FB 08 |cmp ebx, 8 ; ebx计数器从一开始,循环7次
0049D0F7 |.^ 75 CD \jnz short 0049D0C6
0049D0F9 |. 33C0 xor eax, eax
0049D0FB |. 5A pop edx
0049D0FC |. 59 pop ecx
0049D0FD |. 59 pop ecx
0049D0FE |. 64:8910 mov dword ptr fs:[eax], edx
0049D101 |. 68 1BD14900 push 0049D11B
0049D106 |> 8D45 F8 lea eax, dword ptr [ebp-8]
0049D109 |. BA 02000000 mov edx, 2
0049D10E |. E8 716AF6FF call 00403B84
0049D113 \. C3 retn
很简单``就这样完了`
注册码大于7位的话作者的大名就没用处了``哦呵呵呵`连不连在后面无所谓了`
所以有这个bug``呵,,
我输入的是"jiangwu55"
得到"96928785849486"
输入"jiangwu!@@$#@%$#^&%$&**^&($%^%$"
也得到"96928785849486"
而且没有注册名长度限制
注册机顺便写下,,注意``没编译过`临时写的!!~
编译器不通过自己修改下!^-^:
#include <iostream.h>
#include <string.h>
#include <stdio.h>
int main()
{
char name[100],code[100],temp[5];
int i;
cout<<"Your name:";
cin>>name;
if(strlen(name)<=8)
{
strcat(name,"sCaFeeL");
}
memset(code,0,sizeof(code));
for(i=0;i<7;i++)
{
sprintf(temp,"%d",((name[i]<<2)-2)%0x1b+0x4f);
strcat(code,temp);
memset(temp,0,sizeof(temp));
}
cout<<"Your Code:"<<code<<endl;
}