当前位置: 首页 > news >正文

Android逆向学习(十一) IDA动态调试Android so文件

Android逆向学习(十一) IDA动态调试Android so文件

一、 写在前面

这是吾爱破解论坛正己大大的第12个教程,并且发现一个神奇的事情,正己大大的教程竟然没有第11个,感觉很奇怪

写这个博客的主要原因是希望提供一种新的解法,并且记录自己android逆向学习的过程,所以本博客会有很多实际操作的方法,喜欢的话可以点个免费的赞

我的操作系统还是用的linux,windows也可以,流程也基本是一样的

二、课程目标

了解so加载流程,IDA开启动态调试,SO的防护手段。

三、课程内容

1. android中so文件的加载

直接看源代码:https://android.googlesource.com/platform/libcore/+/15d8280/luni/src/main/java/java/lang/System.java

可以简单了解调用so文件的流程:

Java 层 → System.loadLibrary → Runtime → VM ClassLoader → linker(android_dlopen_ext) → mmap so → 解析 ELF → JNI_OnLoad → so 注册方法 → Java 可以调用

其实就是通过JNI_OnLoad的方法把so文件给加载进来。

2. IDA对android的so文件动态调试

首先在IDA pro的安装路径下面找到android_server,选择对应的架构

在这里插入图片描述

然后使用命令将android_server上传到/data/local/tmp路径下,赋权并以root用户运行,这个类似于之前使用frida调试。

adb push android_server /data/local/tmp

上传之后先使用adb shell 启动android中的shell,然后按照下面流程走,就可以启动android_server

apollo:/ $ su
apollo:/ # cd /data/local/tmp
apollo:/data/local/tmp # ls
android_server  frida-server-16.7.14-android-arm64
apollo:/data/local/tmp # chmod 755 android_server                              
apollo:/data/local/tmp # ./android_server                                      
IDA Android 64-bit remote debug server(ST) v9.0.30. Hex-Rays (c) 2004-2024
2025-07-23 21:59:09 Listening on 0.0.0.0:23946...

和上个博客一样,打开ida pro,并分析对应的so文件

在这里插入图片描述

之后转发手机的23946端口

方法就是打开一个新的命令行窗口,并且输入

adb forward tcp:11111 tcp:23946

调整IDA pro的debug设置

首先是Debugger -> Switch Debugger选择远程android

在这里插入图片描述

然后是Debugger -> Debugger options
在这里插入图片描述

还有Debugger -> Process options

在这里插入图片描述

之后正常安装应用,并打开运行应用,并且打开加载的so部分的activity,也就是第七关,并且要触发so文件加载,也就是先随便一个验证一下,这样so文件加载之后,打开之后点击Debugger -> Attach to Process

然后ctrl+F搜索对应的线程

在这里插入图片描述

选择对应线程就会出现这个窗口,出现这个窗口说明我们加载成功了

在这里插入图片描述

然后点same后,从右边的modules中选择对应的so文件

在这里插入图片描述

并找到对应的check函数

在这里插入图片描述

双击之后就可以打断点调试了

在这里插入图片描述

然后点击Debugger ->Continue process,就可以进行调试了,F9 运行,F8 单步步过

点击手机上的验证,可以看到线程被卡到标点处了,需要注意的是如图中,w22代表寄存器的低 32 位,也就是右边x22的后几位,可以看到MOV W22, #1后,右边寄存器也发生了变化

在这里插入图片描述

这个有个小失误,就是在上一个博客中,已经对代码进行了修改,使其一直返回true,也就是这段代码,然后忘记改回来了

MOV W22, #1

所以这次为了验证动态调试修改有效,所以这次就动态修改为返回false,对寄存器进行修改,修改成全0,然后F9继续

在这里插入图片描述

就会发现原来一直成功的变成失败了,说明之前的修改起效了

在这里插入图片描述

3. SO的防护手段

