源码:https://github.com/steven-michaud/HookCase
SSDT表的查找:https://blog.csdn.net/zfdyq0/article/details/26515019纠正上面博客的一个错误:刚好是fffff800`03e827724c8d15c7202300后面四个字节(002320C7) kd>uKiSystemServiceStart nt!KiSystemServiceStart: fffff800`03e8275e48
有linux版与win版源码:https://github.com/haidragon/ReflectiveInjection原理是:写一个注入器先把要注入的dll或so文件注入到目标进程。这里还是存在注入(我感觉就是一般注入,只是加了个自己修复利重定位),注入但不通过api(dlopen,LoadLibrary)加载,只是把他映射到内存。必须要做的是动态库中要导出一个函数。用来自行加载。也就是自
源码地址:https://github.com/haidragon/HookSwapContext#include<ntddk.h>#include<ntimage.h>#include<ntdef.h>#include"hash.h"#include"xde.h"#include"main.h"typedefstruct_BYTECODE{BYTE*pAddr
PsTerminateProcess函数用于结束一个进程。#include<ntddk.h>typedefNTSTATUS(*PSPTERMINATETPROCESS)(PEPROCESSProcess,NTSTATUSExitStatus);PSPTERMINATETPROCESSPspTerminateProcess;typedefNTSTATUS(*NTQUERYSYSTEMIN
ObReferenceObjectByHandle是通过句柄(Handle)来访问对象。#include"ntddk.h"#include<windef.h>externPOBJECT_TYPE*PsProcessType;VOIDInlineHookObReferenceObjectByHandle();VOIDUnHook();//根据提供的Handle值得到Object//NTS
#include<ntddk.h>//如何对函数做inlinehook?//首先,弄清楚您要inlinehook的函数的定义。//然后,获得要inlinehook的函数的地址://如果是未导出的,根据特征码,暴力搜索内存;//如果是导出的,可以直接使用函数名称做为它的地址或者使用MmGetSystemRoutineAddress//拿到它的地址。如://NTKERNELAPI//BOO
原理:直接IoGetDeviceObjectPointer根据名称获取驱动对象,然后更改分发函数数组元素即可HOOK指定IRP分发函数。//irphook.h///////////////////////////////////////////////////////////////////////////////////////typedefBOOLEANBOOL;typedefunsigned
APC注入的原理是利用当线程被唤醒时APC中的注册函数会被执行的机制,并以此去执行我们的DLL加载代码,进而完成DLL注入的目的,其具体流程如下:1)当EXE里某个线程执行到SleepEx()或者WaitForSingleObjectEx()时,系统就会产生一个软中断(或者是Messagebox弹窗的时候不点OK的时候也能注入)。2)当线程再次被唤醒时,此线程会首先执行APC队列中的被注册的函数。
源码:https://github.com/tandasat/DdiMon
原理:PE文件中的每一个导入表都代表一个库(dll),所以你添加一个导入表时,当你调用函数时就会去加载相应的DLL而达到注入。写法一://INTInject.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include<Windows.h>#include<exception>#include<iostream>usingname
原理:通过以挂起的方式创建进程对其注入。#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<tchar.h>typedefstructParam{DWORDyear;DWORDMonth;DWORDDay;FARPROCpFun[2];}Param,*pParam;void_d
原理:用到调试器附加的原理实现注入。bRet=CreateProcess(NULL,m_strExePath.GetBuffer(0),NULL,NULL,FALSE,DEBUG_ONLY_THIS_PROCESS,NULL,NULL,&si,&pi);//DebugInject.h#pragmaonce#include"afxwin.h"//DebugInject对话框class
//RegInject.h#pragmaonce//RegInject对话框classRegInject:publicCDialogEx{DECLARE_DYNAMIC(RegInject)public:RegInject(CWnd*pParent=NULL);//标准构造函数virtual~RegInject();//对话框数据enum{IDD=IDD_DIALOG6};protected:vi
//RemoteInject.h#pragmaonce//RemoteInject对话框cla***emoteInject:publicCDialogEx{DECLARE_DYNAMIC(RemoteInject)public:RemoteInject(CWnd*pParent=NULL);//标准构造函数virtual~RemoteInject();//对话框数据enum{IDD=IDD_DIA
原理通过挂起线程(SuspendThread),设置线程(SetThreadContext)上下文中的eip(rip)方式注入。//ThreadInject.h#pragmaonce//ThreadInject对话框classThreadInject:publicCDialogEx{DECLARE_DYNAMIC(ThreadInject)public:ThreadInject(CWnd*pPar
原理可以看:https://blog.csdn.net/zhuhuibeishadiao/article/details/51114107#include<ntddk.h>#include<ntimage.h>//SSDT表结构#pragmapack(1)//#pragmapack(n)作用:C编译器将按照n个字节对齐typedefstructServiceDescript
Thumb®16位指令集快速参考卡本卡列出了版本低于ARM®v6T2的支持Thumb的处理器中可用的所有Thumb指令。此外,还列出了所有Thumb-216位指令。除非另外注明,否则本卡中显示的指令均为Thumb-216位指令。除非指定,否则所有寄存器都为Lo(R0-R7)。Hi寄存器为R8-R15。表关键字§请参阅表ARM体系结构版本。<loreglist+LR>以逗号隔开的Lo寄存
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号