ida调试so
为什么要学这个?
现在人们都喜欢把关键的核心逻辑写在so里边.如果想抄代码,爬服务器,破解的话就必须对so进行逆向.
准备工作.
过程.
- 用android studio 建一个包含c++的工程.
都使用默认项一直下一步,得到一个包含jni的项目. - 稍作修改.
为了调试方便我们写一个简单的click函数来触发调用so的事件.
public native String stringFromJNI();
public void dealClick(View view) {
}TextView tv = (TextView) findViewById(R.id.sample_text); tv.setText(stringFromJNI());
- 编译出apk,解压拿到so文件.
- 放到ida里边 ,搜函数名,找到代码,下断点.
- 启动android_server.
在ida安装目录(\IDA 7.0\dbgsrv)下找到android_server拷贝到安卓手机的/data下,改权限chmod 777 android_server
然后执行./android_server
. - 设置ida pro调试选项 然后附加进程.
ip是同一局域网下手机的ip(不在同一局域网下需要端口转发).端口号固定23946
选择附加进程 - 点击手机按钮,断下来了!!
结论.
至此我们完成了ida调试so的全过程.有两点需要注意,一是真正调的时候绝对不会这么顺利的,肯定有各种反调试手段等着我们,二是1-3步在实战中是没有的. 下一步就是找个软点的柿子实战一下了.