QPST 是如何工作的,我怎样才能制作出喜欢它的应用程序?

逆向工程 固件 嵌入式 核心
2021-07-06 16:00:13

高通的 QPST 是如何工作的?或者 QPST 使用什么协议/命令?因为我想开发一个类似的应用程序,所以我搜索了 AT 命令。但是我找不到任何允许我访问(读/写)旧手机内部文件系统(固件)的 AT 命令。任何帮助,如 QPST 使用的命令/协议的名称,都值得赞赏。

或者如果我的问题是题外话,我应该去哪里问?

2个回答

有一个开源项目:openpst,它重新实现了 qpst 工具的大部分功能。

使用的一些协议是:

  • diag - 用于读取 nv 内存,并使用kDiagDload.
  • sahara - 由较新的高通芯片组中的主引导加载程序使用
  • dload,由 bootroms 和较旧的芯片组使用。
  • 流式 dload - 由闪存加载程序使用。
  • firehose - 与rawprogram0.xml文件一起使用的 xml 样式协议

闪烁通常是这样工作的:

  • 切换到 dload 模式,这将启动引导加载程序。
  • NPRG*.{hex,mbn}使用 sahara 协议上传Flash 加载程序
    • ENPRG*文件用于紧急引导加载程序模式,当引导程序无法在闪存中找到合适的主引导加载程序时启动。
  • 现在与NPRG加载程序交谈,使用流式 dload 协议,将二进制文件上传和写入闪存。

请注意,一些制造商通过将特定证书融合到处理器的一次性可编程保险丝中来锁定 bootrom。在这种情况下,bootrom 将只接受特定的二进制文件。

可以在此处找到合适的二进制文件集合

将嗅探器用于它使用的通信通道(很可能是 USB)来查看哪些数据被发送到您的设备。尝试搜索您在嗅探器中看到的常量,以查找可能负责生成发送到设备的数据的二进制文件。反汇编二进制文件,找到负责协议处理的确切代码段,手动反编译。有了这些知识后,编写自己的代码。