首页
社区
课程
招聘
[原创]小萌新的第四个crack算法解析(序列号保护)
发表于: 2020-2-5 21:26 11001

[原创]小萌新的第四个crack算法解析(序列号保护)

2020-2-5 21:26
11001

小萌新的第四个crack算法解析(序列号保护)

Lixu

2020年2月5日 20:00:35

哈哈,好像我的crack都来自看雪,每天一个crack小练习,我的算法分析更上一层楼!

工具:PEID,OD

1. 首先日常查壳,没有啥问题,看起来这是一个汇编大佬写的,后面会更加验证我的看法。

 

2. 进入OD之后都没有啥问题,往下扒拉扒拉就可以找到GetDlgItemTextA这个函数调用的地方,当然你也可以用OD的函数名搜索,然后下断点也可以过来。过来之后我们就要开始详细的算法分析。

1. 第一步,判断用户名是否大于4,不大于则跳转错误。

 

2. 第二步,将用户名缓冲区压入堆栈,然后进行第一个算法call的计算:

值得注意的是,edx在前几次循环并没有值,直到eax溢出后,根据溢出的值不同,edx值也会相应的变化,然后将最后的计算结果放入eax返回。

 

3. 第三步,进入第二个call,将上一个计算结果循环左移一位,本来一行语句的事我不晓得他为啥还弄一个call。Rol就是进行循环左移一位的那个指令。可能多几个call会显得高级点??????????有没有大佬指点迷津。。。。


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 1
支持
分享
最新回复 (7)
雪    币: 95
活跃值: (291)
能力值: ( LV6,RANK:87 )
在线值:
发帖
回帖
粉丝
2
提醒一下,第四步的local.4里面存的值是大家电脑上的硬盘号,我换了一个电脑试了,结果就不一样了,不过都一样,也就是写注册机时有问题,说明每个人注册机都不一样。
2020-2-5 21:38
0
雪    币: 9934
活跃值: (2554)
能力值: ( LV6,RANK:87 )
在线值:
发帖
回帖
粉丝
3
我记得这160个cm我也做了十来个,都写了注册机。不过写完就删了。
2020-2-5 21:43
0
雪    币: 2510
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
感谢分享
2020-2-6 11:35
1
雪    币: 95
活跃值: (291)
能力值: ( LV6,RANK:87 )
在线值:
发帖
回帖
粉丝
5
我也开始逆向没多久,还是希望有一个逆向的大佬带带我。不胜感激!!!
2020-2-6 16:10
0
雪    币:
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感谢分享
2020-2-22 22:14
0
雪    币:
活跃值: (56)
能力值: ( LV2,RANK:15 )
在线值:
发帖
回帖
粉丝
7

挺简单的题。

 

注册机代码

#include<stdio.h>
#include<math.h>
#define ROL(x,n) (((x)<<n)|((x)>>(32-n)))
int main(int argc,char**argv)
{
  double  c_serial_number=(int)0x98E45550,d_serial_number=(int)0xC12765E5;
  char* a="071362de9f8ab45c";
  unsigned int serial,result=1;
  char name[20];
  int len;
  printf("name:");
  if(argc!=2)
    scanf("%[^\n]",name);
  else
    sprintf(name,"%s",argv[1]);
  if((len=strlen(name))<=0)
    return 0;
  printf("%s\n",name);
  serial=round(sqrt(c_serial_number*c_serial_number+d_serial_number*d_serial_number));
  for(int i=0;i<len;i++)
    result*=name[i];
  result=(ROL(result,1)|serial)&0xFFFFFFF;
  printf("key:");
  while(result)
    {
      printf("%c",a[result%0x10]);
      result>>=2;
    }
  return 0;
}

C,D盘序列号换成你自己的就行了

运行结果

图片描述

测试结果

图片描述

最后于 2020-3-5 10:51 被zzhwaxy编辑 ,原因:
2020-3-5 10:48
0
雪    币: 48
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
zzhwaxy 挺简单的题。 注册机代码 ``` #include #include #define ROL(x,n) (((x)(32-n))) int main(int argc,char ...

大佬第20、21行循环相乘那里,好像超过8位的话还得加上进位

2022-1-19 14:05
0
游客
登录 | 注册 方可回帖
返回