【发布时间】:2021-11-14 10:23:30
【问题描述】:
我想了解有关 RE 的更多信息。
我在 STM32F107 上编写了一个简单的程序,除了使用 AES128-ECB 对文本进行一次加密和解密之外,它什么也不做。
这里是 C 代码(到目前为止我故意省略了关键):
struct AES_ctx TestAes;
uint8_t key[16] =
{ MY_KEY_IS_HERE };
uint8_t InputText[16] =
{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0 };
AES_init_ctx(&TestAes, key);
AES_ECB_encrypt(&TestAes, InputText);
AES_ECB_decrypt(&TestAes, InputText);
现在我想在我的二进制文件中找到 16 字节的私钥。
当我在十六进制编辑器中打开二进制文件并搜索我的密钥时,我会连续找到所有 16 个字节。
我在 Ghidra 中加载了二进制文件,之前安装了 FindCrypt,现在运行分析。
FindCrypt 现在可以找到 AES_Decrytion_SBox_Inverse 和 AES_Ecryption_SBox。
但两者都不是我的 AES 密钥,而是 SBox。之后情况如何?在所有教程中,我发现它看起来很简单,因为 Functions Finder 可以找到 AES 函数 - 但由于项目是 Bare Metal,这可能无法正常工作。
我认为 FindCrypt 会寻找某种可以生成密钥的十六进制模式...
我有attached 二进制文件。字节序很小,架构是 ARM Cortex(我认为?!)
【问题讨论】:
标签: encryption aes reverse-engineering ghidra