如何对作为参数放入函数中的结构进行逆向工程

逆向工程 艾达 C++ 结构 大批
2021-06-14 18:20:09

我如何去弄清楚在哪里对结构进行逆向工程?

如下图所示,我有一个名为“struct dynamic_array”的函数,我想对其进行逆向工程并在 C# 中重新实现,但我似乎无法在 IDA Pro 中找到它的位置?

突出显示它不会给我任何选择,也不会出现在任何地方,如果我能得到有关在哪里找到它的指导,我将不胜感激。

我从有经验的朋友那里得到的最大帮助是它是 的一个简单实现std::vector,所以现在我对它有所了解

https://i.stack.imgur.com/JC4f5.png

1个回答

该函数的名称不是struct dynamic_array. 该函数的名称是Mesh::CalculateBoneBindPoseBounds.

该函数接受类型为 的参数struct dynamic_array<...>

没有名为 的函数dynamic_array,因为它只是在二进制文件中定义的结构。这个名字确实暗示我们正在处理一个std::vector-like 对象,所以我首先假设现在是这种情况,并对你特别感兴趣的函数进行逆向工程。

如果您希望对结构本身和与该dynamic_array结构相关的功能进行逆向工程,您应该寻找一个构造函数来开始。

突出显示将不起作用,因为那不是函数的全名,但浏览 IDA 的函数/名称列表视图,您可能能够找到名为struct dynamic_array. 根据实现、功能和编译参数,某些或大多数函数可能是内联的,从而防止您找到要反转的函数定义。

如果这是 C 代码(或 C++ 代码中的 C 风格),函数可能不会以它们正在实现的对象命名,尽管这似乎并非如此,命名约定很明显。

无论函数是内联的,还是作为结构/类方法或裸函数实现的,在找到结构的主要实现函数后,您应该首先映射结构的成员。它们的大小、类型和含义通过逆向工程不同的功能。大部分成员都清楚后,命名相关功能应该不会太难。