wangwei1978 发表于 2015-11-11 22:50:45

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 *****

冯玉姣 发表于 2015-11-12 07:00:41

支持楼主大作!谢谢分享

gagmeng 发表于 2015-11-12 08:10:54

大神,你太强大了!

email123 发表于 2015-11-12 09:47:45

膜拜大虾{:soso_e179:}

飘云 发表于 2015-11-12 15:22:38

精彩!!

左岸麦田 发表于 2015-11-12 16:04:40

楼主最近作品不少。

kkx 发表于 2015-11-12 16:35:14

谢谢分享         

Donald_Gao 发表于 2015-11-12 19:51:19

{:soso_e179:} 谢谢分享,收藏了!

menglv 发表于 2015-11-12 22:20:12

谢谢楼主分享

zpb_520 发表于 2015-11-13 14:05:48

楼主威武,强悍,感谢分享
页: [1] 2 3
查看完整版本: Source Insight 3 简单分析及注册机