Source Insight 3 简单分析及注册机
Source Insight是一个功能强劲的程序编辑器,他内置对C/C++,Java和x86汇编语言程序的解析;有自己的动态数据库在你编程时提供有用的文本提示,包括有关的函数,宏,参数等软件定位按钮事件自已找,我只是对软件分析下int __stdcall Matching_RegCode(char *regcode)
{
int result; // eax@2
if ( cmpstring(regcode) ) // 检验注冊码是否以ASCII "ES3US"开头 他妈太阴险了这个有两个算法CALL ES3US以这个字串开头注册码就会进入一个假算法,不怎配件都不成功!让我陷在里面好久
result = FalseArithmetic(regcode); // 假算法CALL,跟进去匹配不出注册码
else
result = Arithmetic(regcode); // 检验注冊码是否以ASCII "SI3US"开头
return result;
}
int __stdcall Arithmetic(char *regcode)
{
int v1; // eax@1
int result; // eax@2
int v3; // @7
unsigned int i; // @7
char regcode_2; // @3 存放第二部分注册码的前四位
unsigned int v6; // @12
int regcode_3_halsh; // @3 存放第三部分16进制的形式
v1 = strlen(aSi3us);
if ( cmpstr(regcode, aSi3us, v1) )
{
if ( sub_449244(regcode, regcode_2, ®code_3_halsh) )// 检验注册码格式,并copy出第二部注册码,以及第三部分16进制
{
if ( Checkout(regcode_2, regcode_2) )// 不能出现连续相同字符比如 111111 222222
{
result = 0;
}
else
{
v3 = atoi(regcode_2); // atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数
for ( i = 0; i < 0x1E; ++i )
{
if ( v3 == key ) // key存放的是第二部分不能出现的字串,其实是黑名单,如果注册码有这些字串注册是出错
return 0;
}
v6 = KernelArithmetic(regcode_2);
result = regcode_3_halsh == v6;
}
}
else
{
result = 0;
}
}
else
{
result = 0;
}
return result;
}
int __stdcall sub_449244(char *regcode, char *regcode_2, int regcode_3)
{
int result; // eax@2
char *x; // eax@5
char *v5; // @5
char *m; // @5
char *n; // @1
n = strchr(regcode, 0x2D); // 查找字符串s中首次出现字符-的位置 n
if ( n )
{
if ( n - regcode == strlen(aSi3us) ) // SI3US后面为连接符
{
m = n + 1; // 第一连接符地址m
x = strchr(n + 1, 0x2D); // 查找下个"-"的位置x
v5 = x;
if ( x ) // 没找到返回失败
{
*x = 0;
if ( x - m == 6 ) // 第一连接符在第连符相隔6
{
strcpy(regcode_2, m); // 把第二组注冊码输出
if ( strlen(v5 + 1) == 5 ) // 第三组注册码长度为5
{
*regcode_3 = atoi(v5 + 1); // 是把字符串转换成整型数的一个函数
*v5 = 0x2D;
result = 1;
}
else
{
result = 0;
}
}
else
{
result = 0;
}
}
else
{
result = 0;
}
}
else
{
result = 0;
}
}
else
{
result = 0;
}
return result;
}
unsigned int __stdcall KernelArithmetic(char *regcode_2)
{
int v2; // @1
char *i; // @1
int Halsh; // @1
Halsh = atoi(regcode_2); // atoi (表示 alphanumeric to integer)是把字符串转换成整型数的一个函数
v2 = 0;
for ( i = regcode_2; *i; ++i )
{
Halsh = (key2 ^ *i) + 4 * Halsh;
if ( v2 == 0xA )
v2 = 0;
}
return Halsh % 0x186A0u;
}
未注册
已注册
**** Hidden Message *****
支持楼主大作!谢谢分享 大神,你太强大了!
膜拜大虾{:soso_e179:} 精彩!! 楼主最近作品不少。 谢谢分享 {:soso_e179:} 谢谢分享,收藏了! 谢谢楼主分享 楼主威武,强悍,感谢分享