160个CrackMe[77 fireworx.9]算法分析+注册机源码
160个CrackMe算法分析+注册机源码算法分析+delphi内联汇编注册机源码
00455437|.8D45 F4 lea eax, dword ptr
0045543A|.8B4D F8 mov ecx, dword ptr ;堆栈 ss:=0096AFDC, (ASCII "BCG")
0045543D|.8B55 FC mov edx, dword ptr ;堆栈 ss:=0096AFC4, (ASCII "vipcrack")
00455440|.E8 6BE6FAFF call 00403AB0
00455445|.8D55 F0 lea edx, dword ptr
00455448|.8B83 CC020000 mov eax, dword ptr
0045544E|.E8 D1E1FCFF call 00423624
00455453|.8B45 F0 mov eax, dword ptr
00455456|.E8 4522FBFF call 004076A0
0045545B|.8B45 F0 mov eax, dword ptr
0045545E|.E8 01E6FAFF call 00403A64
00455463|.8BF0 mov esi, eax ;ESI是输入的假码长度,最大长度为9,超过9就不是合法的integer,控制下面的循环次数
00455465|.85F6 test esi, esi
00455467|.7E 75 jle short 004554DE
00455469|.BF 01000000 mov edi, 0x1
0045546E|>8B45 F4 /mov eax, dword ptr ;堆栈 ss:=0096AFEC, (ASCII "vipcrackBCG")
00455471|.E8 EEE5FAFF |call 00403A64
00455476|.50 |push eax ;用户名公司名字符串长度B
00455477|.6BC7 7B |imul eax, edi, 0x7B ;edi=1
0045547A|.5A |pop edx
0045547B|.8BCA |mov ecx, edx ;edx=0000000B
0045547D|.99 |cdq
0045547E|.F7F9 |idiv ecx
00455480|.C1E0 05 |shl eax, 0x5
00455483|.2D 5C112C00 |sub eax, 0x2C115C
00455488|.05 B02E8700 |add eax, 0x872EB0
0045548D|.83F0 12 |xor eax, 0x12
00455490|.8945 E8 |mov dword ptr , eax ;eax=005B1EA6 (5971622)
00455493|.8D55 EC |lea edx, dword ptr
00455496|.8B45 E8 |mov eax, dword ptr
00455499|.E8 D221FBFF |call 00407670 ;获取10进制数据
0045549E|.8D55 E4 |lea edx, dword ptr
004554A1|.8B83 CC020000 |mov eax, dword ptr
004554A7|.E8 78E1FCFF |call 00423624
004554AC|.8B45 E4 |mov eax, dword ptr
004554AF|.8B55 EC |mov edx, dword ptr ;正确注册码 (ASCII "5971622")
004554B2|.E8 BDE6FAFF |call 00403B74
004554B7|.75 21 |jnz short 004554DA
004554B9|.6A 00 |push 0x0
004554BB|.8D55 E4 |lea edx, dword ptr
004554BE|.8B83 E8020000 |mov eax, dword ptr
004554C4|.E8 5BE1FCFF |call 00423624
004554C9|.8B45 E4 |mov eax, dword ptr ; |
004554CC|.66:8B0D 10554>|mov cx, word ptr ; |
004554D3|.B2 02 |mov dl, 0x2 ; |
004554D5|.E8 1EC2FEFF |call 004416F8 ; \fireworx.004416F8
004554DA|>47 |inc edi
004554DB|.4E |dec esi
004554DC|.^ 75 90 \jnz short 0045546E
注册机源码
procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
a,i,b:Integer;
begin
if (Edit1.Text='') or (Edit2.Text='')then exit;
s:=Edit1.Text+Edit2.Text;
a:=length(s);
randomize;
i:=random(9)+1;
asm
pushad
mov eax,a
mov edi,i
imul eax,edi,$7B
mov ecx,a
cdq
idiv ecx
shl eax,5
sub eax, $2C115C
add eax, $872EB0
xor eax, $12
mov b,eax
popad
end;
Edit3.Text:=inttostr(b);
end;
感谢楼主分享!辛苦了!
继续膜拜算法帝啊、、感谢分享
完全看不懂!!
感谢楼主分享新技能!努力学习ing! [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩! 感谢楼主分享,学到老! 楼主辛苦了,谢谢分享! 看了楼主的帖子。打算去自己练一下。
页:
[1]
2