android hook分为另种:

native层hook---理解ELF文件

java层---虚拟机特性和Java上的反射的作用

注入代码:

存放在哪?

用mmap函数分配临时内存来完成代码存放,对于函数的寻找需要用到目标地址空间解析和ELF解析

如何注入?

用ptrace函数attach上目标进程

发现装载共享库so函数

装载指定的.so

让目标进程的执行流程跳转到注入的代码执行

使用ptrace函数的detach释放咪表进程

注入动态共享库:

如何附着在目标进程?---内核函数ptrace能够动态attach、detach、peektext(获取内存字节)、poketext(向内存写入地址)

如何让目标进程调用动态链接库函数?---内核函数dlopen,能够以制定模式打开指定动态链接库文件。

hook分类:

对于android的so文件的hook根据ELF文件特性分为:Got表hook、Sym表hook和inline hook等

常用hook工具:

Xposed框架;

CydiaSubstrate框架;

ADBI/DDI框架。

这些工具使用流程:配置环境、安装本地服务、下载使用库。

Xposed框架:

handleLoadPackage获取包加载时的回调并拿到其对应的classLoader

findAndLoadHookMethod对指定类的方法进行hook

Cydiasubstrate框架的hook方法:

MS.hookClassLoad 拿到指定class载入时的通知

MS.hookMethod 使用一个Java方法去替换另一个Java方法

MS.moveUnderClassLoader 使用不同的ClassLoader重载对象

使用substrate:

1、在AndroidManifest.xml文件中配置主入口

2、新创建主入口Main.Java类

3、hook系统的resources,hook对应的方法

4、安装、重启、验证

注入广告:

通过hook指定的Activity中的onCreate方法来启动一个广告的activity

在恶意设计中,可以将广告的activity设置成恶意的activity作为钓鱼activity。

使用Xposed进行hook步骤:

1、在AndroidManifest.xml文件中配置插件名称与Api版本号

2、新创建一个入口类继承并实现IXposedHookLoadPackage接口

3、声明主入口路径

4、使用findAndLoadHookMethod方法hook劫持登录信息

5、在XposedInstaller中启动自定义的模块

6、重启验证去

原生程序hook:

框架:Cydiasubstrate

函数:MSGetImageByName、MSFindSymbol、MSHookFunction

步骤:

1、在androidmanifest中声明权限和安装方式--安装方式internalOnly和hasCode=“false”

2、新创建项目的cpp文件,导入所需的库

3、载入配置文件和cydiasubtract入口

4、hook并替换其方法

5、编译、安装、重启验证

hook检测和修复:

hook的本质:在一个目标进程中通过改变函数方法的指向地址,加入一段自定义的代码块

java层的hook检测:用ps命令查找进程id--用cat/proc……命令查找地址空间中对应的dex文件是否由对应进程(系统)提供。

原生层hook检测 :类似java层。对于应用程序自身检测,只需要读取对应进程的虚拟地址空间目录/proc/pid/maps文件, 判断当前进程空间中载入的代码库文件是否存在于自己的白名单中

hook过的程序修复:由于所有的第三方库都是通过dlopen注入的方式添加到进程中,所以我们只需要通过dlclose把对应的第三方函数按个删除。

但是dlclose函数并不能把所有函数完全删除,因为dlclose关闭指定句柄的动态链接库,只有当对应动态链接库使用次数为0时才能被系统卸载。

由于无法知晓hook的动态库用何种方式在何时注入,所以也需要采用实时监测。

