我正在尝试使用 APKTOOL、Smali 等工具以及 Eclipse 和 NetBeans 等 IDE 制定黑盒测试 APK 的方法。我有我需要的大部分东西——我可以反编译/调试仪器/重新编译/签名/对齐并在设备上运行。
我遇到的问题是在附加调试器后设置断点(断点在 Smali 代码中设置)。看来断点没有提交给 Dalvik 或 Dalvik 没有遵守断点。无论哪种方式,当程序遇到断点时,调试器都不会捕捉。一些研究表明我可能需要Debug.waitForDebugger
. (http://stackoverflow.com/questions/3107587/android-with-jdb-confusion-using-waitfordebugger)。
假设是下一个障碍,我可以在调整本地堆栈后waitForDebugger
使用 Smali 语法插入它。invoke-static {}, Landroid/os/Debug;->waitForDebugger()V
我的问题是,我在哪里插入呼叫waitForDebugger
?我应该在静态构造函数 ( )、实例构造函数 ( )还是其他地方选择MainActivity
(来自清单) ?诸如 Eclipse、NetBeans 等 IDE 如何在其调试版本中做到这一点?clinit
init
onCreate