LOADING

加载过慢请开启缓存 浏览器默认开启

调试学习

arm文件

  • 安装qemu-arm虚拟机以及依赖
apt install re2c
apt install ninja-build
apt install build-essential zlib1g-dev pkg-config libglib2.0-dev
apt install binutils-dev libboost-all-dev autoconf libtool libssl-dev libpixman-1-dev libpython-dev python-pip python-capstone virtualenv
apt install libpixman-1-dev
apt install bison flex
apt install meson
apt install libpixman-1-dev
apt-get install libpcap-dev libnids-dev libnet1-dev
apt-get install libattr1-dev
apt-get install libcap-ng-dev

qemu-arm –version #用于检查安装是否成功

qemu-arm -g 23946 文件

启动程序。
23946是ida默认端口,也可以自己换。

ifconfig #查看ip地址

在ida上选择remote GDB debugger调试输入地址就行即可。


apk文件

用jeb进行调试,需要app或模拟器开启debug调试
adb启用应用调试

adb shell am start -D -n 包名/类名

例如: adb shell am start -D -n com.zhuotong.easyctf2/.MainActivity

记得加点在mainactivity前

下断点快捷键:ctrl+B,只能在汇编页面下断点
然后在jeb里面连接,在右侧就可以看到变量的值

注意,有些值可能不在这个外层方法使用,这个时候我们要先单步进入到方法里面才可以拿到值


so文件

先把ida的调试文件用adb push到机器里面,然后赋予执行权限,启动合适的服务。

adb root
adp push filelocation /data/local/tmp
adb shell 
su
setenforce 0             #关闭进程保护
cd /data/local/tmp
chmod 777 *
./fliename

adb forward tcp:23946 tcp:23946  #新开一个命令行设置端口转发
adb shell dumpsys activity top  #获取前端的包名

接下来打开安卓sdk中自带的ddms,输入下面命令启动程序

adb shell am start -D -n 包名/.类名  #启动应用调试
示例: adb shell am start -D -n com.test.app/.MainActivity

在ddms中记住调试进程的端口。现在来到ida中配置,选择debugger,process options,在hostname中填入127.0.0.1,port默认23946,然后再到debugger中选择attath to process,选择要调试的安卓进程。记得打上一个断点,进入后会卡住,这时候我们输入,其中port后面的数字就是我们记住的端口。

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700