我打算购买我的第一个机械键盘,KBT Poker II,除了它的物理特性之外,另一个引起我注意的是它带有可刷新固件!逆向和破解固件将是一个有趣的个人项目。(不幸的是,闪光灯仅适用于窗户......我不确定如何处理,但这是另一个问题。)
可悲的是,当我尝试查看固件文件时,我无法理解它——我尝试在它的某些部分运行一些 Thumb 反汇编程序(以及自己编写以了解有关 Thumb 的更多信息)包含代码(在 hexdump 检查时),但据我所知,它们都提出了垃圾指令——当然没有函数序言/尾声,到处都有很多疯狂的即时消息以及荒谬的转变和 LDM。
键盘内部硬件的一些技术信息:它是围绕Nuvoton NUC122SC1AN 构建的,它具有 Cortex-M0 CPU。有问题的固件文件在此论坛帖子的附件中提供(由键盘制造商提供)。
我已经发现了,但是,是位于中断表$0000
--its长度完全匹配的一个记录ARM的网站,其中的IRQ 0..31的。然而,这里的另一个奇怪之处是它们都指向高端内存中的中断——$ffff_fff00
等等。这个区域不包括在 NUC122 的内存映射中,ARM 的规范将它作为“保留”,但我猜它可能被映射到一些包含芯片闪烁接收代码等的内部存储器,然后中断要么蹦床到用户(固件)代码,要么表被固件提供的中断处理程序覆盖。无论如何,一旦我有一些代码要查看,我可能就能弄清楚。
我试过对文件进行 binwalk 处理,结果发现所有文件都是空的。
需要明确的是,我在这里的答案中寻找的是在上述固件文件之一(由制造商本身提供,因此这里不应该有法律问题)中找到实际可执行代码的位置的指导,因为我我真的不明白。我应该补充一点,我对倒车世界还比较陌生。谢谢!