cydia不仅可以hook java代码,同样可以hook native代码,下面举一个例子来进行android native hook

我是在网上找到的supermathhook这个项目,在他基础上修改的,本来是为了仓促应对阿里的ctf

这个项目位置:

这个项目是用来hook jni 代码的,而我是用来hook dvmDexFileOpenPartial这个函数的,所以必须使用

Mshookfunction这个函数,这个函数在libsubstrate.so中,自己去官网下载就可以了。

接下来将如何hook。

首先:

  1. 指明要hook的lib :

MSConfig(MSFilterLibrary,"/system/lib/libdvm.so")

  1. 在初始化的时候进行hook,具体如下:

    MSInitialize

    {

        

        __android_log_print(ANDROID_LOG_ERROR, TAG, "Substrate initialized.");

        MSImageRef image;

        image = MSGetImageByName("/system/lib/libdvm.so"); 载入lib

        if (image != NULL)

        {

            //注意这个是个c++函数,可以通过objdump来获取

            void * dexload=MSFindSymbol(image,"_Z21dvmDexFileOpenPartialPKviPP6DvmDex");

            if(dexload==NULL)

            {

                LOGD("error find _Z21dvmDexFileOpenPartialPKviPP6DvmDex ");

            }

            else{

                MSHookFunction(dexload,(void*)&mydvmdexfileopen,(void **)&olddexfileopen);·

            }

        }

        else{

            LOGD("ERROR FIND LIBDVM");

        }

    }

     

    相关其他的函数:

    int (* olddexfileopen)(const void * addr,int len,void ** dvmdex); 保留原来的地址

    int mydvmdexfileopen(const void * addr,int len,void ** dvmdex) 新的函数

    {

    LOGD("call my dvm dex!!:%d",getpid());

    { //write to file

         char buf[200];

         sprintf(buf,"/sdcard/dex.%d",random()); 导出dex文件

         FILE * f=fopen(buf,"wb");

         if(!f)

         {

             LOGD("error open sdcard file to write");

         }

         else{

             fwrite(addr,1,len,f);

             fclose(f);

         }

     

    }

    return olddexfileopen(addr,len,dvmdex); 进行原来的调用,不影响程序运行

    }

使用cydia substrate 来进行android native hook的更多相关文章

  1. Android Native Hook技术(二)

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

  2. Android Native Hook技术(一)

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

  3. 使用Cydia Substrate 从Native Hook Android Native世界

    同系列文章: 使用Cydia Substrate 从Native Hook Android Java世界 使用Cydia Substrate Hook Android Java世界 一.建立工程 手机 ...

  4. 使用Cydia Substrate 从Native Hook Android Java世界

    这里介绍了如何使用Cydia Substrate Hook安卓Java世界.这篇文章介绍如何从Native中Hook 安卓Java世界. 手机端配置见之前文章. 一.建立工程 建立一个Android工 ...

  5. Android逆向之旅---Native层的Hook神器Cydia Substrate使用详解

    一.前言 在之前已经介绍过了Android中一款hook神器Xposed,那个框架使用非常简单,方法也就那几个,其实最主要的是我们如何找到一个想要hook的应用的那个突破点.需要逆向分析app即可.不 ...

  6. 利用Cydia Substrate进行Android HOOK(二)

    在前面关于Substrate的介绍中我们已经讲了用Substrate hook java代码,现在我们讲下怎么用它hook native代码.hook native代码我们需要编写Substrate ...

  7. 利用Cydia Substrate进行Android HOOK

    Cydia Substrate是一个代码修改平台.它可以修改任何主进程的代码,不管是用Java还是C/C++(native代码)编写的.而Xposed只支持HOOK app_process中的java ...

  8. Android HOOK工具Cydia Substrate使用详解

    目录(?)[+] Substrate几个重要API介绍 MShookClassLoad MShookMethod 使用方法 短信监控实例   Cydia Substrate是一个代码修改平台.它可以修 ...

  9. Android上玩玩Hook:Cydia Substrate实战

    作者简介:周圣韬,百度高级Android开发工程师,博客地址:http://blog.csdn.net/yzzst 了解Hook 还没有接触过Hook技术读者一定会对Hook一词感觉到特别的陌生,Ho ...

随机推荐

  1. Zabbix通过SNMPv2监控DELL服务器的硬件信息

    (一)zabbix监控DELL服务器 (1)简述:监控DELL服务器硬件一般有两种途径:1.操作系统上安装OMSA,编写脚本调用omreport命令进行监控(需要在操作系统上安装比较麻烦):2.使用i ...

  2. 开启 intel vt-d

    1.开机后按“DEL”或“F2”进入BIOS: 2.在Advanced选项页中找到System Agent Configuration并选择进入: 3.进入System Agent Configura ...

  3. 基于TCP协议 I/O多路转接(select) 的高性能回显服务器客户端模型

    服务端代码: myselect.c #include <stdio.h> #include <netinet/in.h> #include <arpa/inet.h> ...

  4. 获取wifi热点

    https://stackoverflow.com/questions/31555640/how-to-get-wifi-ssid-in-ios9-after-captivenetwork-is-de ...

  5. JDK 8 equals() & ==

    equals() 是 java.lang.Object 的一个实例方法,被所有的子类所继承(可被复写). 以下是 JDK 8 中 java.lang.Object.equals() 源码: publi ...

  6. Regexp:教程

    ylbtech-Regexp:教程 1.返回顶部 1. 正则表达式 - 教程 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符( ...

  7. #define和const的区别

    下面使用#define和const定义常量: #define n_define 10 int main(int argc, char* argv[],int _version) { ; int *p= ...

  8. typescript相关知识点总结

    本文讲解typescript语法 由于js语法本身的混乱,再加上目前框架的割据,导致typescript用起来没有一致性,本文尽量总结实际开发中可能会用到的知识点 目录 数据类型 类型断言 duck ...

  9. paramiko监控 windows服务器 被监控服务器只需要安装openssh服务即可基于wmic完成大部分监控

    #!/usr/bin/python #-*- coding: UTF-8 -*- #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

  10. 11-03SQLserver基础--子查询语句

    一.子查询--查询的嵌套(重点记忆) select MAX(age)from haha where bumen='销售部' --汇总-- select MAX(age)from haha where  ...