任何人都可以对以下汇编代码提供一些见解:
更多信息:
引导加载程序实际上是一个小的 16 位引导加载程序,它使用 Xor 解密,一个更大的引导加载程序,一个位于扇区 3 到 34 的 linux 引导加载程序。(该磁盘中的 1 个扇区是 512 字节)
整个事情是一个运行在嵌入式 Linux 上的 exec 的保护系统。
删除保护的版本已经破译了 linux 引导加载程序(我们可以使用 IDA 将其反转),因此我们假设 xor 密钥必须在没有保护的版本中仅使用零。
如果我们在删除保护的版本中查看偏移量 0x800 到 0x8FF,它不会填充零,因此这不能成为关键,否则无法加载此版本,它将异或纯数据并且只加载垃圾。
扇区 3->34 在原始版本中是加密的,在我们的版本中是明确的(保护已删除),但 MBR 代码(小型预引导加载程序)在两个版本中是相同的。
那么会不会是 MBR 的汇编代码中有一个小细节稍微改变了 xor 键的位置呢?
这只是我为了更好地理解汇编代码加载器而做的一个练习,我发现这是一个相当大的挑战。到目前为止,我感谢您的意见!