小程序卸载不起作用,当SIM卡插入手机,收到0x6985



在过去的一周里,我正在为一个奇怪的情况而苦苦挣扎。我正在尝试删除一个小程序,但响应删除命令时0x6985。

场景:

  1. SIM卡中存在小程序X。
  2. SIM卡插入手机。
  3. 安卓应用程序将从服务器接收命令,并通过电话管理器将这些命令发送到SIM卡。
  4. 服务器控制所有命令,并具有身份验证所需的所有密钥,并且所有 AID 都是已知的。
  5. Android应用程序充当桥梁,将命令引导到SIM卡并将响应发送回服务器。

在我的生态系统中,小程序是如何相互连接的?

还有一个小程序,即Y,它保存了一个小程序的引用,
  • 即X.[我知道在Y释放X小程序的引用之前删除将不起作用]
  • 在 X 小程序的
  • uninstall((方法中,我调用了 Y 小程序(通过共享接口(,在那里我释放了 X 小程序的引用。

问题场景:

  • 在离线模式下,当我为 X 小程序发送删除命令时,任何时候通过阅读器。它被成功删除。
  • 为了验证 Y 小程序
  • 是否正在从 X 小程序接收调用,我在 Y 小程序中的一个缓冲区中设置了一些数据。[这证实了 Y 小程序接到了电话,并且以这种方式成功发布了参考。我通过一些内部设计的命令获得此缓冲区数据,这证实了是否发生了。

手机中的SIM卡的情况

  • 当服务器为 X 小程序发送删除命令时,作为响应,我得到0x6985。

  • 我调用 Y 小程序并检查 Y 的缓冲区中存在哪些数据,该缓冲区对 X 收到的呼叫负责。在那里,永远不会收到来自 X 的呼叫。

使用读卡器不在移动设备中完成的情况

  • 使用PCSC阅读器,当删除命令发送到X时,小程序X成功删除。

  • Y 小程序
  • 的缓冲区数据确认从 X 小程序接收到调用。

我的观察:
我尝试了各种可能的方法来完成这项工作,但每次都失败了。小程序X和Y的上限文件相同,即用于手机和读卡器。我觉得电话管理器
存在一些问题,因为我在这里找不到任何其他罪魁祸首,但我缺乏电话管理器的经验。
非常感谢有关此主题的任何帮助。

如果使用不同的卡,则可能会有实现差异。通常,仅当另一个小程序没有引用一个小程序时,才应删除该小程序。即使在删除时删除引用是一个有效的选择,我也想知道操作系统制造商是否总是会正确处理该部分:您仅在选择删除后调用uninstall,并且仅在您知道没有更多引用时才删除 - 一个相当完美的第 22 条。

问题也可能是正在使用Applet X(甚至可能是Y(的实例之一。如果是这种情况,则删除也不可用。我不确定拥有两个上下文是否是您的卡实现的一种选择;这些不是多核野兽。

最后调试6985很难。ISO 7816状态词更多的是关于语法而不是语义;他们只给你最低限度的信息。6985 相当于"运行时错误",所以是的,恐怕你可以花很多时间调试。

最新更新