才疏学浅,如有不对,请轻拍。

一个话题,将一个so注入到App中有几种方式?

1.Root,直接注入。

想必论坛的大部分人已经都会了,拿到了Root之后,我们可以利用ptrace直接注入。所以加固的第一点,便是反调试。

2.Root,将so作为系统so,这样任何App起来都得把so加载到app进程当中。

xposed的方式是重写孵化器,让孵化器能够加载自己的so,从而控制整个安卓。所以很多加固会去识别特征码,看是否有xposed的框架。

那么如果没有Root呢,我们如何往一个App里注入一个SO?

1.重打包

如果可以重新打包,我们可以反编译java层,在加载SO的地方,补一句加载So,把我们的SO放到App的Lib目录下。

2.我们启动App

其实关于我们启动App的方式有很多种,如果App的架构简单,我们可以反编译一部分App代码,重写java层,我们的java层去load原有App的So,在加载App的So的同时加载我们的So。

具体可以参考https://github.com/zhuowei/MCPELauncher/的做法。

如果App架构复杂,被加固了,无法重打包,无法注入,无法root,无法刷机,锁了BL,反正就这样了,我们是否还有办法注入?

自然还是可以!

关于VirtualApp要从安卓的插件化说起。

插件化,就是让App动态的加载一个磁盘的dex,这样实现热补丁技术,我们的Host进程类似于医生,长期稳定,而真正的dex则类似于病人,可以动态的修复。

其实加固的原理也类似于如此,加固的时候,我们拿到需要加固的APK将其中的dex给加密,然后替换掉入口,改为我们的壳APK入口,当壳加载了之后,我们再动态的加载原有的APK,这样静态反编译,得到的是壳Apk.

VirtualApp中我们重点关注下NativeEngine这个类,因为这个类会加载一个so,而且so会位于启动的apk当中。既然这里加载一个so,自然可以再加载几个也无所谓。

这个类加载的So做了很多事,包括hook系统的底层函数。replaceOpenDexFileMethod(envenv->GetObjectArrayElement(javaMethods)isArtapiLevel)

其中这个函数将OPen_Dex,给Hook掉了,想做dumpDex是不是可以在这里做呢?

这个SO还做了IO重定向,因为创造了虚拟空间,所以读写需要重定向。IOUniformer::startUniformer

这个函数中hook了一个hook_dlopen(api_level);

这里hook了linker当中的do_dlopen函数,这是so加载的函数,加壳的SO一般在加载的时候进行部分脱壳,所以我们也可以在加载了之后加载我们的so,进行hook。

由于很多手机linker是被处理过的不见得都能找得到符号,我们也可以利用其它办法。

不过这里就已经达到了我们想要的效果,在别人的App里加载一个我们的so,在别人so加载的时候,进行hook。

