逆向学习crackme160题-013-Acid burn 的 write up

013-Acid burn 的 write up

我是原站作者

1. 程序的执行

打开程序首先出现的是烦人的NAG弹窗:image-20221015181933678

然后有金典的两种注册方式:image-20221015182057227

一种是serial/nam形式:image-20221015182157732

还一种就是serial模式:image-20221015182247981

以上都是不成功的提示。出现了很多的提示字符串。

2. 查壳

image-20221015182414833

无壳

3. 分析

  1. 首先我们先来破解这个烦人的Nag弹窗,首先将软件拖入OD,然后借助插件插件智能搜索字符串,找到Nag弹框的提示字符串,然后就可以跟踪进入如下图:在这个函数体内的头部下断点,运行到这来停下:

    image-20221015220243726

    然后看到堆栈,在栈顶右键——>反汇编窗口中跟随

    image-20221015220516803

这样就可以来到调用这个函数call的地方,如下图:

image-20221015220651699

如果要破解的话,我们可以直接修改cmp需要对比的立即数,也可以修改je跳转。还有一种方式就是在函数内部的头处直接retn出来,也就是函数刚执行就retn了。

然后在汇编代码区选中刚才更改的指令,右键——>复制到可执行文件,然后再右键——>保存文件,就可以获得一个没有Nag弹框的可执行程序。

  1. 分析第一种验证方式,serial模式,首先将程序组拖入32位IDA,然后查找字符串,跟踪第一个Try Again!!,如下图:

    image-20221015225805245

然后就可以看到很多的字符串,如下图:

image-20221015225915181

我们可以随便跟踪一个就来到了函数体部分,通过分析得出注册码是Hello Dude! 如下图:

image-20221015230134025

3 . 分析第二种验证方式,serial/name模式。这次具有算法,我们在OD中跟踪分析,首先跟踪第二个Try Again!!字符串,然后就来到了函数的主体部分如下图:

image-20221016140241095

image-20221016140333746

然后就是很多的拼接字符串和对比字符串,如下图:

image-20221016140454283

观察堆栈如下图:

image-20221016140534361

可以知道,字符串serial拼接的规则是CW-数字-CRACKED

数字的计算规则是:取用户名的第一个字符,乘以0x29,再乘以2,最后将得到的十六进制数转化为十进制数。

4. 注册机的编写

#include<stdio.h>
#include<string.h>

int main()
{
	static char name[] = { 0 };
	static char str2[] = { 0 };
	int length = 0;
	int key = 0;
	char serial[100] = { 0 };
	char str1[] = "CW-";
	char str3[] = "-CRACKED";
	loop:
	printf("Please input you name: ");
	scanf("%s", name);
	length = strlen(name);
	if (length<4)
	{
		printf("The user name must be four characters greater than or equal to it!\n");
		goto loop;
	}
	key = name[0] * 0x29 * 2;
	printf("key=:%d\ninput key:",key);
	scanf("%s", str2);
	strcat(serial , str1);
	strcat(serial, str2);
	strcat(serial, str3);
	printf("serial=  %s\n",serial);
	system("pause");
	return 0;
}

执行效果演示:

image-20221016143415530

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是乙太呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值