逆向学习:crack me之Acid burn.exe

首先使用dumpbin.exe 查看该程序是64位还是32位。

这里确定程序是32位程序,然后使用x32dbg打开该程序。

首先尝试逆向serial:

先什么都不输入,点击验证看看会出现什么:

在这里看到点击验证出现了一个模态提示弹窗。我们知道当出现模态弹窗时,程序代码应该卡在模态弹窗那句直到返回。此时使用xdbg32让程序暂停:

此时程序暂停后,查看调用堆栈以确定程序卡在哪句用户代码:

我们可以看到调用来了messagebox 出现弹窗,那么接下来就是查看 在哪里调用的Messagebox,以及提示的内容。

根据MessageBox的参数含义,我们知道显示的文本,是来自于 edi,esi 参数,在往上看edi,esi 参数的值来自于 ecx,edx, 而当前函数的ecx,edx的值来自于上层调用。

所以我们需要再转到上层调用处分析。

依据上图代码的分析,此时jne acid burn.42F4F1 是关键跳转,然后看到在跳转之前调用了一个函数,然后再跳转。那么猜测这个是比较输入内容的函数。于是乎,更进该函数查看下实现,在 进入0x004039fc函数后,右键选择流程图,如下展示:

对上图的代码分析,其实就是字符串比较是否相等,关键提示点是 最开始的[esi-4]、[edi-4]表示的是长度。

所以,以上代码应该是 先调用0x004039fc函数比较两个字符串是否相等。相等则不跳转到弹出失败的地方。所以 此时在调用0x004039f函数处下一个断点,再尝试一次,应该就能获得答案了。

当断点断下来时,查看答案为:Hello Dude!。 接下来输入验证下:

至此,这个serial算是获得了。

总结

整个过程可分为3步:

  1. 尝试验证serial,出现弹窗时,选择暂停程序
  2. 观察调用堆栈,以定位调用处
  3. 分析调用处相关逻辑,以获得serial.
相关推荐
小新同学^O^3 小时前
简单学习 --> 模型参数
学习·llm·大模型参数
cdbqss13 小时前
VB2026 菜单生成基类 BqGetMenuStrip
数据库·经验分享·学习·oracle·vb
阿昭L4 小时前
Windows用户态hook技术总结
windows·逆向·hook
吃好睡好便好5 小时前
创建魔方矩阵和单位矩阵
开发语言·人工智能·学习·线性代数·matlab·矩阵
星夜夏空995 小时前
STM32单片机学习(21) —— I2C通信
stm32·单片机·学习
searchforAI7 小时前
B站视频转笔记用哪个工具?2026年四款AI笔记工具对比实测
人工智能·经验分享·笔记·gpt·学习·视频总结·ai笔记
爱上好庆祝7 小时前
学习JS第十一天(JS的进阶)
前端·javascript·学习
yeiweilan8 小时前
AI应用学习
学习
吃好睡好便好8 小时前
矩阵的加减运算
开发语言·人工智能·学习·线性代数·算法·matlab·矩阵
Mister西泽8 小时前
C++ Primer Plus 第六版 编程练习题及详细答案
开发语言·c++·学习·visual studio