文章目录

  • 一、注入本质
  • 二、静态注入和动态注入
  • 三、静态注入两种方式 ( 修改动态库重打包 | 修改 /data/app/packageName/libs/ 下的动态库 )

一、注入本质


进程注入本质 是 监控 或 分析 目标进程 ( 被调试进程 ) 的运行状态 , 运行状态包括 :

  • 标志位
  • IP 寄存器值
  • SP 栈寄存器内容
  • EAX 值

其次 , 需要拿到 目标进程 ( 被调试进程 ) 的运行控制权 , 远程执行一些代码 , 一般是 查询 并 修改 进程内存数据 ;

常用的注入方式是使用 ptrace 函数 , 也可以使用 重打包 的方式 , 将 so 动态库文件打包到 APK 文件中 ;

重打包的 so 动态库是修改后的动态库 , 参考 【Android 逆向】逆向修改游戏应用 ( 分析应用结构 | 定位动态库位置 | 定位动态库中的修改点 | 修改动态库 | 重打包 ) 博客 , 修改了 Unity3D 的一个动态库的汇编代码指令 , 然后将修改后的动态库重打包回 APK 文件中 ;

重打包有一定的弊端 , 不是所有的应用都可以进行重打包的 , 有些应用加固后 , 无法进行重打包操作 , 此时就需要使用 ptrace 函数进行注入 ;

二、静态注入和动态注入


修改 APK 中的动态库的注入方式 是 静态注入 , 修改静态的动态库文件 ;

使用 ptrace 函数 , 在程序运行后 , 向进程内存中注入 动态库 , 动过注入的动态库 查询 修改内存 , 这种方式是 动态注入 ;

三、静态注入两种方式 ( 修改动态库重打包 | 修改 /data/app/packageName/libs/ 下的动态库 )


静态修改的两种方式 :

方式一 : 直接修改 APK 中的动态库 , 然后进行重打包 ;

方式二 : 如果遇到不能进行重打包 , 还想要静态注入的情况 , 可以修改 /data/app/包名/libs/ 目录下的动态库 , 这个动态库可以进行修改 ;

【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )相关推荐

  1. android打开另外的app两种方式,内置到自己本身的app,重新打开app,

    android打开另外的app两种方式,内置到自己本身的app空间,重新打开app空间, 目录 1.内置到自己本身的app空间, 2.重新打开app空间, 1.内置到自己本身的app空间, 被打开的a ...

  2. android动态居中布局,Android动态添加布局的两种方式

    释放双眼,带上耳机,听听看~! 前言 大多数时候我们布局都是用xml来布局的,但有些时候也是会用到动态布局的,尤其是在一些大项目中,动态布局更是体现的淋漓尽致. 所以今天我们就来学习一些动态加添布局的 ...

  3. Android实现资源动态加载的两种方式

    这是Android Apk源加载机制原理分析以及动态加载实现系列文章 的最后一篇.经过前两篇的介绍之后,相关基础都讲的差不多了,现在要实现自己项目中的资源加载框架,这里提供两种方式,区别在于由谁来加载 ...

  4. android动态改变布局,Android 动态添加布局的两种方式

    前言 大多数时候我们布局都是用xml来布局的,但有些时候也是会用到动态布局的,尤其是在一些大项目中,动态布局更是体现的淋漓尽致. 所以今天我们就来学习一些动态加添布局的两种方式,分别是 动态添加xml ...

  5. android数据回传多个页面_Android菜鸟起飞|使用Intent实现Activity跳转的两种方式(无回传数据和有回传数据)...

    使用Intent实现Activity跳转的两种方式 1. 使用startActivity(intnet)方法实现无回传数据的Activity跳转: 使用方法: 为实现跳转动作的控件绑定监听器,在点击事 ...

  6. android 图片铺满imageview,简单实现ImageView宽度填满屏幕,高度自适应的两种方式...

    两种方式 1.重写View的onMeasure方法 参考这里easion_zms的专栏 核心代码 protectedvoidonMeasure(intwidthMeasureSpec,intheigh ...

  7. Dagger2 知识梳理(1) Dagger2 依赖注入的两种方式

    一.资料推荐 最近这几天一直在看有关Dagger2有关的文章,感觉就是这东西真难用.真难懂,数次想要放弃,还好有网上大神的教程帮助,模模糊糊总算能把基本的几个概念跑通了. 这里首先推荐 牛晓伟 的下面 ...

  8. spring 注入bean的两种方式

    我们都知道,使用spring框架时,不用再使用new来实例化对象了,直接可以通过spring容器来注入即可. 而注入bean有两种方式: 一种是通过XML来配置的,分别有属性注入.构造函数注入和工厂方 ...

  9. android 图片方法,分享实现Android图片选择的两种方式

    Android选择图片的两种方式: 第一种:单张选取 通过隐式启动activity,跳转到相册选择一张返回结果 关键代码如下: 发送请求: private static final int PICTU ...

最新文章

  1. 独家 | 如何用XGBoost做时间序列预测?
  2. 机器学习视觉图像算法工程师--面试笔试--常考知识点乱找总结
  3. [Codeforces757G]Can Bash Save the Day?——动态点分治(可持久化点分树)
  4. linux运行星际争霸1
  5. lan口配置 petalinux_PetaLinux安装及使用
  6. 前端学习(3083):vue+element今日头条管理-表单数据绑定
  7. python中难的算法_一个python的比较难的算法,有懂的人可以进来一下
  8. linux内存管理(十五)-内存池
  9. Kubernetes网络模型概念
  10. MVC4 中使用 Area 和 注意的地方
  11. 18.pika 安装
  12. c语言怎么添加搜索功能,C语言实现二叉搜索树的创建、插入、删除和查找
  13. jq json格式化工具
  14. html流特性,CSS深入理解流体特性和BFC特性下多栏自适应布局_html/css_WEB-ITnose
  15. delphi第三方组件总述
  16. TeXmacs Bibtex文献排序
  17. 【操作系统】第二章--进程的描述与控制--深入与解释(1)
  18. 获取一个月有多少天,生成日历
  19. 关于eclipse无法连接手机调试问题
  20. 【大厂算法系列】学数据结构与算法有用吗?时间与空间复杂度的定义与计算

热门文章

  1. saltstack的基础入门文档
  2. 应用按home键无最近应用
  3. 06.系统编程-3.进程VS线程比较
  4. GraphicsMagick 1.3.25 Linux安装部署
  5. ESP系列AT指令开发笔记
  6. And it's over,And it's a new start
  7. 手机端实现点击复制功能
  8. 边工作边刷题:70天一遍leetcode: day 33-3
  9. matlab mod()rem()
  10. 一个高(3D/2D)动态表现的酷站