无法在注册机中设置断点

逆向工程 ollydbg 快手
2021-06-09 06:03:20

我喜欢将安全作为一种爱好,我不经常阅读和玩一些简单的 KeyGen 游戏,而且我很喜欢它。

倒车和 KeyGen 非常有趣,但我是初学者,我的问题可能非常愚蠢,但如果您能帮助我,我将非常感激。

到目前为止,我已经使用以下技术反转了简单的 keygen 应用程序:

  • 查找字符串文本参考以找到有趣的代码区域。
  • 凯根钓鱼。
  • 并绕过IsDebuggerPresent检查。

是的,我知道,非常基本的东西。这是一个类似于我通常所做的视频:

只是为了学习,有时我会尝试反转一些我为Windows购买的中小型应用程序,这些应用程序看起来像没有很多保护的简单产品。

这是我2个月前买的一个软件,整个安装在50MB左右。尝试在这里应用我的基本知识的动机之一是因为我喜欢看看我在 keygens 中学到的东西是否真的在现实生活中起作用,我的经验是中型软件要困难得多,因为 keygens 非常小而且很容易找到例程你要。:)

** 明确地说,我有这个程序的许可证,我的目的只是学习和增加我的知识。由于我没有破坏它或造成任何损害的商业意图,因此我不会披露该应用程序 - 希望您理解。**

好的,我们走吧。该应用程序由一个主要的可执行文件 (~33MB)、6 个 DLL(非常小,其中一些是libeay32.dll等)和大约 90 个.xsd文件(XML 格式)组成。我的第一步是尝试识别所使用的编程语言,如果存在打包程序,请查看下面的屏幕截图:

在此处输入图片说明

在此处输入图片说明

它似乎真的是在Delphi中开发的,我用CFF证实了这一点。此外,没有任何部分指出包装工查看 CFF 信息和 EXE 信息,而 RDG 也说它是干净的。然而,IsDebuggerPresent正如您所见,RDG 发现并指出了一种保护软件。但是,我不确定这是否是误报。

在我的应用程序中,序列被输入到这样的字段中:

在此处输入图片说明

一旦我输入了错误的序列号(30 个字符长),我就会收到如下消息:

在此处输入图片说明

我想这不是一个MessageBox,或者至少它是非常定制的。对于这种消息,我应该在MessageBoxA等处设置断点吗?或者有不同的API?

下面是我附加到正在运行的应用程序后的屏幕截图:

在此处输入图片说明

当我在 OllyDbg 按“运行”时,我得到的是:

在此处输入图片说明

以下是 SEH 链的列表:

在此处输入图片说明

以下是可用的“Windows”,包括我想反汇编、检查并放置断点的那个:

在此处输入图片说明

但是它无法调试,请参见下文:

在此处输入图片说明

这是某种保护吗?如何禁用这部分代码,放置断点等?

查看“文本字符串引用”,我只能看到部分消息,而不是显示在我的自定义“ MessageBox”上的消息。

在此处输入图片说明

此外,有许多部分看起来像是一条将在运行中完成的消息,例如“A chave informata esta”,意思是“他们输入的密钥是”或“Chave wronga n”,意思是“错误的密钥”。

[img] http://img5.imageshack.us/img5/3382/11ionlyseetextstringsre.png[/img]

此外,我注意到当某些文本没有存储为“TextString”时,这是应用程序的一部分,相反,我在 OllyDbg 中看到“逐个字符”顺序创建一些字符串(对我来说也不是很有用)。

如果我在这些 TextStrings 中的任何一个中定义断点,就会发生这种情况 - 一个例外:

在此处输入图片说明

是保护吗?知道如何绕过它吗?

