【问题标题】:Can JDWP be used in a real device without ADB?JDWP可以在没有ADB的真实设备中使用吗?
【发布时间】:2014-04-07 09:39:23
【问题描述】:

Android 的 DVM 在 JDWP 协议之上使用 DDM 协议。在文档和示例中,需要 ADB 作为桥(实际上 ADB 是 Android 调试桥)。

我的问题是:是否可以开发具有所有 DDM 或 JDWP 协议的 APK 以跟踪真实设备中的应用程序?或者有什么保护措施?

【问题讨论】:

    标签: android android-debug adb


    【解决方案1】:

    Android 应用程序配置为与 ADB 守护程序对话以进行 JDWP 连接。 DDMS 查询 ADB 守护程序以获取可调试进程的列表。 (输入adb jdwp 自己查看列表。)

    如果 Dalvik 被配置为侦听 TCP 套接字,您可以使用 adb forward 设置端口转发,然后直接通过 TCP 将调试器连接到它。在 DDMS 出现之前的早期,开发就是以这种方式完成的。

    (直到今天,在 ActivityThread 的第 4185 行附近,您可以看到它宣布它正在端口 8100 上等待。历史爱好者也可能会发现 DDMS design doc 中的“连接建立”部分很有趣。不知道为什么该文档全部用斜体显示。)

    目前,Dalvik VM 仅通过 ADB 侦听连接,因此您无法以任何其他方式将基于 JDWP 的调试器附加到应用程序。

    【讨论】:

    • 尽管所有这些都是有用的信息(众所周知),但问题仍然存在。是否有任何方式(伪造 adb)来访问 JDWP。现在在模拟器中我有一个 APK,它可以 adb forward 并进行 JDWP 握手。我不知道这是否适用于真实设备。也许启用调试 USB?好吧,我想我会在 2 到 3 天内自动回复我。 :) 但是坦克
    • 我不明白您所说的“伪造 ADB”是什么意思——您在真实设备上拥有 ADB,为什么需要伪造它?
    • 也许fake 不是我要找的词。我想说我正在充当 ADB 客户端,但在设备内部。可能是冒充?我不知道,但我的想法是我正在与 ADB 服务器“对话”以打开 JDWP 通道。
    • 所以你想像调试器一样连接,但是从设备上的进程而不是主机上连接(例如,也许设备没有插入任何东西)?我认为这行不通——设备上运行的 adbd 只监听 USB 进行连接。
    猜你喜欢
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 2013-04-03
    • 2015-01-03
    • 2015-10-30
    相关资源
    最近更新 更多