问题陈述
我有一个完全由数据结构组成的文件;我一直在尝试寻找一种工具,使我能够打开此文件,并声明(也许)一个类型和偏移量,以便我可以单独使用假定的原始数据类型。
例如我将位于偏移量0x04的4个字节声明为32位无符号整数,并希望检查此位置的值(也许读为big-endian),然后单独使用此整数(也许看看它看起来像什么)我编码有一个4096字节的文件,其中包含C结构,成员元素的长度为16-64位,范围为整数。下面是一个示例:
struct my_struct {
uint_32 magic
} // sizeof(my_struct) == 0x04

在这种情况下,magic ='ball',因此在文本编辑器中打开文件时,其读为'llab ...',显然也可以被表示为32位整数
问题
是否有一个工具可以对平面数据结构文件进行静态分析?
到目前为止,我已经考虑过什么我已经考虑过用Python编写命令行工具来做到这一点,但是如果已有的话,我宁愿节省时间,并且也许可以使用经验丰富的人设计的工具来了解更多有关此主题的信息。如果您觉得我做错了这件事(这是我对这种可逆性的首次认真探索),请指导我的理解,谢谢。
我已经研究过的地方
Googled的逆向工程工具并浏览了链接
检查了维基百科的反向工程页面
尝试了一些第一性原理推理
检查了pypi
结果
有三个完全有效和正确的答案,但是我已将其中最详细和最便宜的代码标记为正确,因为它是查看此问题的社区成员最容易使用的代码。

评论

我想您已经尝试过IDA。检查此链接,我不确定这是否是您需要的。

可能相关:stackoverflow.com/questions/492751/…

#1 楼

010编辑器的二进制模板功能非常适合此类工作。它不仅支持静态struct定义,而且允许动态调整大小的struct字段并支持强大的脚本语言。





#2 楼

我为此使用Hex Workshop。它具有许多有用的平面文件反转功能,但我最喜欢的是它使您可以使用C样式语法声明结构并将其加载到文件顶部。它不是免费的,但超过90美元的价格标签是不值得的。字符串类型,位字符串,有效性检查等。
可定制的数据检查器(如果您只想查看几种类型的数据,则很有用)
Diffing
偏移显示(显示地址偏移,选择大小,等。)
序列高亮显示(如“高亮显示所有”)
按位运算,校验和等。


#3 楼

IDA可用于处理仅数据文件。您可以将字节转换为数据项(字节/单词/双字/ qwords /浮点数/字符串等),将它们分组为结构或数组(或结构数组),将整数表示为偏移量,添加名称和注释等。 br />
下面是IDA中表示的一些随机BMP文件的示例:

0000 BmHeader     db 'BM'     ; Signature
0002              dd 146h     ; Size
0006              dw 0
0008              dw 0
000A              dd offset pixel_array ; offset to image data
000E ; DIB header
000E              dd 40       ; size of this header
0012              dd 33       ; bitmap width
0016              dd 33       ; bitmap height
001A              dw 1        ; number of color planes
001C              dw 1        ; bits per pixel
001E              dd 0        ; compression: none
0022              dd 108h     ; size of image data
0026              dd 4724     ; horizontal resolution (pixels per meter)
002A              dd 4724     ; vertical resolution (pixels per meter)
002E              dd 0        ; colors in the palette
0032              dd 0        ; number of important colors
0036 ; Color table
0036              dd 0, 0FFFFFFh
003E ; pixel data
003E pixel_array  db 1, 73h, 13h, 6, 80h, 3 dup(0), 7Dh, 4Bh, 0E0h, 56h


#4 楼

Hexinator


具有与010 Editor的二进制模板类似的功能,称为“语法”。它允许插入数字,字符串,结构和二进制Blob。如果这还不够的话,它具有Python和Lua
脚本功能,则可以很好地编辑值(例如,以十进制代​​替十六进制)。十六进制区域可以突出显示。

缺点:

在撰写本文时,似乎存在多个打开语法+一个打开文件的问题。当打开同一语法的第二个文件时,它崩溃了。尽早保存并经常保存。

部分分析的文件的屏幕截图:



评论


这是唯一的免费支撑结构!但是我还没有弄清楚如何安装它们:“下载”菜单项不起作用,并且我看不到从磁盘加载语法的选项。但是,如果我双击一个.grammar文件,它看起来像是“已安装” ...


5月3日17:14

@jumpjack:您有这样的菜单:i.stack.imgur.com/3x39O.png吗?除此之外,它不是完全免费的。试用期结束后,许多功能都需要许可证。

–托马斯·韦勒(Thomas Weller)
5月3日17:36



仅当我在资源管理器中双击一个.grammar文件时,该语法才会显示在下拉列表中。否则我只能选择创建语法。


5月3日18:55

#5 楼

我将二进制编辑器用于此类任务
http://www.nyangau.org/be/be.htm