我想了解更多关于 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。之后情况如何?在所有教程中,我发现它看起来很简单,因为函数查找器可以找到 AES 函数 - 但由于项目是裸机,这可能无法正常工作。
我认为 FindCrypt 寻找某种可能导致密钥的十六进制模式......
我附上了二进制文件。字节序很小,架构是 ARM Cortex(我认为?!)