![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Hook
文章平均质量分 95
kernweak
日子越来越有判头了
展开
-
Xpose学习笔记
Xpose原理控制zygote进程,通过替换/system/bin/app_precess程序控制zygote进程,使它在系统启动过程中加载Xposed framework的一个jar文件即XposedBridge.jar,从而完成对Zygote进程及创建的Dalvik/ART虚拟机的劫持,并且能够允许开发者独立替代任何class,例如framework本身,系统UI或者随意一个app。控制程序两种方式,通过attach之后ptrace调试器,通过定制rom。Xpose安装Android5.0以后:原创 2021-06-04 14:58:38 · 1823 阅读 · 0 评论 -
A盾学习笔记(2)反inlinehook
下面学习下反inlinehook在工程的AntilineHook.c里总体思路就是找到jmp指令,判断是不是被inlinehook的跳转,然后自己重载了内核之后,把原来被感染inlinehook跳过去执行的函数的地址位置,再hook成我们重载正常的的函数地址,实现反inlinehook,我还以为要把污染的hook拷贝成正常code。VOID AntiInlineHook(WCHAR ...原创 2019-07-06 03:18:25 · 481 阅读 · 0 评论 -
Android进程注入
Android平台的进程注入和linux平台的注入技术类似,采用ptrace机制来实现ptrace在执行系统调用之前,内核会先检查当前进程是否处于被“跟踪”(traced)的状态。如果是的话,内核暂停当前进程并将控制权交给跟踪进程,使跟踪进程得以察看或者修改被跟踪进程的寄存器。ptrace()是一个系统调用,它允许一个进程控制另外一个进程的执行.不仅如此,我们还可以借助于ptrace修改某...原创 2019-06-27 22:57:44 · 2910 阅读 · 0 评论 -
Android的inline hook
arm平台与其他平台的inline hook原理一致,均为函数arm字节码替换由于指令集的特点,arm平台的inline hook较为复杂:1、存在arm指令集和thumb指令集2、无法单纯使用B指令直接跳转,因为b指令跳转范围优先3、存在literal指令,与当前PC值相关,需要对指令进行修正以arm指令集作为hook实例由于arm架构特性,每次修改代码需要刷新cache,因为指令...原创 2019-06-27 18:33:55 · 1218 阅读 · 0 评论 -
Android的java的native hook
由于linux操作系统驱动模块加载机制的限制和release版的rom通常未开启模块加载机制,使得我们不能像Windows操作系统编译驱动,在R0层做驱动监控和对抗。Hook的目标就从内核层转到了应用层。Android平台由于分层特点,可将hook分为两种:Java层hook,通过注入一个dex文件,hook java函数Native层hook so注入,hook c函数HOOK函数分三步...原创 2019-06-27 02:34:11 · 1161 阅读 · 0 评论 -
Ring3层hook
hook engine:nthookenginemhookDetour方法:本进程hook,直接调用hook函数(自己进程还要hook?),否则写一个dll,在dll里hook每一个函数,然后将该dll注入到目标进程,达到hook目标进程中的函数的目的。MHOOK要获取原始函数地址#include mhook.htypedef ULONG (WINAPI* _N...原创 2019-06-02 04:45:12 · 731 阅读 · 0 评论 -
DLL注入相关
DLL是通过问卷映射实现,只占一个内存空间,每个DLL收到一份映像,DLL被加载之后系统页面文件明显变大,内存使用明显变大。DLL引用分显示隐式如果有lib+dll+头文件则:建工程的时候选择导出符号#pragma comment(lib, “libname.lib”)#include “libname.h”func();只有DLL文件 LoadLibrary Ge...原创 2019-06-02 03:41:22 · 587 阅读 · 0 评论 -
Inline hook
原理就是指令地方先备份,跳转到我们要执行的指令,再替换回原指令,跳回来,所以在函数找到一个五个字节的指令的地址,替换跳转jmp指令,跳转到我们代码。所以为了找到指令代码,需要用到反汇编引擎,xde,BeaEngine(x32,x64),libdasm,翻译2进制指令为汇编指令。jmp offsetjmp:ea,eb,e9(短跳近跳远跳,eb rel8短跳只能跳转到256字节的...原创 2019-05-31 02:15:37 · 1111 阅读 · 0 评论 -
SSDT—Hook和MDL
SSDT HOOK首先要明白SSDTHOOK就是自己再写一份函数,替换了SSDT表中的地址替换掉 如何访问系统服务表呢?SSDT 的全称是 System Services Descriptor Table,系统服务描述符表下面这个是个全局变量 kd> dd KeServiceDescriptorTable(SSDT)这个导出的 声明一下就可以使用了kd&g...原创 2018-09-03 21:28:31 · 1517 阅读 · 0 评论 -
object_Hook相关知识
前置知识首先,分析OBJECT(内核对象)先找到一个进程内核对象的地址,使用!process 0 0查看PROCESS 885de030 SessionId: 1 Cid: 0700 Peb: 7ffd9000 ParentCid: 0418 DirBase: 7f3602e0 ObjectTable: 98a8c548 HandleCount: 60...原创 2018-09-03 21:27:08 · 680 阅读 · 0 评论 -
Inline_Hook
Inline Hookjmp 到没用的地方 pushad,pushfd, 做自己的事 popfd,popad. 加上被覆盖的代码 jmp 到被覆盖代码的下一行 注意点位置的选择:<1> JMP/CALL指令至少占用5个字节<2> 绕开全局变量,因为全局变量的硬编码会随着指令变<3> 根据业务来决定在哪里HOOK:过滤参数...原创 2018-09-03 21:24:00 · 476 阅读 · 0 评论