前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android 逆向】Android 进程代码注入原理 ( 注入本质 | 静态注入和动态注入 | 静态注入两种方式 | 修改动态库重打包 | 修改 /data/app/xx/libs 动态库 )

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

作者头像
韩曙亮
发布2023-03-29 20:24:47
1K0
发布2023-03-29 20:24:47
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、注入本质


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

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

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

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

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

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

二、静态注入和动态注入


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

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

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


静态修改的两种方式 :

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、注入本质
  • 二、静态注入和动态注入
  • 三、静态注入两种方式 ( 修改动态库重打包 | 修改 /data/app/packageName/libs/ 下的动态库 )
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档