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. bzoj 4559 [JLoi2016]成绩比较——拉格朗日插值

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4559 关于拉格朗日插值,可以看这些博客: https://www.cnblogs.com/E ...

  2. POJ3292(素数筛选)

    Semi-prime H-numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8706   Accepted: 3 ...

  3. SPI驱动框架-1(DM8127 Linux2.6.37为例)

    一.驱动程序结构 1.platform_device 文件:/arch/arm/mach-omap2/device.c static struct omap2_mcspi_platform_confi ...

  4. mina在spring中的配置多个端口

    本次练习中是监听2个端口 applicationContext-mina.xml: <?xml version="1.0" encoding="UTF-8" ...

  5. Oracle data guard 10g 搭建

    Oracle data guard 10g 搭建 1系统常规参数检查 硬盘 [root@localhost ~]# df -h 内核 [root@localhost ~]# uname -a [roo ...

  6. String字符串补0操作常见方法

     String前补0 java的String字符串补0或空格 方法一:自己写的方法 /* *数字不足位数左补0** @param str* @param strLength*/public stati ...

  7. 图解缓存淘汰算法一之LRU

    1.概念分析 LRU(Least Recently Used),即最近最少使用.怎么理解这个概念呢?我一开始见到这个概念的时候,以为"最近","最少"都是修饰使 ...

  8. laravel4 composer报错 d11wtq/boris v1.0.10 requires ext-pcntl

    laravel4 composer报错 d11wtq/boris v1.0.10 requires ext-pcntl laravel 4.2 用composer 安装任何包都会报这个错,通过谷歌找到 ...

  9. Eloquent ORM模型中添加自定义值

    我们都知道通过Laravel中数据库查询出来的模型对象都是基于数据库字段,今天给大家展示一个 Laravel Eloquent ORM 模型特性-附加值不存在于数据表中. 举个简单的栗子,一篇文章(p ...

  10. -bash : ** : command not found的问题解决(图文详解)

    问题来源 我不小心,配置错了,少了个export和PATH没配对.   source /etc/profile 之前一定要留心,否则出错让你后悔去! 问题导致现象1 问题导致现象2 解决办法 按e键, ...