这一段就是代码混淆技术,这个代码混淆技术就是比较概念性的东西,这里就不进行描述了,因为写这个教程主要是为了记录实际操作的过程。


文章转载自:

http://l3aTgra3.mkzdp.cn
http://gz1NiZtw.mkzdp.cn
http://ymryuexA.mkzdp.cn
http://IAamnr7L.mkzdp.cn
http://9R4T8cqC.mkzdp.cn
http://zJdmajjH.mkzdp.cn
http://FzgcnODp.mkzdp.cn
http://lJSVVmVa.mkzdp.cn
http://VlI9qkok.mkzdp.cn
http://Ksf2WJic.mkzdp.cn
http://XOallWPA.mkzdp.cn
http://3tRGEI9M.mkzdp.cn
http://7iouWRTx.mkzdp.cn
http://p17zTuqO.mkzdp.cn
http://qukvpqhl.mkzdp.cn
http://hU470LLM.mkzdp.cn
http://Sp8JaWg8.mkzdp.cn
http://5gXgvO1f.mkzdp.cn
http://g0QGVIlL.mkzdp.cn
http://6lNLBaBE.mkzdp.cn
http://eYSQ0Wiw.mkzdp.cn
http://TITjLqAG.mkzdp.cn
http://Is9XCx4j.mkzdp.cn
http://sXsU6Otx.mkzdp.cn
http://dKq1XXKf.mkzdp.cn
http://r0JL0Xl4.mkzdp.cn
http://N3VignEV.mkzdp.cn
http://yz7PgCgG.mkzdp.cn
http://QLhgyzGE.mkzdp.cn
http://yvChSOzK.mkzdp.cn
http://www.dtcms.com/a/378918.html

相关文章:

  • 第二篇:排序算法的简单认识【数据结构入门】
  • 嵌入式铁头山羊stm32:一文总结
  • HDFS(Hadoop 分布式文件系统)知识点梳理
  • AI幻觉的罪魁祸首
  • JVM 基础
  • 计算智能的概念和其算法的主要算法类型
  • leetcode25(有效的字母异位词)
  • [Windows] FileOptimizer v17.1.0_一款文件批量压缩工具
  • 淘宝/天猫按图搜索(拍立淘)item_search_img API接口实战指南
  • Java优选算法——二分查找
  • leetcode380:RandomizedSet - O(1)时间插入删除和获取随机元素(数组+哈希表的巧妙结合)
  • 经典蓝牙的 BR(Basic Rate(基础速率))
  • 牛客周赛 Round 108题解
  • Rocky9.0去堆叠双发arp(支持“ARP 广播双发”)
  • 「京墨」1.15.0 诗词、成语、对联、句子、诗歌…
  • AWS TechFest 2025: 风险模型的转变、流程设计的转型、生成式 AI 从实验走向实施的三大关键要素、评估生成式 AI 用例的适配度
  • 【Blender】二次元人物制作【二】:五官的制作
  • MinIO集群部署详细步骤(高性能的分布式对象存储系统)
  • 带地图的 RAG:多模态 + 地理空间 在 Elasticsearch 中
  • 使用 Spring AI Alibaba Graph 实现工作流
  • 【Debug日志 | DDP 下 BatchNorm 统计失真】
  • linux C 语言开发 (六) 程序的编辑和编译(vim、gcc)
  • 综合文化信息管理系统|基于java和小程序的综合文化信息管理系统设计与实现(源码+数据库+文档)
  • 20250911_10.1.11.46车辆定位aidata-01_Apache Doris分布式数据库全量备份(本地+异地)Python脚本
  • DenseNet网络
  • 2025胶水分装机服务商技术解析:聚焦高精度、智能化应用
  • Drawnix白板本地部署指南:cpolar实现远程创意协作
  • leetcode189.轮转数组
  • SPI设备驱动
  • 第七节,探索 ​​CSS 的高级特性、复杂布局技巧、性能优化以及与现代前端工作流的整合(二)