我在嵌入式开发方面很新,我开始使用STM32F429板来提高自己。
我刚刚为我的董事会开发了一个基本的凯撒加密应用程序。它运行良好,并将密钥定义为"3“。现在我想提取这个超级秘密(!)我设备上的钥匙。
谢谢!
发布于 2022-07-28 21:20:47
我想你要找的价值是硬编码的。在这种情况下,它驻留在内部闪存中。所以是的,内存转储是必要的。
我会走很长的路,假设你对它的工作原理知之甚少,所以如果你知道其中的一些东西,那么,好吧,对你有好处。我会试着给你一些建议。
特别是关于STM32的:
您可以选择从所谓的系统内存(即只读内存)启动微控制器,并且它已经通过引导加载程序从工厂预编程。您可以通过UART (最常见的方式,随ST-Link提供,但任何廉价的UART桥接器也能工作)与运行中的引导程序进行交谈。也可以是其他协议。除其他外,您可以要求引导加载程序读取其闪存。这是在AN2606.pdf中讨论的。它有一些有用的链接,例如:

文档名称,您可以在其中为任意接口找到特定的引导加载程序命令。当然,您只关心接口,您特定的MCU F429支持的引导加载器,这些都是在同一AN2606中找到的,页面172 (对于引导加载器版本0.7,对于那些MCU也有0.9,我不知道如何区分您有哪一个,so...try?)无论如何,UART的配置似乎是相同的):

那么到底需要做些什么呢?翻转BOOT0引脚的状态-永久地-并重置它(电源循环或复位引脚,两者都好)。您将启动MCU到引导加载程序,而不是从闪存引导程序。你可以在参考手册STM32F429第69页上读到它。它讨论了引导上的BOOT0和BOOT1引脚的状态。什么是boot0 -如果它们没有在你的板上标记,那么你将不得不查阅F429数据表,第69页(我发誓,这是一个巧合)。取决于您的具体IC,它将是一个或另一个。
它将按照上面的文档激活所有MCU外围设备,并等待它的UART和其他引脚等待命令。上面我提供的文档中列出的命令。让我们来看看关于USART的引导加载器的AN3155:

这些命令是

都在那份文件里,pdf中的目录确实能帮助你快速找到东西。当然,如果您需要特定的细节,并且需要有关特定命令的特定信息,那么这些信息也都在其中。命令中的字节数,每次从闪存读取的字节数等等。基本上,您可以编写自己的程序(甚至可以用受害者的引导加载程序编写另一个微控制器来编程该微控制器),或者使用任何其他知道发送给引导加载程序的命令的软件。它可以是ST实用程序,也可以是任何其他程序。它们都实现了完全相同的命令集,因此实际上并不重要。我找不到很多这样的程序,唯一突出的是stm32flash。我从没用过。我不介意ST的东西,因为我知道它能做什么(我想)。
哦,是的,回到把秘密价值拿出来。我差点忘了这件事。然后,在十六进制查看器/编辑器中打开转储,然后滚动它,寻找有趣的值组合。是啊,看上去就是这样。人们可以通过拆卸来运行它。滚动反汇编的代码,看看是否有突出的数字值。你知道,一些随机数字0xD35B581或在漂亮程序中间硬编码的东西可能意味着什么,比如序列号或秘密号码。不幸的是,我在这里已经到了我能力的极限,所以我不想再讨论如何处理转储了。
https://stackoverflow.com/questions/73105957
复制相似问题