逆向分析——破解一个CrackMe

点赞后看,养成习惯
喜欢的话 可以点个关注哟
你们的点赞支持对博主们来说很重要哦 !!!

为方便您的阅读,可点击下方蓝色字体,进行跳转↓↓↓


在这里插入图片描述

00 前情提要

该CrackMe是我本学期,计算机病毒老师给出的实验题,通过学习看雪论坛技术教程帖子以及请教大牛同学,收获了一些关于逆向分析的要点。现将分析笔记列出。


01 题目描述

CrackMe,即破解我的意思,鼠标右键点击属性查看详细信息,初步判断该可执行文件是一个用来练习破解的软件。

在这里插入图片描述


双击打开CrackMe,软件显示如下图所示:

在这里插入图片描述



02 破解步骤

1、根据难度提示信息,发现可以采用暴力破解破解该密码,沿着这个思路走,先尝试常用的弱口令进行登录。

在这里插入图片描述
在这里插入图片描述

多次尝试无效后,尝试其他思路。


2、既然弱密码尝试无效,那我们尝试crack它。逆向分析的时候,我们首先查看该软件是否加壳,在这里我们使用从吾爱破解论坛上下载的查壳利器——Exeinfo PE。

在这里插入图片描述

打开查壳软件,软件页面显示如下:

在这里插入图片描述


将CrackMe文件载入Exeinfo PE中,得到如下信息
在这里插入图片描述

分析查壳结果可知,该CrackMe没有加壳,编写语言是Microsoft Visual C++ 9.0 - Visual Studio 2008 (E8)


3、根据上述所得信息: 因为软件没有加壳,自然我们就不用对软件进行脱壳处理。所以我们直接使用OD对CrackMe进行分析。 打开OD软件初始化界面如下:

在这里插入图片描述


载入CrackMe文件信息后,软件显示如下图所示

在这里插入图片描述


接下来,我们关注左上角这个大框框,它的名字叫反汇编窗口,意思就是这个程序已经被反汇编了,代码都在这里。

在这里插入图片描述


紧接着我们进行,断点调试

在这里插入图片描述


然后在反汇编窗口右键查找,选择查询文本、字符串内容

在这里插入图片描述
查找结果如下
在这里插入图片描述


红色字条上一条双击,然后就回到了反汇编窗口,并且光标停留在了一条语句上,鼠标滚轮向上滚几行,然后,就看到了,CrackMe的相关代码。

在这里插入图片描述


观察相应代码,试图了解程序执行流,并经过汇编方式重新定义判断条件,使得无论输入密码为真还是为假,条件判断为永真式。

在这里插入图片描述


尝试多次无效后,请教同学,发现是自己的文本信息找错位置了,我们可以通过插件万能API断点定位来找到相对应的位置(以下截图来自大牛同学)

在这里插入图片描述

单步步过查看堆栈信息

在这里插入图片描述


溯源堆栈信息 找不到 定位不到父程序 关键断点
对话框断点-MessageBoxA:
OD 执行bpx MessageBoxA命令设置断点
观察堆栈返回的信息

在这里插入图片描述

对话框MessageBoxA函数返回的参数为

在这里插入图片描述
Retn返回后到这个位置

在这里插入图片描述
然后,将JNZ改成JE,也就是置反,但是这样改的话等到你输入了正确的验证码却会出现错误的提示,输入错误的验证码就提示正确

在这里插入图片描述
保存保存修改后的文件
在这里插入图片描述

输入任意密码,提示密码正确

在这里插入图片描述


以上文章,作为自己的学习笔记,仅供参考

本文完,感谢你的阅读!!!

最后,如果本文对你有所帮助,希望可以点个赞支持一下。你们的鼓励将会是博主原创的动力。
在这里插入图片描述

©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页