安卓 java hook 免root_[原创]利用VirtualApp实现免Root注入Hook(一)相关推荐

  1. android 360加固 例子,[原创]利用VirtualApp实现360加固的soHook简单例子

    简单demo,为抛砖引玉吧! 360的加固我们先写一个最简单的so,带导出函数. 这已经足够简单了,界面上打印这个值. 运行起来就这样. 简单的简直过分. 好了,现在我们让360加固一下. 拿下来自己 ...

  2. android无感知拍照github,装X指南之通过 VirtualApp 实现免 Root 权限 Hook

    装X指南之通过 VirtualApp 实现免 Root 权限 Hook 一.前言 之前写的 「装X指南之Xposed安装与配置」,有人反馈手机 root 风险较大,而且操作成本高,有没有什么方法是不需 ...

  3. java 蓝牙读取数据格式,单片机与安卓手机通过蓝牙串口模块利用JSON数据格式通信实例...

    原标题:单片机与安卓手机通过蓝牙串口模块利用JSON数据格式通信实例 JSON 指的是 Java 对象表示法(Java Object Notation),JSON 是轻量级的文本数据交换格式,JSON ...

  4. android系统应用开发_利用ADB工具免root停用Android系统应用

    最近迷上了安卓的开发,写篇冻结app的教程吧. 主要是实现,免root冻结系统中的某些应用,你懂得哈哈 利用ADB工具免root停用Android系统应用 - Hanada​hanada.info 上 ...

  5. [原创]利用橡皮条技术画图

    [原创]利用橡皮条技术画图 在进行有绘制图形功能的软件开发中都会面临橡皮条技术,所谓橡皮条技术就是在绘制过程中出现鼠标移动的记录,当鼠标松开时绘制完整的图形.下面给出一个简单的橡皮条技术的应用,该应用 ...

  6. 安卓逆向-盲狙加密方法 | 安卓/JAVA 常用API查询网站

    目标app-引力波 首先了解在java中进行md5加密会用到的方法,然后对方法进行hook盲狙 在https://tool.oschina.net/apidocs/apidoc?api=jdk-zh进 ...

  7. java beans 组件_如何利用JavaBeans在应用程序中创建组件?

    JavaBeans模块使开发人员能够创建称之为组件的软件单元(也就是我们熟知的beans).你可以把beans加载在更复杂的组件.Java小型应用程序(applets)或应用程序上.JavaBeans ...

  8. java jeditorpane 自动换行_JDIC 中利用WebBrowser内置浏览器到java application中 | 学步园...

    JDIC简介: JDesktop Integration Components (JDIC),是一个开源的项目,目的是构建消除本机应用程序和 Java 等价物之间差距的组件.项目组长是个中国人.该项目 ...

  9. java 调用.net webservice axis2_java利用axis2调用.net写的webservice,传递自定义的实体类参数...

    利用axis2可以很方便的自动生成客户端代码,同时对复杂参数类型的传递也很方便,本文的服务端以.net开发,有一个自定义的实体类作为参数,客户端用java,简单介绍一下利用axis2的wsdl2jav ...

  10. Java DO到DTO转换利用spring 的BeanUtils.copyProperties

    Java DO到DTO转换利用spring 的BeanUtils.copyProperties() public static <T> List<T> copy(Object ...

最新文章

  1. The project cannot be built until build path errors are resolved的解决方法
  2. 渗透知识-SSRF漏洞
  3. JavaScript基础04【逻辑、复制、关系、相等运算符、Unicode编码表】
  4. js,需要更多源字符
  5. 前端学习(2818):小程序学习之新建页面
  6. 论文浅尝 | 利用知识图谱嵌入和图卷积网络进行长尾关系抽取
  7. 优酷《追光吧!》正式开播 风度、实力成关键词
  8. JDK1.5新特性介绍
  9. SpringBoot 解决“不支持发行版本xx”的问题
  10. elasticsearch sql插件 2.4及以下版本配置
  11. Eclipse快捷键、Debug调试
  12. Java处理图片和视频文件——视频抽帧与图片压缩
  13. git基础教程(47)设置全局.gitignore
  14. 将姓名转为拼音,首字母大写
  15. 小程序二级分销系统一键生成开发
  16. python全局代理_Python3 中代理使用方法总结
  17. 计算广告基础知识(二)
  18. 读《终身学习:10个你必须掌握的未来生存法则》整理
  19. 如何添加pwa网站到桌面
  20. 通信原理简明教程 | 信号、信道与噪声

热门文章

  1. SEO基本概念之死链接
  2. 利用PPT制作PNG透明图片
  3. 【Zeekr_Tech】TARA攻击树分析方法论
  4. PWA系列 - Web Push 技术
  5. [SageMath] 关于SageMath本地环境的搭建与基本使用
  6. CSDN:2020年度CSDN博客之星评选竞赛——180号【一个处女座的程序猿】,感谢您,投上的宝贵一票,感谢!感恩!
  7. 接口(interface、implement)
  8. C:\Users\用户名\AppData\Roaming里面的文件可以删除吗?
  9. 微信小程序把view居中_微信小程序view居中
  10. MATLAB绘制一幅中国地图