我正在尝试对一个黑匣子系统进行逆向工程/研究,这是一个根本没有公开信息的系统。假设该系统是一个现代手持控制台。
我已经收集了以下信息和数据:
- 系统使用 ARM 处理器,我知道它们的版本(准确地说是 ARM9 和 ARM11)
- 该系统启用了 NX 位(所以我认为它有一个 MMU)。此外,一些关键应用程序运行在裸机上,而普通用户程序运行在虚拟内存上
- RAM 内容未加密。使用硬件设置,我有内存转储。
所以,我有内存转储。什么是有效的方法?
首先,我相信用 IDA(或 r2)加载它可能会有所帮助。但我不知道如何在 IDA 中设置原始转储,我是否必须手动加载它?我错过了什么吗?
其次。转储未加密。我可以找到字符串、对在系统中运行的程序字符串的引用等......我想我也可以找到我应该能够反转的代码(如 PC 中的 .text 部分,但无论在这个系统中调用什么)。这个理论对吗?如果是这样,如何将其付诸实践?我怎样才能找到代码片段?我试过熵,它似乎很有用;代码往往具有高熵。从技术上讲,我如何在 IDA 中正确加载该代码?
一切都欢迎
编辑:在 ram 转储上运行 binwalk。很有趣:https : //gist.github.com/pedro-javierf/2476a1f4f0db72b785e414f77c273512