逆向学习crackme160题-012-ACG-crcme1 的 write up

简介: 逆向学习crackme160题-012-ACG-crcme1 的 write up

012-ACG-crcme1 的 write up

  1. 程序执行加查壳

输入name和注册码,然后弹出错误信息,视为关键提示字符串,Info查看软件相关信息。无壳。

2. 分析

拖入OD,然后搜索字符串如下图:

跟踪进去如下图:

显然,第一个提示框应该就是成功提示框了,在他之前的跳转一定就是关键跳转。

然后我们看如下的关键函数部分了:

解释:第一个GetDlgItemTextA是获取输入的name长度到eax,内容保存到00402106,第二个是读取输入的注册码内容存入0040212E。然后就是有关name的计算处理。

还有有关注册码的计算方式如下图:

但是后面我发现,前面的分析好像错了,主要是我猜错了成功提示。主要还是看到info,有关文件的信息,如下图:

解释:可以看到有很多的乱码,所以这并不是一格正规的英文程序,所以包括我前面找的字符串也是很多乱码,并不正确。在这里我们还是能看到有一个关键的提示“KEY-FILE”

而且在退出程序的时候出现烦人的NAG,这个就是很多收费软件都会有的弹窗,如下图:所以接下来我们先来学习如何破解NAG:

首先在OD中智能搜索字符串如下图,选择最后一个跟踪:

下断点后只执行到这,如下图:

!

image-20221015151203987

在堆栈中右键——>反汇编窗口中跟随:

然后我们就可以看到他调用函数得地方:

最后我们要破解这个弹窗不让他显示的话就可以修改cmp对比的数字,或者jnz指令。

后面我们在来进行算法的分析

IDA查找字符串如下图:

解释:我们可以在最下面看到一个类似key文件的文件名。跟踪

然后就可以看到关键的算法如下:

解释:从40106E开始后面都是注册码区文件内容的单个字符的异或运算了。rol为左移运算

最后异或的结果要等于0,否则就会跳转。

然后依次得到12个密钥是:【0x168,0x160,0x170,0x0EC,0x13C,0x1CC,0x1F8,0x0EC,0x164,0x1F8,0x1A0,0x1BC】

3. 注册机的编写

#include <stdio.h>
#include <string.h>
int main()
{
  int serial[12] = { 0 };
  int arr[12] = {0x168,0x160,0x170,0x0EC,0x13C,0x1CC,0x1F8,0x0EC,0x164,0x1F8,0x1A0,0x1BC };
  char key[13] = { 0 };
  for (int i = 0; i < 12; i++)
  {
    serial[i] = arr[i] ^ 0;
    serial[i] >>= 2;
    serial[i] = serial[i] ^ 0x1B;
    key[i] = serial[i];
  }
  printf("serial: %s\n",key);
  system("pause");
}


相关文章
|
1天前
|
编译器 C++
逆向学习crackme160题-002-abexcm5的write up
逆向学习crackme160题-002-abexcm5的write up
13 1
|
1天前
|
算法 数据安全/隐私保护
逆向学习crackme160题-008-Afkayas.1 的 write up
逆向学习crackme160题-008-Afkayas.1 的 write up
9 1
|
1天前
|
算法 数据安全/隐私保护
逆向学习crackme160题-011-wocy.1 的 write up
逆向学习crackme160题-011-wocy.1 的 write up
6 1
|
1天前
|
存储
逆向学习crackme160题-015-Brad Soblesky.1 的 write up
逆向学习crackme160题-015-Brad Soblesky.1 的 write up
8 1
|
1天前
|
存储 API
逆向学习crackme160题-003-Cruehead-CrackMe-3的 write up
逆向学习crackme160题-003-Cruehead-CrackMe-3的 write up
7 1
|
1天前
|
算法 API 数据安全/隐私保护
逆向学习crackme160题-007-reg 的 write up
逆向学习crackme160题-007-reg 的 write up
8 2
|
1天前
|
算法 数据安全/隐私保护
逆向学习crackme160题-009-Boonz-KeygenMe#1 的 write up
逆向学习crackme160题-009-Boonz-KeygenMe#1 的 write up
6 0
|
1天前
|
算法 API
逆向学习crackme160题-014-Splish 的 write up
逆向学习crackme160题-014-Splish 的 write up
8 0
|
1天前
|
数据安全/隐私保护
逆向学习crackme160题-010-ceycey 的 write up
逆向学习crackme160题-010-ceycey 的 write up
6 0
|
1天前
逆向学习crackme160题-005-Andrnalin.1 的 write up
逆向学习crackme160题-005-Andrnalin.1 的 write up
5 0