如何防止IDA自动填充?

逆向工程 艾达
2021-06-23 06:21:51

我在头文件中定义了一个结构体,类似于这个:

struct STRUCT
{
    char a;
    int b;
};

这被 IDA 成功解析,但是它在以下内容之后添加了填充字节char

00000000 STRUCT          struc ; (sizeof=0x4)
00000000 a               db ?
00000001                 db ? ; undefined
00000002 b               dw ?
00000004 STRUCT          ends

我无法使用 删除填充字段u,所以问题是:如何删除由 IDA 自动插入的填充字段,或者如何防止 IDA 创建填充字段?

2个回答

可以#pragma pack(1)在声明前使用

删除未定义的字节

单击未定义的填充字节,然后使用Shrink struct(右键单击菜单或Ctrl- S)选择要删除的字节数 - 它会自动将正确的数量设置为下一个定义的偏移量。

防止自动添加

这取决于Options/Compiler菜单中的参数:更改default alignment为 1 以删除填充,然后导入您的标题