160个CrackMe[80 fireworx.12]算法分析+注册机源码
160个CrackMe算法分析+注册机源码学习算法分析+Delphi内联汇编注册机源码
004417F7 8B45 F8 mov eax,dword ptr ss: ; 堆栈 ss:=00947B68, (ASCII "253282")这个是程序启动时候生成的随机数
004417FA E8 C55EFCFF call fireworx.004076C4
004417FF 8BC8 mov ecx,eax ; 转换成16进制eax=0003DD62
00441801 8BC1 mov eax,ecx
00441803 B9 8C070000 mov ecx,0x78C ; ECX=078C
00441808 99 cdq
00441809 F7F9 idiv ecx ; 除以0x78C
0044180B 69C0 99030000 imul eax,eax,0x399 ; 得到的商EAX=83*0x399
00441811 C1E0 11 shl eax,0x11 ; eax=0001D74B 左移0x11位
00441814 C1E8 09 shr eax,0x9 ; eax=AE960000然后右移0x9位
00441817 B9 0C000000 mov ecx,0xC ; ECX=0xC
0044181C 99 cdq
0044181D F7F9 idiv ecx ; EAX=00574B00除以0xC
0044181F 8BF0 mov esi,eax ; 得到的商EAX=eax=00074640
00441821 8D55 FC lea edx,dword ptr ss:
00441824 8BC6 mov eax,esi
00441826 E8 695EFCFF call fireworx.00407694
0044182B 8D55 F8 lea edx,dword ptr ss:
0044182E 8B83 C4020000 mov eax,dword ptr ds: ; ds:=009449EC
00441834 E8 471AFEFF call fireworx.00423280
00441839 8B45 F8 mov eax,dword ptr ss: ; 输入的假码(ASCII "abc")
0044183C 8B55 FC mov edx,dword ptr ss: ; 74640转换为10进制的结果(ASCII "476736")
0044183F E8 5C23FCFF call fireworx.00403BA0 ; 比较是否相等
注册机源码
procedure TForm1.Button1Click(Sender: TObject);
var
a:integer;
begin
a:=strtoint(Edit1.Text);
asm
pushad
mov eax,a
mov ecx,$78c
cdq
idiv ecx
imul eax,eax,$399
shl eax,$11
shr eax,$9
mov ecx,$c
cdq
idiv ecx
mov &a,eax
popad
end;
Edit2.text:=inttostr(a);
end;
谢谢楼主分享!
我发现这一篇的算法居然又跟除法扯上了关系,唉
感谢楼主分享新技能!努力学习ing! [快捷回复]-学破解防逆向,知进攻懂防守! 大神真是太牛了 感谢楼主分享 这个必须要收起来,非常实用 真厉害,大佬,我学到了
页:
[1]
2