目标软件: 网际快车(FlashGet) V1.40 国际版
软件大小: 1729 KB
软件性质: 共享软件
应用平台: Win9x/NT/2000/XP
软件介绍:
下载的最大问题是什么——速度,其次是什么——下载后的管理。网际快车FlashGet
(JetCar)就是为解决这两个问题所写的,通过把一个文件分成几个部分同时下载可以成倍
的提高速度,下载速度可以提高100%到500%。网际快车可以创建不限数目的类别,每个类
别指定单独的文件目录,不同的类别保存到不同的目录中去,强大的管理功能包括支持拖
拽,更名,添加描述,查找,文件名重复时可自动重命名等等。而且下载前后均可轻易管
理文件。
使用工具: W32dasm v8.93 黄金修正版本、TRW2000 v1.22 娃娃修正版。
破解过程:
软件注册时,先将注册信息保存在注册表中的:HKEY_CURRENT_USER\Software\JetCar\
JetCar\General 子键中,然后在下一次启动时进行验证。
所以使用 W32Dasm 反汇编,串式参考:"RegPass",发现有
:0041C3E1 6864144F00 push 004F1464
和
:0041C5B6 6864144F00 push 004F1464
两处调用,经过观察: 41C3E1 处的作用是注册时将注册信息压入注册,所以来到
41C5B6:
0167:0041C5B6 PUSH DWORD 004F1464
0167:0041C5BB LEA ECX,[ESP+1C]
0167:0041C5BF PUSH DWORD 004EF1AC
0167:0041C5C4 PUSH ECX
0167:0041C5C5 MOV ECX,EBX
0167:0041C5C7 CALL 004B483A
0167:0041C5CC ADD EBX,035C
0167:0041C5D2 MOV EDI,01
0167:0041C5D7 PUSH EAX
0167:0041C5D8 MOV ECX,EBX
0167:0041C5DA MOV [ESP+3C],EDI
0167:0041C5DE CALL 0049E6AF
0167:0041C5E3 LEA ECX,[ESP+14]
0167:0041C5E7 MOV [ESP+38],EBP
0167:0041C5EB CALL 0049E576 /* 获得你输入的邮件地址 */
0167:0041C5F0 MOV EDX,[ESI]
0167:0041C5F2 MOV EAX,[EDX-08] /* 其位数送入 EAX */
0167:0041C5F5 TEST EAX,EAX
0167:0041C5F7 JZ NEAR 0041C739 /* 为空则 Game Over ! */
0167:0041C5FD MOV EAX,[EBX] /* 序列号送入 EAX */
0167:0041C5FF MOV ECX,[EAX-08] /* 将其位数送入 ECX */
0167:0041C602 TEST ECX,ECX
0167:0041C604 JZ NEAR 0041C739 /* 为空则 Game Over ! */
0167:0041C60A MOV ECX,ESI
0167:0041C60C CALL 0049A227
0167:0041C611 MOV ECX,ESI
0167:0041C613 CALL 0049A1DB
0167:0041C618 MOV ECX,[ESI]
0167:0041C61A CMP DWORD [ECX-08],BYTE +05
0167:0041C61E JNG NEAR 0041C739 /* 邮件地址长度小于 5h 就 Game Over !*/
0167:0041C624 PUSH DWORD 004F1488
0167:0041C629 MOV ECX,ESI
0167:0041C62B CALL 00499E42 /* 测试你输入的邮件地址是否合法 */
0167:0041C630 TEST EAX,EAX
0167:0041C632 JL NEAR 0041C739 /* 不合法则Game Over ! */
0167:0041C638 PUSH DWORD 004F1484
0167:0041C63D MOV ECX,ESI
0167:0041C63F CALL 00499E42
0167:0041C644 TEST EAX,EAX
0167:0041C646 JL NEAR 0041C739
0167:0041C64C MOV ECX,EBX
0167:0041C64E CALL 0049A227
0167:0041C653 MOV ECX,EBX
0167:0041C655 CALL 0049A1DB /* 获得你输入的序列号 */
0167:0041C65A MOV EDX,[EBX] /* 将其送入 EDX */
0167:0041C65C MOV EAX,[EDX-08] /* 长度送入 EAX */
0167:0041C65F CMP EAX,BYTE +2C /* 比较序列号是否等于 2Ch 位 */
0167:0041C662 JNZ NEAR 0041C739 /* 不等于就 Game Over ! */
0167:0041C668 PUSH DWORD 004F147C /* “fgc-” 入栈 */
0167:0041C66D MOV ECX,EBX
0167:0041C66F CALL 00499E42 /* 测序列号试前 4 为是否为 fgc- */
0167:0041C674 TEST EAX,EAX
0167:0041C676 JNZ 0041C67E /* 不是跳向下一步比较 */
0167:0041C678 MOV [ESP+10],EDI
0167:0041C67C JMP SHORT 0041C696
0167:0041C67E PUSH DWORD 004F1474 /* “fgf-” 入栈 */
0167:0041C683 MOV ECX,EBX
0167:0041C685 CALL 00499E42 /* 测序列号试前 4 为是否为 fgf- */
0167:0041C68A TEST EAX,EAX
0167:0041C68C JNZ NEAR 0041C739 /* 不是则 Game Over ! */
从上面我们知道要成功注册应满足:
1:邮件地址合法,且长度应大于 5 位。
2:序列号长度为 44 位,前四位为“fgc-” 或 “fgf-”。
所以重新输入序列号继续:
0167:0041C692 MOV [ESP+10],EAX
0167:0041C696 PUSH BYTE +2C
0167:0041C698 MOV ECX,EBX
0167:0041C69A CALL 0049E9A6 /* 获得你输入的序列号 */
0167:0041C69F MOV EBP,EAX
0167:0041C6A1 XOR ESI,ESI
0167:0041C6A3 ADD EBP,BYTE +04
0167:0041C6A6 XOR EDI,EDI
0167:0041C6A8 MOV EAX,[EBP+00]
0167:0041C6AB MOV ECX,EDI
0167:0041C6AD ADD EBP,BYTE +04
0167:0041C6B0 SUB ECX,BYTE +00
0167:0041C6B3 MOV [ESP+1C],EAX
0167:0041C6B7 JZ 0041C6D5 /* 跳向 41C6D5 */
.................................(这里暂时省略一部分)
0167:0041C6D5 MOV CL,[ESP+1E] /* 序列号第 7 位送入CL */
0167:0041C6D9 MOV DL,AH /* 序列号第 6 位送入DL */
0167:0041C6DB XOR ECX,EDX /* EDX 与 ECX 做异或运算 */
0167:0041C6DD MOVSX EDX,BYTE [ESP+1F] /* 序列号第 8 位送入EDX */
0167:0041C6E2 AND ECX,BYTE +7F /* ECX 与 7F 做与运算 */
0167:0041C6E5 IMUL ECX,EDX /* ECX 乘以 EDX */
0167:0041C6E8 MOVSX EAX,AL /* 序列号第 5 位送入EAX */
0167:0041C6EB ADD ECX,EAX /* ECX 加 EDX */
0167:0041C6ED MOV ESI,ECX /* ECX 送入 ESI */
0167:0041C6EF MOV EAX,[ESP+10]
0167:0041C6F3 TEST EAX,EAX
0167:0041C6F5 JZ 0041C703
0167:0041C6F7 MOVSX ECX,BYTE [004EF643]
0167:0041C6FE CMP EDI,BYTE +02
0167:0041C701 JZ 0041C70A
0167:0041C703 MOVSX ECX,BYTE [EDI+004EF640]
0167:0041C70A MOV EAX,ESI /* ESI 送入 EAX */
0167:0041C70C XOR EDX,EDX /* EDX 清 0 */
0167:0041C70E DIV ECX /* 除以 ECX */
0167:0041C710 MOV EAX,EDI
0167:0041C712 SUB EAX,BYTE +00
0167:0041C715 JZ 0041C721 /* 跳向 41C721 */
0167:0041C717 DEC EAX
0167:0041C718 JNZ 0041C725
0167:0041C71A CMP EDX,BYTE +08
0167:0041C71D JNZ 0041C730
0167:0041C71F JMP SHORT 0041C725
0167:0041C721 TEST EDX,EDX
0167:0041C723 JNZ 0041C730 /* EDX 为 0 就 Game Over !*/
0167:0041C725 INC EDI
0167:0041C726 CMP EDI,BYTE +02
0167:0041C729 JNL 0041C74E
0167:0041C72B JMP 0041C6A8 /* 从这里跳走 */
0167:0041C730 PUSH BYTE -01
0167:0041C732 MOV ECX,EBX
0167:0041C734 CALL 0049E9F5
0167:0041C739 POP EDI
0167:0041C73A POP ESI
0167:0041C73B POP EBP
0167:0041C73C XOR EAX,EAX
0167:0041C73E POP EBX
0167:0041C73F MOV ECX,[ESP+20]
0167:0041C743 MOV [FS:00],ECX
0167:0041C74A ADD ESP,BYTE +2C
0167:0041C74D RET
从上面我们知道:序列号第 7 位和 7C2E00 加第 6 位的和做异或运算的值与7F做
与运算,之后再乘以第 8 位,最后再加上序列号第 5 位的 HEX 值的和除以 6B,
余数不为0就会Game Over !
即:((SN[7] XOR (7C2E00+SN[8])AND 7F)*SN[8]+SN[5])MOD 6B = 0
然后重新填入序列号,会来到:
0167:0041C6BC MOVSX ESI,BYTE [ESP+1E] /* 序列号第 11 位送入 ESI */
0167:0041C6C1 MOVSX EDX,BYTE [ESP+1F] /* 序列号第 12 位送入 EDX */
0167:0041C6C6 MOVSX ECX,AH /* 序列号第 10 位送入 ECX */
0167:0041C6C9 AND ESI,ECX /* ESI 与 ECX 做与运算 */
0167:0041C6CB IMUL ESI,EDX /* 然后乘以 EDX */
0167:0041C6CE MOVSX EAX,AL /* 序列号第 9 位 送入 EAX */
0167:0041C6D1 ADD ESI,EAX /* ESI 加上 EAX */
0167:0041C6D3 JMP SHORT 0041C6EF /* 跳向 41C6EF */
......................................
0167:0041C6EF MOV EAX,[ESP+10] /* 将 [ESP+10] 的值送入 EAX */
0167:0041C6F3 TEST EAX,EAX /* 测试 EAX */
0167:0041C6F5 JZ 0041C703 /* EAX 为 0 就 Game Over !*/
0167:0041C6F7 MOVSX ECX,BYTE [004EF643]
0167:0041C6FE CMP EDI,BYTE +02
0167:0041C701 JZ 0041C70A
0167:0041C703 MOVSX ECX,BYTE [EDI+004EF640]
/* 将 [EDI+004EF640] 的值送入ECX */
0167:0041C70A MOV EAX,ESI /* ESI 送入 EAX */
0167:0041C70C XOR EDX,EDX /* EDX 清 0 */
0167:0041C70E DIV ECX /* 除以 ECX */
0167:0041C710 MOV EAX,EDI
0167:0041C712 SUB EAX,BYTE +00
0167:0041C715 JZ 0041C721
0167:0041C717 DEC EAX
0167:0041C718 JNZ 0041C725
0167:0041C71A CMP EDX,BYTE +08 /* 比较余数是否等于 8 */
0167:0041C71D JNZ 0041C730 /* 不是就 Game Over !*/
0167:0041C71F JMP SHORT 0041C725 /* 天堂之门 */
从上面我们知道:序列号第 11 位与序列号第 10 位做与运算之后乘以序列号第 12 位,再
加上序列号第9位的 HEX 制除以 41C703 处的 ECX 的制,余数为 8 就可注册成功。
即: ((SN[10] AND SN[11])*SN[12]+SN[9]) MOD 65 = 8
最后总结:
1:邮件地址合法,且长度应大于 5 位;
2:序列号长度为 44 位,前四位为“fgc-” 或 “fgf-”;
3:((SN[7] XOR (7C2E00+SN[8])AND 7F)*SN[8]+SN[5])MOD 6B = 0;
4:((SN10 AND SN11)*SN12+SN9) MOD 65 = 8。
OK,这下可以做注册机了!:)
TC2.0 注册机源码:
#include
#include
#include
main()
{ long a,b,c,d;
int e,f,g,h,i,k,temp;
int sn[62]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J'
,'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d'
,'e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x'
,'y','z'};
char name[15],mail[30];
randomize();
k=random(2);
printf("**************************************************************\n");
printf("* FlashGet(JetCar) v1.40 Keygen *\n");
printf("* Made by fengma(fengma@2911.net) *\n");
printf("* 2003-1-12 *\n");
printf("**************************************************************\n");
input_name:
printf("\nInput your name:");
gets(name);
if(strlen(name)==0)
{printf("\nYour must input your name!\n");
goto input_name;
}
input_mail:
printf("\nAnd your E-mail:");
gets(mail);
if(strlen(mail)<=5)
{printf("\nYour must input your E-mail correctly!\n");
goto input_mail;
}
printf("\nYour register code:");
if(k==0)
printf("fgc-");
else
printf("fgf-");
for(i=0;;i++)
{ a=random(62);
b=random(62);
c=random(62);
d=random(62);
if (((sn[c]^(7745024+sn[b])&127)*sn[d]+sn[a])%107==0)
break;
}
printf("%c%c%c%c",sn[a],sn[b],sn[c],sn[d]);
for(i=0;;i++)
{ e=random(62);
f=random(62);
g=random(62);
h=random(62);
if (((sn[f]&sn[g])*sn[h]+sn[e])%101==8)
break;
}
printf("%c%c%c%c",sn[e],sn[f],sn[g],sn[h]);
for (i=13;i<=44;i++)
{ temp=random(62);
printf("%c",sn[temp]);
}
printf("\n\n\n");
printf("Happy new year!\n\nBye!\n");
}
整理:
用 户 名:fengma
邮件地址:fengma_cn@msn.com
序 列 号:fgf-amy6tCrQN1uNTQHWk5JWnc1sphkRVIRsuPm5LY5x
风马 于 10:44 03-1-12
相关视频
相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
热门文章 去除winrar注册框方法
最新文章
比特币病毒怎么破解 比去除winrar注册框方法
华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据
人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程
查看所有0条评论>>