在反汇编中处理结构体实例时,有时你可能想要更改IDA显示它们的方式,但如何做到这一点并不总是显而易见。让我们来看一些例子。
Win32节头
假设你已经使用手动加载加载了PE文件头,或者在你的二进制文件中找到了嵌入的PE文件,并希望将其PE头格式化得更好。借助标准类型库,你可以导入标准的Win32结构,如IMAGE_NT_HEADERS
或IMAGE_SECTION_HEADER
,并将它们应用到头部区域:
然而,由于Name
字段在原始结构中仅被声明为BYTE
数组,IDA将其显示为字节而不是可读的字符串。如果没有结构,我们可以使用创建字符串(A)命令,但也可以将字符串显示为结构实例的一部分。
更改结构字段表示
要更改特定字段在反汇编中的格式,请在结构定义中找到它,并在结构窗口中使用编辑或上下文菜单。例如,使用字符串(A)操作让IDA将Name字节数组格式化为字符串。
当你第一次编辑导入的结构时,可能会收到此警告:
由于字段类型表示不能在本地类型中指定,我们必须编辑结构,因此选择“是”继续。将显示一个指定字符串长度的对话框,只需确认即可:
该字段将获得一个注释,指示数组现在是一个字符串:
二进制中的结构实例现在将显示第一个字段为字符串:
除了字符串,你当然可以类似于操作数表示更改其他结构字段的表示。例如,你可以将SizeOfRawData
字段更改为以十进制而不是默认的十六进制打印。
原文始发于微信公众号(二进制磨剑):IDA 技巧(125)结构字段表示
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论