没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
代码实例分析代码实例分析android中中inline hook
本片文章主要给大家通过代码示例分析了android中inline hook的用法是实现过程,需要的朋友跟着参考下吧。
以下内容通过1、实现目标注入程序,2、实现主程序,3、实现注入函数,4、thumb指令集实现等4个方面详细分析了android中inline hook的用法,以下
是全部内容:
最近终于沉下心来对着书把hook跟注入方面的代码敲了一遍,打算写几个博客把它们记录下来。
第一次介绍一下我感觉难度最大的inline hook,实现代码参考了腾讯GAD的游戏安全入门。
inline hook的大致流程如下:
首先将目标指令替换为跳转指令,跳转地址为一段我们自己编写的汇编代码,这段汇编代码先是执行用户指定的代码,如修改寄存器的值,然后执行被替
换掉的原指令2,最后再跳转回原指令3处,恢复程序的正常运行。
为了避开注入过程,我们通过hook自己进程加载的动态连接库进行演示。
1、实现目标注入程序、实现目标注入程序
我们将这个程序编译为动态连接库,然后在主程序中加载,作为hook的目标。
target.h
#ifndef TARGET_H_INCLUDED
#define TARGET_H_INCLUDED
void target_foo();
#endif // TARGET_H_INCLUDED
target.c
#include "target.h"
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
void target_foo()
{
int a = 3;
int b = 2;
while(a--) {
sleep(2);
b = a * b;
printf("[INFO] b is %d", b);
}
b = b + 2;
b = b - 1;
printf("[INFO] finally, b is %d", b);
}
Android.mk
include $(CLEAR_VARS)
LOCAL_ARM_MODE := arm
LOCAL_MODULE := target
LOCAL_CFLAGS += -pie -fPIE -std=c11
LOCAL_LDFLAGS += -pie -fPIE -shared -llog
APP_ABI := armeabi-v7a
LOCAL_SRC_FILES := target.c
include $(BUILD_SHARED_LIBRARY)
注意Android.mk中LOCAL_ARM_MODE := arm代表编译时使用4字节的arm指令集,而不是2字节的thumb指令集。
2、实现主程序、实现主程序
在主程序中我们首先加载之前编写的动态链接库,进行hook之后再对其中的函数target_foo进行调用。
main.c
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
#include <unistd.h>
#include <stdbool.h>
#include "hook_inline.h"
typedef void (*target_foo)(void);
void my_func(struct hook_reg *reg)
{
资源评论
weixin_38685882
- 粉丝: 6
- 资源: 934
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功