IDA/HexRays 的 STL 映射和映射条目结构

逆向工程 艾达 C++ 六线谱 微信
2021-06-10 14:57:45

我有几个二进制文件(Visual Studio 2005、amd64/x86_64),我需要将每个文件的一部分颠倒过来,以便更好地了解它们在某些极端情况下发生故障的原因(它们早已无人维护,现在无处可寻)。

这些二进制文件不使用第 3 方库,仅使用 VC++ 运行时和 Win32 API,因此大量使用 STL 容器。

structstd::vector或 之类的东西创建通用的 IDA定义非常容易std::string但是,这些二进制文件确实有很多std::map用途,而且 msvc 为std::maps生成程序集的方式特别烦人。

也就是说,整个二进制文件塞满了无数方法来分配映射条目(每个方法一个map<k, v>),条目都有不同的大小,条目结构在开始和结束时具有相同的几个字段以及可变大小的中间部分。因此,在特定地图(例如find上使用的所有方法都是针对这些条目类型生成的,因此管理它是一个巨大的痛苦。

在访问映射的许多情况下,我可以推断底层逻辑,但我仍然希望有一个结构/多个结构以获得更好的可读性,最好不需要手动定义所有不同的结构。

如果有人可以分享他们自己与有效逆转大量std::maps相关的经验/发现,那就太好了。

0个回答
没有发现任何回复~