废话不多说。直接上代码。#import <Foundation/Foundation.h>
@interface HookObject :NSObject
//单位分钟
(nonatomic)NSInteger timeout;
@end
#import "HookObject.h"
#import <objc/objc.h>
#import
转载
2023-11-20 12:29:58
231阅读
Inline Hook NtQueryDirectoryFile 首先声明这个是菜鸟—我的学习日记,不是什么高深文章,高手们慎看. 都总是发一些已经过时的文章真不好意思,几个月以来沉迷于游戏也是时候反省了,我真的几个月没写博客了,怎么办~怎么办~我要补充自己的博客,但真想不到写什么了,唯有将自己以前 Read More
转载
2016-10-03 06:52:00
139阅读
2评论
# Android Inline Hook 的科普与示例
Android 开发中,钩子技术(Hook)是一种非常实用的技巧,它允许开发者在函数调用或特定操作发生时插入自己的代码,以实现对原有逻辑的扩展或修改。今天,我们将讨论一种常见的钩子技术——“Inline Hook”。
## 什么是 Inline Hook?
Inline Hook 是指在目标函数的前面插入一些汇编指令,以改变程序的执行
对于Android应用安全研究人员来说,Xposed想必一定不陌生。作为一款流行的应用hook框架,Xposed允许对应用进行无感知的hook。许多实用工具,例如早期的脱壳工具Zjdroid,关闭证书强校验的JustTrustMe,Android恶意应用分析沙盒Cuckoo-Droid等,均是通过Xposed完成。然而,从Android 5.0时代起,DVM模式被ART模式取代,代码执行的机制进行
转载
2024-01-26 22:05:23
63阅读
概述前面经过分析与调试,了解了程序的执行逻辑。现在想改变执行逻辑,脑海里也大致有了新逻辑,例如让判断是否是会员的函数始终返回 true。那么怎么把新逻辑应用到程序中呢?这是本文要介绍的。Hook,钩子,用来改变程序执行流程。iOS 中有以下几种方式:Method Swizzling:利用 OC runtime 特性,对 OC 方法重排。fishhook:利用 Mach-O 格式程序加载原理修改符号
转载
2023-08-07 14:00:01
516阅读
一、序言在前面的博客中,已经分析过了Android Hook框架adbi源码的具体实现,Android Hook框架adbi的实现主要分为两部分,一部分是root权限下的Android跨进程的so注入,一部分是基于Android系统的inline Hook。只要搞清楚了Android系统的跨进程so注入和基于Android系统的inline Hook这两个知识点,理解adbi等Android的
转载
2023-10-27 19:51:54
214阅读
AndroidNativeEmu食用手册:https://bbs.pediy.com/thread-254799.htm 著名开源项目xHook:https://github.com/iqiyi/xHook/blob/master/docs/overview/android_plt_hook_overview.zh-CN.md 本文将结合本项目的源代码,详细阐述An
转载
2023-07-17 18:38:29
150阅读
本文梳理了ios或osx中可以用于hook的框架及其使用,对于C/C++方法,进行了私有和系统方法的区分阐述,本文仅针对hook框架做讨论,对于实验中用到的注入、签名等不作阐述。0x01 背景:要hook的代码,以下是测试demo本文我们会对一个编写的测试mac app进行hook,其中mac app的主要代码如下: #import "ViewController.h"
int cfunc(i
转载
2024-06-03 11:12:17
113阅读
在Linux系统中,进程的管理是非常重要的,通过进程的控制可以实现对系统资源的合理分配和利用。然而,有些恶意程序可能会通过拦截进程的执行来实施一些不法行为,其中一个常见的方式就是通过inline hook来实现。什么是inline hook呢?
在计算机科学中,hook(钩子)是一种技术,被用来控制、改变和监视系统中的行为。inline hook是hook的一种实现方式,也就是在被hook的函数
原创
2024-04-03 10:20:50
105阅读
Linux 是一个开放源代码的操作系统,被广泛应用于各种领域,包括服务器、嵌入式设备以及个人电脑等。在 Linux 操作系统中,hook 是一种常见的编程技术,它允许程序在执行过程中插入自定义代码。其中,inline hook 是一种特定的 hook 技术,可以用来监视和修改程序的行为。
Linux 的 inline hook 技术可以在未修改源代码的情况下,动态地修改函数或者系统调用的行为。通
原创
2024-04-24 11:48:05
166阅读
目前Android主流的hook框架有Xposed、Substrate和frida三种,下面依次介绍三种框架的原理和特点:XposedXposed是一个在andoid平台上比较成熟的hook框架,可以完美的在dalvik虚拟机上做到hook任意java方法原理Android系统中所有的app进程都是有zygote进程孵化而来的,Xposed会替换/system/bin/app_process文件,
转载
2023-08-07 11:05:17
503阅读
最近终于沉下心来对着书把hook跟注入方面的代码敲了一遍,打算写几个博客把它们记录下来。第一次介绍一下我感觉难度最大的inline hook,实现代码参考了腾讯GAD的游戏安全入门。inline hook的大致流程如下:首先将目标指令替换为跳转指令,跳转地址为一段我们自己编写的汇编代码,这段汇编代码先是执行用户指定的代码,如修改寄存器的值,然后执行被替换掉的原指令2,最后再跳转回原指令3处,恢复程
转载
2023-07-26 05:02:11
73阅读
运行在ARM指令集的CPU上(比如Android手机),通过HOOK机制,对一些关键的方法进行监控,从而达到一些特殊目的,比如性能监控、安全等。常用的HOOK方法有:GOT表Hook和Inline Hook。而inline hook具有更广泛的适用性,几乎可以Hook任何函数(当然也有特殊情况无法进行inline hook,后面会提到)。相较于GOT表hook,inline hook由于需要能读懂
转载
2023-10-26 19:31:50
142阅读
inline hook 实际上就是指 通过改变目标函数头部的代码来使改变后的代码跳转到我们自己设置的一个函数里,产生hook。今天就拿MessageBoxA这个api函数来做实验。功能就是当程序调用MessageBoxA 时,我们打印出MessageBoxA的参数大概代码结构应该是这样typedef int (WINAPI *MessageBox_type) ( __in_opt HWND hWnd, __in_opt LPCSTR lpText, __in_opt LPCSTR lpCaption, __in UINT uType) ;MessageBox_ty...
转载
2013-04-08 12:04:00
180阅读
2评论
一、 hook分类runtime利用OC的Runtime特性,动态改变SEL(方法编号)和IMP(方法实现)的对应关系,达到OC方法调用流程改变的目的。主要用于OC方法fishHook是Facebook提供的一个动态修改链接mach-O文件的工具,利用MachO文件加载原理,通过修改懒加载和非懒加载两个表的指针达到C函数HOOK的目的Cydia Substrate原名是Mobile Substra
转载
2024-03-12 11:06:07
165阅读
HOOK原理1、MachO是被谁加载的?DYLD动态加载2、ASLR技术(地址空间布局随机化):MachO文件加载的时候是随机地址3、PIC(位置代码独立)如果MachO内部需要调用 系统的库函数时先在_DATA段中建立一个指针,指向外部函数DYLD会动态的进行绑定,将MachO中的DATA段中的指针,指向外部函数(DYLD会告诉MachO要依赖的外部库的位置)_DATA段中建立的指针就是符号(s
转载
2023-10-13 14:14:20
71阅读
-- Android下的挂钩(hook)和代码注入(inject) api hook技术有2种elf hook 和inline hook。Elf hook 通过修改动态连接库的PLT/GOT表,从而达到函数调用的重定向目的,这种方法只能hook模块的外部调用,例如hook打开文件的系统函数检测程序打开文件的情况,hook系统时间相关的函数,达到加速的目的(市面
转载
2023-11-23 17:48:58
8阅读
导读:Frida就是一个很常用的Hook工具,只需要编写一段Javascript代码就能轻松地对指定的函数进行Hook,而且它基本上可以算是全平台的(主流平台全覆盖),除了Android以外,iOS和PC端的APP也可以用它来进行Hook,非常方便。 楔子:张老师推荐了一篇Frida的文章,觉得很有意思,就
转载
2023-10-21 16:17:01
685阅读
我查阅了一下相关C#方面的资料,却没有发现有提供过关于api-hook方面的资
料包括应用库由此本人编写一套inline-hook的库用于支持x64、x86上的基于在
clr的公共语言,如: c#、c+/clr、vb.net 全部都可以使用该类库改变底层api执
行结果,如我们需要制作抓包工具,或者拦截某个ActiveX对象内部调用的函数
用处广泛 有些人在制作“截包”工具时是通过使用SPI,但
转载
2015-07-24 08:14:00
403阅读
2评论
2012年8月18日 12:26:25 目的 想实现 反HOOK功能:最终因与其他模块代码不兼容,没用到。不过还是记录一下。。 inline hook的思想是 修改API的前几个字节,变为 jmp 自己的函数。 这样的话 需要将原函数的前几个字节保存起来 放到一块内存上 作为跳板
原创
2014-02-20 10:47:46
2003阅读