调试(ASM)运行Android应用程序

时间:2014-09-08 12:20:00

标签: android debugging assembly android-ndk

所以我用谷歌搜索了这个,但是找不到确定的答案。

我有一个Android应用程序,它执行一种背景计算。我不再能访问源代码,而且使用NDK编写代码也不能使用dex2jar。

我想做的是以某种方式附加一个调试器并查看计算的asm来解决它,因为我想不出其他任何方法来做到这一点?

网络上似乎没有太多关于此的信息。

1 个答案:

答案 0 :(得分:0)

如果APK是在调试模式下构建的(包含gdbserver),你可能会让它工作,但你可能需要解析ndk-gdb脚本,或者构建一个ndk-gdb可以看到的模拟项目做它的魔力。

或者,如果您没有在运行时单步调试(检查寄存器等),您也可以反汇编.so文件。试试<NDK>/toolchains/arm-linux-androideabi-*/prebuilt/*/bin/arm-linux-androideabi-objdump -d libfoo.so。如果检测到手臂与拇指模式不起作用,您可能需要添加-M force-thumb。这显然需要更多工作,您无法检查中间值,但几乎任何库都应该可以使用。