IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> ida动态调试so文件,踩坑记录 -> 正文阅读

[移动开发]ida动态调试so文件,踩坑记录

正常流程

1.推送文件

adb push android_server

注意模拟器选x86系列, 真机的话要选android_server
在这里插入图片描述
不要选armlinux!!!

2.进入shell

adb shell

真机要用su切换到root用户,模拟器不用

su

进入tmp目录

cd /data/local/tmp

修改权限

chmod 777 android_server

运行

./android_server

端口转发

adb forward tcp:23946 tcp:23946

在这里插入图片描述

3.ida

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
出现这个界面就成了
选择要调试的app,然后ctrl+s选择要调试的so文件,
可能有多个,选择有执行权限的第一个在这里插入图片描述

按键盘G键, 输入要跳转的绝对地址,
绝对地址 = so文件基地址 + 静态调试so文件偏移量

2.有反调试

ida调试原理:IDA调试原理 是利用Linux系统 ptrace 来实现
当应用被调试时,应用内存里的TracerPid 字段就不为0
查看进程号

ps | grep 包名
我用这个不太好使
top也可以

在这里插入图片描述

//打印该APP里内存状态信息
 cat /proc/pid(进程ID)/status

TracerPid为 0 代表 没有被调试,不为0代表在被调试。
so文件反调试的手段就是新建一个线程不断检测TracerPid是否为0

解决办法

动态调试,找到检测TracerPid的代码,不执行此代码
此检查代码一般在.init_arraJNI_OnLoad两处
JNI_OnLoad函数出打断点调试,找到检测TracerPid的代码,不执行此代码
普通打断点的方式是进不去的,要让app处于调试模式

如何在JNI_OnLoad函数打断点

so文件在加载阶段会执行JNI_ONLoad,此后不再执行,要在so文件加载阶段才能给JNI_OnLoad打断点

  • 修改APP AndroidMenifest.xml文件, APP加上可调试权限,android:debuggable="true",
  • 检查flags中是否有应许debug
    adb shell dumpsys package com.yxxxx.xxx
    在这里插入图片描述

至于怎么加,文档放这:https://developer.android.google.cn/guide/topics/manifest/application-element?hl=zh-cn

步骤

以调试模式启动app

adb shell am start -D -n 包名/.类名
adb shell am start -D -n com.yaotong.crackme/.MainActivity

在这里插入图片描述
在这里插入图片描述

打开ida

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

查看进程id

adb shell 先进入
top 或者 ps | grep 包名
看pid

使用jdb命令让app恢复运行

adb forward tcp:8700 jdwp:29268
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700

在这里插入图片描述
如果报这个错误,那么打开ddms
在这里插入图片描述
查看ddms里面的端口,发现是8600
在这里插入图片描述
出现这个就成功了
在这里插入图片描述
这时ida会断住

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-13 09:23:14  更:2021-09-13 09:24:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:34:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码