160个CrackMe[30 cracking4all.1]破解算法分析+注册机源码
160个CrackMe逆向算法分析+注册机源码学习分析算法+delphi注册机源码
0040326F 52 push edx
00403270 50 push eax
00403271 FFD3 call ebx
00403273 50 push eax ; eax=0016442C, (UNICODE "1") 取每一位上的密码
00403274 FF15 0C614000 call dword ptr ds:[<&MSVBVM50.#516>] ; msvbvm50.rtcAnsiValueBstr
0040327A 0FBFD0 movsx edx,ax
0040327D 8D8D 68FFFFFF lea ecx,dword ptr ss:
00403283 8D45 BC lea eax,dword ptr ss:
00403286 51 push ecx
00403287 50 push eax
00403288 8995 E8FEFFFF mov dword ptr ss:,edx
0040328E FFD3 call ebx
00403290 50 push eax ; eax=00162864, (UNICODE "2") 循环取2000字符
00403291 FF15 0C614000 call dword ptr ds:[<&MSVBVM50.#516>] ; msvbvm50.rtcAnsiValueBstr
00403297 8B95 E8FEFFFF mov edx,dword ptr ss:
0040329D 0FBFC8 movsx ecx,ax
004032A0 33D1 xor edx,ecx ; 31 xor 32就是两者ASC进行XOR
004032A2 8D85 58FFFFFF lea eax,dword ptr ss:
004032A8 52 push edx
004032A9 50 push eax
004032AA FF15 64614000 call dword ptr ds:[<&MSVBVM50.#608>] ; msvbvm50.rtcVarBstrFromAnsi
这个crackme其实是一个逆推PASSWORD的过程。
输入的密码跟固定字符串"2000200020002"进行每一位上字符的ASC的值进行XOR,然后连接起来的字符串要跟"qBQSYdXUe_B\V"相同.
这里用2000200020002其实是为了方便,真正的是跟2000循环处理,既然比较的
数据是13位的,索性就鼓动为2000200020002好了。
那么可以直接逆回去,用"qBQSYdXUe_B\V"跟"2000200020002"每一位上字符ASC进行XOR,得到的就是密码:“CrackTheWorld”
注册机源码
procedure TForm1.Button1Click(Sender: TObject);
var
s1,s2,s:String;
i:integer;
begin
s1:='2000200020002';
s2:='qBQSYdXUe_B\V';
for i:=1 to 13 do
begin
s:=s+char(ord(s1) xor ord(s2));
end;
Edit1.Text:=s;
end;
感谢楼主分享教程!
楼主发这么多教程辛苦了
看到这些算法就头晕了
感谢楼主发这么多教程,你辛苦了!
感谢楼主分享新技能!努力学习ing! [快捷回复]-学破解防逆向,知进攻懂防守! [快捷回复]-学破解防逆向,知进攻懂防守! 互相讨论,共同进步
页:
[1]
2