如何解决逆向工程位掩码模式
我有一个要反向工程的二进制文件。除了关于位掩码的一步之外,我几乎已经完成了所有工作。 二进制文件基本上是带有页面的链接列表。每个页面都有一个标头,其中包含指向该页面内一个块的2字节指针。在标头中,还有几个字节似乎是一个位掩码,但是我还没有弄清楚该位掩码是如何工作的。
缺少的重要信息是确定是否不再使用(删除)块的标志。删除二进制文件时,读取二进制文件的程序只会更改位掩码(可能还有校验和)。因此,我的结论是,在位掩码中必须有一些位指示每个指针该块已不再使用。问题是我在此位掩码中找不到任何模式。所以我想知道我是否缺少通常应用于位掩码的内容?
这是页面的开始:
紫色是指向下一页的指针。洋红色(大概)是校验和。橙色是指向块的2字节指针的起始位置(128个字节,因此最多64个块)。绿色是堆的开始和第一个块(A4 00 = 164,这是绿色相对于页面开始的偏移量)。
这是同一页面,但之前删除任何项目:
红色是更改的字符。除此之外,文件中没有任何更改(开头的文件校验和除外)。
这里是相同的比较,但是二进制:
我怀疑字节18h到1Bh是最后32个指针的位掩码,因为它们全为0。14h到17h是前32个指针的位掩码。问题是我无法理解位掩码,在这里也找不到任何模式。
有什么想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。