【发布时间】:2014-09-08 12:20:00
【问题描述】:
所以我用谷歌搜索了这个,但找不到明确的答案。
我有一个执行某种后台计算的 Android 应用程序。我不再可以访问源代码,而且它是使用 NDK 编写的,所以不能使用 dex2jar。
我想做的是以某种方式附加一个调试器并查看计算的汇编来解决它,因为我想不出任何其他方法来做到这一点?
网上似乎没有太多关于这方面的信息。
【问题讨论】:
标签: android debugging assembly android-ndk
所以我用谷歌搜索了这个,但找不到明确的答案。
我有一个执行某种后台计算的 Android 应用程序。我不再可以访问源代码,而且它是使用 NDK 编写的,所以不能使用 dex2jar。
我想做的是以某种方式附加一个调试器并查看计算的汇编来解决它,因为我想不出任何其他方法来做到这一点?
网上似乎没有太多关于这方面的信息。
【问题讨论】:
标签: android debugging assembly android-ndk
如果 APK 是在调试模式下构建的(包含 gdbserver),您可能会让它工作,但您可能需要仔细分析 ndk-gdb 脚本,或者构建一个 ndk-gdb 可以查看的模拟项目在发挥它的魔力。
或者,如果您可以在运行时不单步执行它(检查寄存器等),您也可以反汇编 .so 文件。试试<NDK>/toolchains/arm-linux-androideabi-*/prebuilt/*/bin/arm-linux-androideabi-objdump -d libfoo.so。如果手臂与拇指模式的检测不起作用,您可能需要添加-M force-thumb。这显然需要更多的工作,并且您无法检查中间值,但几乎可以使用任何库。
【讨论】: