修复 IDA 数据库中恶意软件样本的数据部分?

逆向工程 艾达 倾倒
2021-06-20 06:15:35

我有一段按段转储的恶意软件。当加载到 IDA Pro 时,很多数据部分似乎被搞砸了。

首先,指针存储在一个不正确的数组中。我希望将它们分开,并且每个值都有自己的指针,我可以跨数据库进行外部参照。而不是看到它们被访问,因为array[ index ]这很难跟踪并且不可能正确地进行外部参照。

大批

接下来,许多浮点值(以 hex 表示)像这样存储,而不是作为单个十六进制数。我希望这些值代表 0x3d4c0cc0cd ( 0.05 )。

浮动 我对 IDA 不太熟悉,我想知道是否有办法解决这个问题(最好是批量处理,而不是我必须一个一个地检查每个值)

1个回答

IDA 作为交互式反汇编器,允许您更改数据的显示方式以适合实际含义和用法。尽管 IDA 尝试推断数据类型(除其他外),但并不总是成功。

通常,您可以将光标放在数据项或操作数上,然后右键单击或使用“编辑”菜单。

例如,要解决您的第二个问题并将数据类型设置为浮点数,您需要将光标放在它上面并单击 Edit->Operand->Number->Floating point 子菜单。

你的第一个问题有点棘手。如果您前面的代码使用数组中的偏移量来获取不同的指针,则没有简单而干净的方法来隐藏它,也不应该有。

与浮点情况不同,这次 IDA正确推断了数据,我不建议向用户(也就是您)隐藏该信息。相反,您可能想要编写一个简短的 IDAPython 脚本,该脚本会根据所使用的指针添加注释,并实际花时间了解这些索引的含义。

创建一个结构并将其应用于数组,为每个偏移量命名,这是我经常做的事情。您还可以使用指针函数命名的索引创建枚举。 如果我误解了并且 IDA 确实错误地推断了指针数组,请纠正我并在您的问题中更清楚地说明。