桌面图标任我排v2.10,分析及注册机源码
桌面图标任我排v2.10DIYDeskTop.exe
申请码:
Z3WIL6UF
注册码:
123456
偶尔在PYG看到,分析,发现真是超级简单,不过软件还是很有趣。
ASPack 2.12 -> Alexey Solodovnikov
Borland Delphi 6.0 - 7.0
居然有提示消息:
注册码错误,请重新输入!
bpx MessageBoxA
填入注册信息,会断在这里:
00464ED0|.53 push ebx ; /Style
00464ED1|.57 push edi ; |Title
00464ED2|.56 push esi ; |Text
00464ED3|.8B45 FC mov eax, dword ptr ; |
00464ED6|.8B40 30 mov eax, dword ptr ; |
00464ED9|.50 push eax ; |hOwner
00464EDA|.E8 D526FAFF call <jmp.&user32.MessageBoxA> ; \MessageBoxA
向上找到关键断点在这里:
004B1A8B|.8B45 FC mov eax, dword ptr ;假注册码:123456
004B1A8E|.8A58 01 mov bl, byte ptr ;注册码第二位送BL,BL=32
004B1A91|.8B45 FC mov eax, dword ptr
004B1A94|.E8 9F2EF5FF call 00404938
004B1A99|.8B55 FC mov edx, dword ptr
004B1A9C|.0FB64402 FE movzx eax, byte ptr ;注册码倒数第二位,送EAX,EAX=35
004B1AA1|.48 dec eax ;自减1,EAX=34
004B1AA2|.50 push eax ;压栈保护结果
004B1AA3|.8D45 FC lea eax, dword ptr
004B1AA6|.E8 DD30F5FF call 00404B88
004B1AAB|.5A pop edx
004B1AAC|.8850 01 mov byte ptr , dl ;将刚才压栈保护的结果,弹出到DL,替换假注册码的顺数第二位,假注册码变成:143456
004B1AAF|.8B45 FC mov eax, dword ptr
004B1AB2|.E8 812EF5FF call 00404938
004B1AB7|.8BF0 mov esi, eax
004B1AB9|.8D45 FC lea eax, dword ptr
004B1ABC|.E8 C730F5FF call 00404B88
004B1AC1|.33D2 xor edx, edx
004B1AC3|.8AD3 mov dl, bl ;原来的假注册码码的顺数第二位,即32
004B1AC5|.83C2 02 add edx, 2 ;加2,变成34
004B1AC8|.885430 FE mov byte ptr , dl ;还是替换,原来是:分别取假注册码顺数第二位的ASCII码加上2,倒数第二位的ASCII码减1,然后互换而已!!
004B1ACC|.8B87 00030000 mov eax, dword ptr ;假注册码123456变化成:143446
004B1AD2|.8B55 FC mov edx, dword ptr
004B1AD5|.E8 A224F9FF call 00443F7C
004B1ADA|.8D45 FC lea eax, dword ptr
004B1ADD|.E8 9E2BF5FF call 00404680
004B1AE2|.8D55 F0 lea edx, dword ptr
004B1AE5|.8B87 00030000 mov eax, dword ptr
004B1AEB|.E8 5C24F9FF call 00443F4C
004B1AF0|.8B45 F0 mov eax, dword ptr
004B1AF3|.E8 402EF5FF call 00404938
004B1AF8|.8BF0 mov esi, eax
004B1AFA|.83FE 01 cmp esi, 1
004B1AFD|.7C 38 jl short 004B1B37
004B1AFF|>8D55 EC /lea edx, dword ptr
004B1B02|.8B87 00030000 |mov eax, dword ptr
004B1B08|.E8 3F24F9FF |call 00443F4C
004B1B0D|.8B45 EC |mov eax, dword ptr ;处理变化后的假注册码:143446
004B1B10|.8A5C30 FF |mov bl, byte ptr ;倒数第一位开始传送。
004B1B14|.33C0 |xor eax, eax
004B1B16|.8AC3 |mov al, bl
004B1B18|.83C0 03 |add eax, 3 ;每一位都加3
004B1B1B|.8BD8 |mov ebx, eax
004B1B1D|.8D45 E8 |lea eax, dword ptr
004B1B20|.8BD3 |mov edx, ebx
004B1B22|.E8 392DF5FF |call 00404860
004B1B27|.8B55 E8 |mov edx, dword ptr
004B1B2A|.8D45 FC |lea eax, dword ptr
004B1B2D|.E8 0E2EF5FF |call 00404940
004B1B32|.4E |dec esi
004B1B33|.85F6 |test esi, esi
004B1B35|.^ 75 C8 \jnz short 004B1AFF ;循环,循环次数就是注册码的位数
004B1B37|>B8 300D4C00 mov eax, 004C0D30
004B1B3C|.8B55 FC mov edx, dword ptr ;得到结果:977674
004B1B3F|.E8 902BF5FF call 004046D4
004B1B44|.E8 AFF3FFFF call 004B0EF8 ;比较函数,两个参数,一个是机器码,另一个就是上面用注册码运算的结果:977674
总结:
本机机器码:Z3WIL6UF
对应的ASCII码是:
5A 33 57 49 4C 36 55 46
每一位的ASCII码都减3:
57 30 54 46 49 33 52 43
然后逆序。
43 52 33 49 46 54 30 57
顺数第二位加1,52+1=53
倒数第二位减2,30-2=2E
互换:
43 2E 33 49 46 54 53 57
转换成字符串形式就是注册码:
C.3IFTSW
11:02 2007-2-27
by wofan
给出KeyGen源码,想来这类软件很少会有人出钱,一并给出注册机得了。
//-----------------------------------------------------------------------
//=============函数,过程,回调函数==================================
//=======================================================================
procedure wofanKeygen(hdlg:HWND);
var
Title,text:string;
Begin
Title:='提示';
Text:='输入机器码了吗?';
ZeroMemory(@mCode,sizeof(mCode));
ZeroMemory(@mName,sizeof(mName));
GetDlgItemText(hDlg,IDC_Name,@mName,sizeof(mName));
asm
LEA ESI,mName//把机器码的地址传到ESI
test eax,eax //EAX 是GetDlgItemText函数返回值,它是字串实际长度
JE @Err //测试的结果,如果EAX为零,使Flag标志寄存器中的Z标志为零,则出错
lea edi,mCode//===========存放注册码=====================
mov ecx,eax //存放机器码的位数
xor edx,edx
@loop:
mov al,byte ptr
sub al,3
mov byte ptr ,al
dec ecx
inc edx
test ecx,ecx
jnz @loop
mov cl,byte ptr
inc cl
mov al,byte ptr
sub al,2
mov byte ptr,cl
mov byte ptr,al
jmp @End
@Err:
push 0
MOV EAX,DWORD PTR SS:
PUSH EAX
MOV EAX,DWORD PTR SS:
PUSH EAX
PUSH MB_OK
Call MessageBox //提示
@End:
End;//End ASM
End;
//======================================================================= 很不错的算法学习,回个贴支持一下!:victory: 很不错,详细算法教程 不错,学习了!! 算法不错,学习! 还是不会呀。。能不能教教我。。 给个原文件连接,练习一下 谢谢了已经注册了 顶一个,好的东西 这个可以用一下呀,觉得不错
页:
[1]