使用Cydia Substrate 从Native Hook Android Native世界
同系列文章:
使用Cydia Substrate 从Native Hook Android Java世界
使用Cydia Substrate Hook Android Java世界
一、建立工程
手机端配置见之前文章,强调一句,手机必须root。
本文展示如何hook libc里的删除文件函数remove。建立工程同使用Cydia Substrate 从Native Hook Android Java世界。
只有Main.cy.cpp代码不同。代码如下:
#include <stdio.h>
#include <substrate.h>
#include <jni.h>
#include <unistd.h>
#include <android/log.h>
#define TAG "CydiaHook"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,TAG ,__VA_ARGS__) // 定义LOGI类型 //指明要hook的lib
MSConfig(MSFilterLibrary, "/system/lib/libc.so") //储存旧函数地址
int (* oldremove)(const char* path); //自定义的新函数地址
int newremove(const char* path) {
LOGI("%s",path);
if (strstr(path, "htc") != NULL) {
//这里可以hook住,禁止删除关键字中有htc的文件
return 0;
}
//调用旧函数
return oldremove(path);
} //初始化时进行hook
MSInitialize
{
LOGI( "Substrate initialized.");
MSImageRef image; //获得模块地址
image = MSGetImageByName("/system/lib/libc.so"); if (image != NULL)
{
//找到待hook函数的地址
void * hookremove=MSFindSymbol(image,"remove");
if(hookremove==NULL)
{
LOGI("error find remove ");
}
else {
MSHookFunction(hookremove,(void*)&newremove,(void **)&oldremove);
}
}
else {
LOGI("ERROR FIND LIBC");
} }
二、编译代码
在ndk环境变量配置好的前提下,cmd下进入jni目录,输入ndk-build 如果一切正常会有类似如下的输出,并且libs目录下有对应平台的so文件。

三、测试结果:

四、相关下载
使用Cydia Substrate 从Native Hook Android Native世界的更多相关文章
- 使用Cydia Substrate 从Native Hook Android Java世界
这里介绍了如何使用Cydia Substrate Hook安卓Java世界.这篇文章介绍如何从Native中Hook 安卓Java世界. 手机端配置见之前文章. 一.建立工程 建立一个Android工 ...
- 使用Cydia Substrate Hook Android Java世界
从来没接触过Android的HOOK,在看雪上找到了一篇HOOK 的文章,但是太复杂了,应该是本地环境问题,测试不成功. 后来搜到Cydia Substrate,看了几篇文章,进入官网查看了一下文档, ...
- Android上玩玩Hook:Cydia Substrate实战
作者简介:周圣韬,百度高级Android开发工程师,博客地址:http://blog.csdn.net/yzzst 了解Hook 还没有接触过Hook技术读者一定会对Hook一词感觉到特别的陌生,Ho ...
- Cydia Substrate based DexDumper's weakness
得益于Cydia Substrate框架,HOOK Native函数变得简单,也给脱壳带来方便. 像ijiami免费版,360,classes.dex被加密到so文件并运行时释放到内存,因此针对相关函 ...
- Android逆向之旅---Native层的Hook神器Cydia Substrate使用详解
一.前言 在之前已经介绍过了Android中一款hook神器Xposed,那个框架使用非常简单,方法也就那几个,其实最主要的是我们如何找到一个想要hook的应用的那个突破点.需要逆向分析app即可.不 ...
- 使用cydia substrate 来进行android native hook
cydia不仅可以hook java代码,同样可以hook native代码,下面举一个例子来进行android native hook 我是在网上找到的supermathhook这个项目,在他基 ...
- 利用Cydia Substrate进行Android HOOK(二)
在前面关于Substrate的介绍中我们已经讲了用Substrate hook java代码,现在我们讲下怎么用它hook native代码.hook native代码我们需要编写Substrate ...
- Android Native Hook技术(二)
Hook技术应用 已经介绍了安卓 Native hook 原理,这里介绍 hook 技术的应用,及 Cyida Substrate 框架. 分析某APP,发现其POST请求数据经过加密,我们希望还原其 ...
- 利用Cydia Substrate进行Android HOOK
Cydia Substrate是一个代码修改平台.它可以修改任何主进程的代码,不管是用Java还是C/C++(native代码)编写的.而Xposed只支持HOOK app_process中的java ...
随机推荐
- The entity type <type> is not part of the model for the current context
这是在网站里遇到的一个错误,自动生成的不能手动添加, reference: http://stackoverflow.com/questions/19695545/the-entity-type-xx ...
- SQL中exists的使用方法
EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或False exists : 强调的是是否返回结果集,不要求知道返回什么, exists 与 in ...
- 【项目开发】LigerUI+MVC的应用
1.RazorJS 2.@Html.Raw 表示不对输出进行转义
- BZOJ-1087 互不侵犯King 状压DP+DFS预处理
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2337 Solved: 1366 [Submit][ ...
- POJ2437 Muddy roads
Description Farmer John has a problem: the dirt road from his farm to town has suffered in the recen ...
- SOAP 格式设置选项
SOAP 格式设置选项 两个格式设置选项为: Style:适用于 SOAP 消息中 Body 元素的子元素(也可能是孙级).此选项指定为 binding WSDL 元素(通常情况下)或 operati ...
- 深入浅出Redis04使用Redis数据库(lists类型)
一 lists类型及操作 List是一个链表结构,主要功能是push,pop,获取一个范围的所有值等等,操作中key理解为链表的名字. Redis的list类型其实就是一个每个子元素都是sring类 ...
- Java_观察者模式(Observable和Observer)
http://blog.csdn.net/tianjf0514/article/details/7475164/ 一.观察者模式介绍 在Java中通过Observable类和Observer接口实现了 ...
- aapt aidl
AIDL:Android Interface Definition Language,即Android接口定义语言 aapt即Android Asset Packaging Tool,在SDK的bui ...
- eclipse下环境变量设置:eclipse导入工程出现 Unbound classpath variable Error
在导入网友提供的Tomcat源码工程时候出现了 The project cannot be build until build path errors are resolved Unbound cla ...