android的hook方面知识点的更多相关文章

  1. 使用cydia substrate 来进行android native hook

      cydia不仅可以hook java代码,同样可以hook native代码,下面举一个例子来进行android native hook 我是在网上找到的supermathhook这个项目,在他基 ...

  2. Android Exception Hook

    承接上一篇文章Android Inline Hook,接下来我们看一下android系统中基于异常的hook方式,这种方式与inline hook相比实现较为简单,但执行效率是它的短板. except ...

  3. Android Xpose Hook(一)

    实验环境:     Droid4x模拟器 (目前Android版本4.2.2)     Android Studio 1.下载相关工具 XposedInstaller下载 http://repo.xp ...

  4. android inline hook

    最近终于沉下心来对着书把hook跟注入方面的代码敲了一遍,打算写几个博客把它们记录下来. 第一次介绍一下我感觉难度最大的inline hook,实现代码参考了腾讯GAD的游戏安全入门. inline ...

  5. android ART hook

    0x00 前言 之前一直都是在Dalvik 虚拟机上在折腾,从Android 4.4开始开始引入ART,到5.0已经成为默认选择.而且最近看到阿里开源的 Dexposed 框架,已经提供了对于andr ...

  6. Android Native Hook技术(二)

    Hook技术应用 已经介绍了安卓 Native hook 原理,这里介绍 hook 技术的应用,及 Cyida Substrate 框架. 分析某APP,发现其POST请求数据经过加密,我们希望还原其 ...

  7. Android Native Hook技术(一)

    原理分析 ADBI是一个著名的安卓平台hook框架,基于 动态库注入 与 inline hook 技术实现.该框架主要由2个模块构成:1)hijack负责将so注入到目标进程空间,2)libbase是 ...

  8. Android 开发必备的知识点——JVM基础【转】

    image 1.JVM与操作系统的关系 Java Virtual Machine JVM 全称 Java Virtual Machine,也就是我们耳熟能详的 Java 虚拟机.它能识别 .class ...

  9. Android里的多线程知识点

    1.Thread类与Runnable接口 子类继承Thread类实现跑自己逻辑的run方法,在调用Thread类的start方法后,会自动调用run方法,该对象只可以调用一次start方法,即Thre ...

随机推荐

  1. thinkphp5.0开发规范

    命名规范 ThinkPHP5遵循PSR-2命名规范和PSR-4自动加载规范,并且注意如下规范: 目录和文件 目录不强制规范,驼峰及小写+下划线模式均支持: 类库.函数文件统一以.php为后缀: 类的文 ...

  2. with操作符损耗性能的原因

    当函数运行是,创建一个[[scope]]指向的被称为作用域链的可变对象集合,作用域链的最前端是一个包含所有的局部变量.参数.this等的被称为“激活对象”的对象. 在标示符查找的过程中,从作用域的最前 ...

  3. session.setAttribute和session.getAttribute

    网上搜了些资料 ----------------------------------------------------------------------------- B/S架构中,客户端与服务器 ...

  4. javascript关于链接的一些用法

    (1)javascript:openURL() http://www.kpdown.com/search?name=Ben Nadel 此URL后边有一个name参数,只不过参数的值竟然带了空格,这样 ...

  5. WEB安全番外第一篇--其他所谓的“非主流”漏洞:URL跳转漏洞与参数污染

    一.URL跳转篇: 1.原理:先来看这段代码: <?php if(isset($_GET["url_redircetion_target"])){ $url_redirect ...

  6. ansible批量验证密码

    author: headsen chen date: 2018-08-31  20:45:49 综合比较salt-ssh,ansible .sshpass等批量验证100台机器的密码,最好推荐用ans ...

  7. 【BZOJ3203】[Sdoi2013]保护出题人 二分+凸包

    [BZOJ3203][Sdoi2013]保护出题人 Description Input 第一行两个空格隔开的正整数n和d,分别表示关数和相邻僵尸间的距离.接下来n行每行两个空格隔开的正整数,第i + ...

  8. 【BZOJ4515】[Sdoi2016]游戏 树链剖分+线段树

    [BZOJ4515][Sdoi2016]游戏 Description Alice 和 Bob 在玩一个游戏. 游戏在一棵有 n 个点的树上进行.最初,每个点上都只有一个数字,那个数字是 1234567 ...

  9. Xcode - 插件管理工具Alcatraz

    Alcatraz 1.简介 Alcatraz是一个能帮你管理Xcode插件丶模版及颜色配置的工具.它可以直接集成在Xcode的图形界面中,让你感觉就像在使用Xcode自带的功能一样. 2.安装和删除 ...

  10. web站点检查简易shell脚本

    1.web样式 <h4>THE STATUS OF RS:</h4> <meta http-equiv="> <table border=" ...