这是我在这里的第一篇文章(希望不是最后一篇!)
首先,我得说我不是 RE 专家,所以我可能听起来有点困惑。
所以我有一个由两个文件组成的 Delphi 程序(就你而言):
- 程序.exe
- 程序.bin
program.bin 是一个数据库,我的最终目标是提取它。通过提取,我的意思是有一个原始的 db 文件或一些有形的并且不缺少任何信息的东西。
该程序是一个 GUI 应用程序,除了加载数据库并在两列中显示它之外什么都不做(至少这是我看到的)。
项目简介
- 语言:Borland Delphi 6-7(感谢 PEiD)
- 使用的 IDE:RAD Studio(最有可能)
我做了什么
- 我试过 DeDe,但由于某种原因 program.exe 没有完全加载(我猜这使得反编译变得更加困难)。
- 我尝试了(几乎)所有 BDE 类型的数据库查看器(paradox、dBase 等)。为什么?因为我在 Olly 中滚动汇编代码时发现了这些字符串。除了一个,他们都没有成功。他们中的一些人在开场时坠毁,另一些人说它的标题不正确。有效的是密码恢复程序,它没有拒绝文件,而且还告诉我密码!:D。
- 我尝试了很多文件类型检测程序。除了“文件分析器”之外,所有这些都失败了,它告诉我 99% 的准确率 [原文如此] 这是 VisiCalc 文件,来吧不可能是真正的 xD。
- 我尝试过 Process Monitor 并看到 program.bin 是由 64 字节的块读取的。(不确定这是否是有用的信息)。
- 我还尝试了一些著名的分析工具(idr、Olly),尝试观察代码数小时,但由于我不了解,我无法使用它们。
观察
- 除此之外,我在程序集中发现了“paradox”、“dBase”字符串,我还看到它与 cryptbase.dll 有某种关系,这让我认为它可能被加密了,但令人惊讶的是,IDA 并没有在其中列出 cryptbase.dll导入库列表。
- 在检查 IDR 的结果时,我看到 program.exe 实际上有一个 dblogin 形式。如果这真的存在,那么我猜它是不可见的。
所以我的问题是我能做什么?我怎样才能把自己放在组件之间,以便我可以看到它的作用?
PS 我可以放一个链接到可执行文件,但我不想让它具体。我打算在这里学习通用技术。
注意:这纯粹是为了教育目的,因为我已经有了这个数据库。我所做的基本上是转储程序放置其数据库的内存。(顺便说一句,有没有什么小工具可以转储特定范围的内存?我在任务管理器中使用了Win7的原始转储程序)