我是靠谱客的博主 野性烧鹅,最近开发中收集的这篇文章主要介绍160个Crackme009,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • 查壳
    • VB Decompiler分析程序
    • 前置知识
    • OD分析算法
    • 写出注册机
    • 验证结果

查壳

在这里插入图片描述

先来查一下壳,这个程序是用VB写的,和008是同一个作者,用的是用户名和序列号的保护方式,难度可能会有所上升,所以得分析整个按钮点击事件的算法。

VB Decompiler分析程序

在这里插入图片描述

把程序拖到VB Decompiler里,这个可是VB的逆向神器啊。

重要的信息有两个,一个是Native Code,说明是自然编译的,程序在编译的时候能够被编译为机器码,以Native Code方式编译的VB程序可以直接用OD调试。

另外一个就是Click的按钮点击事件了,因为整个程序只有一个OK按钮,所以直接就能判定这个就ok按钮的点击事件。

记下偏移,来到0x401FF0处。

前置知识

想要分析出来这个Crackme,必须具备两个VB的前置知识

  • 第一个就是VB的变量特征,VB是采用寄存器接收变量地址,地址是指向一个结构体,首地址存放的是类型编号,首地址+0x8。如果是字符串则首地址+0x8的位置是字符串的地址
  • 第二个VB反汇编中很多时候会在[ebp-0x34]这个堆栈地址中看到最终的计算的结果,至于为什么 待会就知道了

如果你不知道上面两个规律 这个Crackme绝对会逆的一脸蒙蔽

OD分析算法

在这里插入图片描述

随便输入一个账号密码,直接来到按钮事件开头,开始分析整个算法。

在这里插入图片描述

在这里插入图片描述

首先函数会求出用户名的长度,怎么知道是求的用户名的长度呢?首先看堆栈找到参数的地址 数据窗口跟随,然后首地址+0x8的地方 也就是我内存窗口选中的地址再次数据窗口跟随。

在这里插入图片描述

就找到了真正的参数,这个就是VB变量的存放规则,几乎无时无刻不在用。

在这里插入图片描述

接着步过这个函数,eax返回地址+0x8的位置就是用户名的长度。

在这里插入图片描述

接着以字符串的长度为循环次开始循环。

在这里插入图片描述

首先取出用户名的每一位,然后计算每一位的ASCII值,

在这里插入图片描述

然后将用户名的ASCII值和前一位的ASCII值相加得出结果,再用vbaVarMove这个函数将结果保存到[ebp-0x34]这个地址。想要动态的看到所有的过程可以用上面的方法观察堆栈参数,找到首地址+0x8的位置详细分析。

在这里插入图片描述

直接跳过这轮循环在[ebp-0x34]的地址处查看最后的结果为0x2C4。

在这里插入图片描述

接着用vbaVarMul将用户名ASCII的结果和0x499602D2相乘,也就是十进制的1234567890,然后再次通过vbaVarMove将计算结果保存到[ebp-0x34]。

在这里插入图片描述

然后用-替换掉计算结果的第4位

在这里插入图片描述

和结果的第9位

在这里插入图片描述

接着将最后计算的结果和原先输入的密码做比较,用堆栈的参数和VB的数据结构特点可以看到正确的注册码和原先输入的密码。

到这里,这个注册算法就分析完成了

写出注册机

int CalcKey()
{
	char szUserName[20] = { 0 };	
	__int64 result = 0;
	char key[50] = { 0 };
	printf("请输入用户名:");
	scanf_s("%s", szUserName, 20);

	int iUserNameLen = strlen(szUserName);
	//求出每一位用户名的和
	for (int i = 0; i < iUserNameLen; i++)
	{
		result += szUserName[i];
	}

	result *= 1234567890;
	//转为字符串
	sprintf(key, "%I64d", result);
	//替换第4位和第9位
	key[3] = '-';
	key[8] = '-';

	printf("%sn", key);
	return 0;
}

验证结果

在这里插入图片描述

输入用户名,将计算的序列号填入。OK显示正常,这个Crackme也就完成了。

需要相关文件的可以到我的Github下载:https://github.com/TonyChen56/160-Crackme

最后

以上就是野性烧鹅为你收集整理的160个Crackme009的全部内容,希望文章能够帮你解决160个Crackme009所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(30)

评论列表共有 0 条评论

立即
投稿
返回
顶部