- 博客(13)
- 资源 (3)
- 收藏
- 关注

原创 内核线程注入(x64)
阅读BlackBone源码从里面扣出来的关于内核线程注入方法的使用。经过自己修改后做成的Demo,功能主要通过Ring0层驱动Attach到目标进程(目标进程可以是32位进程也可以是64位进程,使用不同的ShellCode进行注入操作),然后调用NtCreateThreadEx来执行ShellCode,ShellCode做了一个注入Dll的简单行为(加载Dll使用的是Ntdll模块下的LdrL...
2018-11-22 15:06:00
5872
2

原创 内核线程注入(x86)
这是我阅读BlackBone源码从里面扣出来的关于内核线程注入方法的使用。主要通过Ring0层驱动Attach到目标进程然后调用NtCreateThreadEx来执行ShellCode,ShellCode做了一个注入Dll的简单行为。关键函数如下://切换到目标进程创建内核线程进行注入NTSTATUS AttachAndInjectProcess(IN HANDLE Process...
2018-11-22 14:43:12
1497
原创 HideProcess(隐藏进程) Ring0 win7 x86
我们可以通过遍历EProcess结构体中的双向链表ActiveProcessLinks,找到目标进程结点后将该节点从双向链表中移除,便实现了进程隐藏的目的,此时打开win7的任务管理器会发现运行的calc进程并没有显示。使用windbg查看EProcess结构: 2: kd> !process 0 0 //crtl+F查找explorer PROCESS ...
2018-11-23 21:22:21
3362
原创 键盘钩子(SetWindowHookEx)
挂钩原理Windows下的应用程序大部分都是基于消息机制的,它们都会有一个消息过程函数,根据不同的消息完成不同的功能。Windows操作系统提供的钩子机制的作用就是用来截获和监视这些系统中的消息。Windows钩子琳琅满目,可以用来应对各种不同的消息。按照钩子作用的范围不同,又可以分为局部钩子和全局钩子。局部钩子是针对某个线程的;而全局钩子则是作用于整个系统中基于消息的应用。全局钩子需要...
2018-11-22 15:37:06
2918
原创 读取本地磁盘信息
//显示本地服务器磁盘信息到ListVOID CFileManagerDlg::FixedServerVolumeInformation(){ //磁盘信息 char VolumeList[0x500] = { 0 }; //游走指针 CHAR *Travel = NULL; //清空一下列表 m_CList_Dialog_File_Manager_Server_Sho...
2018-11-22 15:18:06
866
原创 通过解析PE格式来判断程序是x86或x64
方法一:通过OptionalHeader.Magic判断//传参为文件完整路径int SeIsX64PEFile(WCHAR* ProcessFullPath){ Wow64EnableWow64FsRedirection(FALSE); //禁止重定位!(禁止系统修改文件路径) HANDLE FileHandle = CreateFile(ProcessFu...
2018-11-22 15:15:26
1041
原创 创建远程线程注入Dll——CreateRemoteThread
CreateRemoteThread是创建一个在其他进程的地址空间中运行的线程(也称远程线程)。其函数原型为:HANDLE WINAPI CreateRemoteThread(__in HANDLE hProcess,__in LPSECURITY_ATTRIBUTES lpThreadAttributes,__in SIZE_T dwStackSize,__in LPTHREAD_STA...
2018-04-12 23:06:55
1092
原创 挂起线程注入
首先,通过获得目标进程Id,再根据与进程Id获得目标进程的主线程Id,将主线程Id挂起,获得该线程的背景上下文,将该线程的Eip改为自己的ShellCode,最后恢复线程。重要的函数顺序为: OpenThread-->SuspendThread-->GetThreadContext-->获取EIP-->修改EIP-->SetThreadContext-->ResumeThread
2018-04-11 19:34:24
770
原创 KiFastCallEntryHook
先根据SSDTHook给SSDTTableBase下钩子(Hook掉NtSetEvent函数),然后通过调用ZwSetEvent函数进入FakeSetEvent函数,在FakeSetEvent函数中我们通过栈回溯(ebp+4)找到主调函数KiFastCallEntry的EIP(KiFastCallEntry函数Call NtXX函数指令的下一条指令处,被调函数执行完后主调函数会从EIP中...
2018-04-10 14:10:29
1026
原创 文件自删除方法(ByBatFIle)
除了通过cmd程序达到文件自删除以外,另一种方法就是通过Bat文件来完成文件自删除,代码如下:#include<iostream>#include<Windows.h>using namespace std;BOOL SuicideByBatFile();//文件自删除函数int main(){SuicideByBatFile(); retur...
2017-10-06 19:41:51
685
原创 文件自删除方法(ByCmd)
文件自删除多用于病毒,在病毒执行完之后要自我销毁避免被人发现。下面的代码是文件自删除的方法之一,通过Cmd程序来完成的。代码如下:#include#include#includeusing namespace std;BOOL SeSuicideByCmdProcess();int main(){ SeSuicideByCmdProcess()
2017-10-06 19:34:03
1216
原创 32位汇编的基本框架
整理了一下32位汇编的基本框架,具体如下:.386 ;指定编译器程序是使用80386指令集编写的 还有.486/.586.MODEL FLAT,C,fastcall ;.MODEL用来指定内存模型 Win32位下只有FLAT内存模型即平坦的访问,从0到4GB随
2017-09-23 22:12:45
3925
原创 哈夫曼树的创建
相信刚踏入计算机系的同学们学习数据结构的时候都碰到了哈夫曼树,哈夫曼树也称最优二叉树,它的定义是:在给定的一组具有确定权值的叶子结点,可以构造出不同的二叉树,将其中带全路径长度最小的二叉树称为哈夫曼树。哈夫曼树在实际中有着广泛的应用,比如信息检索,编译码。话不多说直接上代码跟注释: //此代码是用vs2015编译器搞定的,vs的一枚粉丝。#includeusing namespac
2017-05-22 21:44:40
591
内核线程注入x86
2018-11-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人