从这里开始,我唯一能做的就是将控制权传递给应用程序,一切都结束了。:(

另外,如果我拒绝将控制权传递给应用程序并继续使用 F7/F8,我会得到类似的结果:

在此处输入图片说明

它以 OllyDbg 无法识别的指令结束。任何的想法?

我也试图在名称设置断点user32.dll,如GetDlgItemTextAGetDlgItemTextW,因为我相信他们是用于阅读我输入的序列号的API。奇怪的是,它们被导出而不是导入,如下所示。正常吗?

在此处输入图片说明

一旦我创建了断点并声明进入我再次遇到这个异常,我被迫再次将控制权传递给应用程序和游戏。:(

在此处输入图片说明

我在想这可能是一些基本的反调试保护,所以我启用了“aadp4olly”和“Olly Advanced”,有很多选项,但它无法解决问题,所以,我不太确定问题是什么.

非常感谢所有帮助和答案,但请记住,我是初学者。

**更新**

大家好,

感谢您的回答,但这并不能解决整个问题。请参阅下面的详细信息。

首先,我从这个链接更新了我的 PEid 数据库:

https://code.google.com/p/reverse-engineering-scripts/downloads/detail?name=UserDB.TXT

以下屏幕截图演示了 PE 详细信息:

http://img444.imageshack.us/img444/8295/16pedtails.png

以下是有关 PE 部分的详细信息:

对于未打包的二进制文件看起来有点奇怪,对吧?但我想不出正确的打包机。

http://img5.imageshack.us/img5/5764/17pesections.png

熵和快速检查说“未打包”,但 EP 检查点为打包:

http://img571.imageshack.us/img571/6251/18epappearstobepacked.png

这是找到的原始EP:

http://img12.imageshack.us/img12/990/19originalep.png

RDG Packer Detector 指出存在 Obsidium 保护,但我猜这是误报。查看解包器无法识别格式:

解包器在此可用:http : //down.52pojie.cn/Tools/Unpackers/

http://img29.imageshack.us/img29/7/20obsidiumunpackingfail.png

此外,用于 OllyDB 的优秀 Ferrit Anti-Anti-Debuggin 脚本还不足以让我调试它。请看下面:

http://img836.imageshack.us/img836/4352/21ferritantiantidebugis.png

http://img42.imageshack.us/img42/8721/22ferritantiantidebugis.png

从这里我被迫将控制权传递给应用程序,并且我失去了对 if 的控制权,如我的第一篇文章所示。我试图冻结所有线程并保持主线程运行,但它继续失败。

资源黑客无法读取Delphi资源:

http://img812.imageshack.us/img812/9861/23resourcehackerfailsto.png

甚至 Resource Hacker FX 也失败了,因为它说使用了新版本的 Delphi 进行编译。

http://img560.imageshack.us/img560/7538/24resourcehackerfxfails.png

Delphi 反编译器也失败了。首先,我尝试附加到我的目标:

http://img11.imageshack.us/img11/89/25deattachingtotarget.png

分析完成后,它会找到类信息:

http://img600.imageshack.us/img600/5935/26dedeloadedtarget.png

但重要的是“表格”和“程序”,但什么也没找到:

http://img600.imageshack.us/img600/986/27deeisunabletofindany.png

IDR(Interactive Delphi Reconstructor)似乎也没有用,因为目标应用程序是用 Delphi 2011 或 2012 编译的,并且没有可用于此版本的定义文件。

想法?建议?

再次感谢您的帮助和努力。

**更新**

3个回答

看看 R4ndom 的教程 #17,关于使用 Delphi 二进制文件并破解它们:http ://thelegendofrandom.com/blog/archives/1472

他描述了如何使用Resource Hacker(我更喜欢XN 资源编辑器)来查找调用您正在查找的对话框的表单的事件处理程序。

了解您感兴趣的表单后,下载 DeDe并将应用程序加载到其中。DeDe 完成其分析后,单击“表单”选项卡,您将看到与该表单关联的所有事件处理程序(OnClick 可能是您在此处查找的内容)。使用事件处理程序的名称,单击“程序”并找到该事件,您将看到其地址。

在此处输入图片说明

从那里,在 OllyDbg 中加载您的应用程序并在您感兴趣的事件处理程序的地址上设置一个断点。这应该使您靠近注册对话框提示您的位置。R4ndom 教程可以从那里描述任何必要的后续步骤。

我不确定您的情况是否如此,但一个常见的反密钥生成/调试技巧是压缩您想要断点的代码部分并在运行时覆盖它们。这样,如果在初始加载时修补了 int3,重新加载将重新初始化文本部分并删除断点。

它有更密集的应用程序,但这将是一个简单的应用程序。

您可以使用IDR(Interactive Delphi Reconstractor)来帮助您完成 delphi 代码 RE 过程。

这是一个很棒的工具。