所以我用谷歌搜索了这个,但是找不到确定的答案。
我有一个Android应用程序,它执行一种背景计算。我不再能访问源代码,而且使用NDK编写代码也不能使用dex2jar。
我想做的是以某种方式附加一个调试器并查看计算的asm来解决它,因为我想不出其他任何方法来做到这一点?
网络上似乎没有太多关于此的信息。
答案 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
。这显然需要更多工作,您无法检查中间值,但几乎任何库都应该可以使用。