我如何猜测使用的散列或校验和算法?

逆向工程 拆卸
2021-06-14 00:43:10

我正在破解中国智能手表。我从它的固件中提取了一个动画 GIF 并对其进行了编辑以测试我的工具。新文件大小小于旧文件大小,因此我trunk在 Linux上用命令添加了零但是,在写回 ROM 后,它拒绝启动而不显示任何内容。我的一个朋友建议我在文件末尾可能有一个简单的校验和。但是,我无法确定它是哪种校验和才能将其添加到我编辑过的文件中。在这个 google 驱动器文件夹 (0 和 1 .gif) 中添加了两个示例文件原始用户空间固件是 FILE_01_mtk。如果我查看第一个文件,“3B”标记之后只有几个字节(可能是 GIF 的结尾)。然而,第二个 GIF 完全不同,之前的“3B”很多。

有人可以帮我弄清楚使用了什么校验和或哈希吗?

谢谢,亚历山大·克罗托

2个回答

你可以转存ROM,反汇编,找到加载和读取GIF的代码,你一定会找到校验和算法。

除此之外,您几乎必须运行一个猜谜游戏,记住检查两个字节序。如果你是开发者,你会使用什么?通常它们要么很常见,要么很简单。

信息太少,无法正确回答这个问题,但我怀疑整个固件可能有一个校验和,而不仅仅是每个文件。尝试在这里和那里(在目标文件中和外部)更改一些字节,看看它是否有效。在最坏的情况下,您需要反汇编代码并尝试找到检查例程。