adb 是谷歌开发的 电脑控制手机的 调试桥
adb devices
adb shell //要用到 adb指令 基本都要先 运行这个指令
ls //查看当前目录下的 文件
adb push xxx.android_server /data/local/tmp/as //上传as 到手机的目录里
cd /data/local/tmp //到这个目录去
./as //运行当前目录下的 这个as
chmod 755 as //给as权限
ls -l //列表形式 查看当前目录下的文件 (权限列时间列等等)
adb forward tcp:23946 tcp:23946 //前面的23946是电脑端口可以修改
//意思是 把手机上的 23946端口 映射到 电脑上23946端口上
adb shell
su // 得到root权限
adb shell
logcat |grep 关键字符串 //cmd里打印出来 过滤关键字符串的 log信息
adb shell //进入手机的linux shell
su
ls //查看当前目录下的文件 可以看到 根目录下 有个 proc 文件
cd proc //来到 proc目录
ls //这时可以看到 很多 数字命名的 数字就是 进程的 PID
ps // 查看有哪些进程 列表形式显示 第二项就是进程 PID
cd 10420 //这个10420是进程PID 具体自己改 意思是来到 10420这个目录
ls //查看到上面10420目录下的 文件 里面有个status文件 保存了进程的状态
cat status //查看status这个文件里的内容 注意这是文件 不是目录 类似于txt文本 可以看到 里面有 TracerPid 字段值 没有被调试的时候 值为 0
cd … //到当前目录的上一层目录
ps |grep wuba //wuba 是关键字 意思是 查看过滤关键字wuba 的进程 grep是过滤的意思
am start -D -n 包名/入口activity名
//以调试模式 启动这个 apk
放到system/bin 目录下 的 可以直接启动
动态调试(以调试模式启动)
1:
adb shell
su
chmod 755 /data/local/tmp/as
/data/local/tmp/as
2:
adb forward tcp:23946 tcp:23946
3:
adb shell
adb start -D -n 包名/.入口activity
4:
monitor (或是开启DDMS)
5:
打开IDA 附加进程 关键位置下断点 运行
6:
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700