在分析一款APK时,需要用到动态调试,我采用AndBug来调试java层代码,
系统是Ubuntu 13.04,Andbug如下命令下载和编译
homepage:https://github.com/swdunlop/AndBug
git clone https://github.com/anbc/AndBug.git
make
我在使用和搭建过程中总共碰到了以下一些问题,这里给出相应的解决方法:
1.Ubuntu调试Android真机的问题
由于APK需要真机运行,所以这里必须使用真机调试,如果是用模拟器的,可以忽略这个问题
直接插上Ubuntu系统,用adb devices显示如下:
????????? no permission
设备无法显示也无法访问,解决方法:
1)
>lsusb
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 046d:c05a Logitech, Inc. Optical Mouse M90
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 413c:2107 Dell Computer Corp.
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 006: ID 12d1:1035 Huawei Technologies Co., Ltd.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
找到我们的HuaWei手机那栏
查看vendor id,华为的手机,是12d1
2)在
/etc/udev/rules.d/目录下建立50-android.rules规则文件,内容如下:
SUBSYSTEM==”usb”, ATTR{idVendor}==”12d1″, MODE=”0666″
如果无法创建文件,先su到root权限
3)
chmod 777 /etc/udev/rules.d/50-Android.rules
重启udev服务
sudo /etc/init.d/udev restart
4)重启adb server
adb kill-server
adb start-server
5)再次查看adb devices
就可以看到正常显示的手机名称了,不再是乱码
./andbug shell -p 12345 却出现
Connection reset by peer的问题,这个问题我网搜索了好久,包括原贴和官网上都没有相关提示,
我尝试去attach其它进程,发现其它进程是可以成功的,继而我想到可能是debuggable的问题,
我先用静态分析里提到的工具apkide逆向,重新编辑AndroidManifest.xml文件,在applicaton那栏,添加
android:debuggable=true
然后用apkide工具的编译生成apk,在编译过程中,总会出现一些error,根据提示修改下即可。然后再把新生成的apk
安装到真机上,再按照之前的命令调试,成功。
3.使用method-trace提示错误
method-trace com.testpp.ttpack sendData
提示说参数太多,这里 com.testpp.ttpack是完整类,sendData是函数。
后来我尝试method-trace com.testpp.ttpack.sendData则成功,发现这些都是一些小陷阱啊。
明明其它break命令类和函数中间是空格分开的,而method-trace却还是用‘.’来分隔。