巴特西
首页
Python
Java
PHP
IOS
Andorid
NodeJS
JavaScript
HTML5
windows内核遍历进程
windows 内核下获取进程路径
windows 内核下获取进程路径 思路:1):在EPROCESS结构中获取.此时要用到一个导出函数:PsGetProcessImageFileName,申明如下: NTSYSAPI UCHAR * PsGetProcessImageFileName( __in PEPROCESS Process ); 此函数获取的是一个简单的进程名,并不是绝对路径. 2):ZwQueryInformationProcess. 要想获取进程的绝对路径,可用一个未公开的函数:ZwQueryInf
Windows内核遍历驱动模块源码分析
要获取windows 内核中所有驱动模块信息,调用 系统服务函数 NtQuerySystemInformation,参数SystemInformationClass 传入SystemModuleInformation. NtQuerySystemInformation申明如下: // // System Information Classes. // typedef enum _SYSTEM_INFORMATION_CLASS { SystemBasicInformation, SystemPr
Windows内核之进程基本含义以及进程的创建
进程 1 进程的含义: 1.1 一个是操作系统用来管理进程的内核对象. 内核对象也是系统用来存放关于进程的统计信息的地方. 1.2 还有一个是地址空间,它包括全部可运行模块或DL L 模块的代码和数据.它还包括动态内存分配的空间. 如线程堆栈和堆分配空间. 2 操作系统启动应用程序的步骤 2.1 调用C/c++执行时的启动函数 启动函数总共4种,WinMainCRTStartup,wWinMainCRTStartup,mainCRTStartup,wmainCRTStartup. 启动函
驱动开发:内核遍历进程VAD结构体
在上一篇文章<驱动开发:内核中实现Dump进程转储>中我们实现了ARK工具的转存功能,本篇文章继续以内存为出发点介绍VAD结构,该结构的全程是Virtual Address Descriptor即虚拟地址描述符,VAD是一个AVL自平衡二叉树,树的每一个节点代表一段虚拟地址空间.程序中的代码段,数据段,堆段都会各种占用一个或多个VAD节点,由一个MMVAD结构完整描述. VAD结构的遍历效果如下: 那么这个结构在哪?每一个进程都有自己单独的VAD结构树,这个结构通常在EPROCESS结构里面里
Windows内核之进程的终止和子进程
1 进程终止的方法: <1>主线程的进入点函数返回(最好使用这种方法) <2>进程中的一个线程调用ExitProcesss函数(应该避免使用这样的方法). <3>还有一个进程中的线程调用TerminateProcess函数(应该避免使用这样的方法). <4>进程中的全部线程自行终止执行(这样的情况差点儿从未发生). 1.1 主线程进入点函数返回 始终都应该这样来设计应用程序,即仅仅有当主线程的进入点函数返回时,它的进程才终止执行.这是保证全部线程资源可以得
windows系统调用 遍历进程的虚拟地址
#include "iostream" #include "windows.h" #include "shlwapi.h" #include "iomanip" #pragma comment(lib,"shlwapi.lib") using namespace std; inline bool TestSet(DWORD dwTarget,DWORD dwMask){ return ((dwTarget&
Fibratus:一款功能强大的Windows内核漏洞利用和跟踪工具
今天给大家介绍的是一款名叫Fibratus的开源工具,广大研究人员可以使用这款功能强大的工具来进行Windows内核漏洞利用.挖掘与跟踪. Fibratus这款工具能够捕捉到绝大多数的Windows内核活动-进程/线程创建和终止,上下文转换,文件系统I/O,寄存器,网络活动以及DLL加载/卸载等等.除此之外,所有的内核事件可以直接以AMQP消息.Elasticsearch簇或标准输出流的形式提供给用户.大家可以使用filaments(一款轻量级Python模块)来根据自己的需要去扩展Fibrat
Windows提高_1.2遍历进程、遍历模块
进程 什么是进程? 通俗的来讲,进程就是一个运行中的程序,最少包含一个虚拟空间,通常是 4 GB大小,一组提供数据和代码的模块,通产是 dll 和 exe 文件,一个进程内核对象和最少一个线程. 进程类似于一个容器,提供给线程一块空间和需要执行的操作,线程用于进行执行. 什么是模块? 提供代码和数据的可执行文件,主要有 exe 和 dll.可以通过 VS 的调试->窗口->模块进行查看 创建进程 // 结构体用于设置进程的初始化信息 STARTUPINFO StartupInfo = { si
windows内核代码之进程操作
[toc] 一丶简介 整理一下windows内核中.常用的代码.这里只整理下进程的相关代码. 二丶 windows内核之遍历进程 内核中记录进程的结构体是EPROCESS结构.所以只需要遍历这个结构即可.标准方法可以使用ZwQuerySystemInformation函数.使用SystemProcessInformation功能号. 另外也有很多种枚举进程的方法比如找到EPROCESS结构进行枚举的.(CPU结构体 KPCR)等等.不过兼容性都是不太好.另一种方法是枚举句柄表 PspCidTab
Windows编程之进程遍历(C++实现)
Windows编程之进程遍历 PS: 主要扣代码使用,直接滑动到最下面使用. 遍历进程需要几个API,和一个结构体 1.创建进程快照 2.遍历首次进程 3.继续下次遍历 4.进程信息结构体 API 分别是: 1.创建进程快照 HANDLE WINAPI CreateToolhelp32Snapshot( 进程快照API DWORD dwFlags, 遍历的标志,表示你要遍历什么(进程,模块,堆...) DWORD th32ProcessID 遍历的进程ID,如果为0,则是当前进程,如果不为0,则
Windows内核基础知识-8-监听进程、线程和模块
Windows内核基础知识-8-监听进程.线程和模块 Windows内核有一种强大的机制,可以在重大事件发送时得到通知,比如这里的进程.线程和模块加载通知. 本次采用链表+自动快速互斥体来实现内核的主要架构. 进程通知 只要在内核里面注册了进程通知那么创建进程就会反馈给内核里面. //注册/销毁进程通知函数NTSTATUS PsSetCreateProcessNotifyRoutineEx( PCREATE_PROCESS_NOTIFY_ROUTINE_EX NotifyRoutine,//回
【内核篇】Windows内核重要变量
====================================================== LIST_ENTRY PsLoadedModuleList; [定 义] wrk\wrk-v1.2\base\ntos\mm\Sysload.c [初始化] wrk\wrk-v1.2\base\ntos\mm\Sysload.c [MiInitializeLoadedModuleList()] [引 用] l NtQuerySystemInformation()
遍历进程活动链表(ActiveProcessLinks)、DKOM隐藏进程
1.EPROCESS结构体 EPROCESS块来表示.EPROCESS块中不仅包含了进程相关了很多信息,还有很多指向其他相关结构数据结构的指针.例如每一个进程里面都至少有一个ETHREAD块表示的线程.进程的名字,和在用户空间的PEB(进程环境)块等等.EPROCESS中除了PEB成员块在是用户空间,其他都是在系统空间中的. 2.查看EPROCESS结构 kd> dt_eprocessntdll!_EPROCESS +0×000 Pcb : _KPROCESS
Windows内核 基本数据结构
驱动对象: 每个驱动程序都会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载时被内核中的对象管理程序所创建的.驱动对象用DRIVER_OBJECT数据结构表示,它作为驱动的一个实例被内核加载,并且内核对一个驱动只加载一个实例.确切地说,是由内核中的I/O管理器负责加载的,驱动程序需要在DriverEntry中初始化.驱动对象的结构定义如下(wdm.h): typedef struct _DRIVER_OBJECT { //结构的类型和大小 CSHORT Type; CSHORT Size;
Windows内核之线程的调度,优先级,亲缘性
1 调度 Windows不是实时操作系统,它是抢占式多线程操作系统.在如果全部优先级同样的情况下,CPU对线程的调度原则是每隔20m就会切换到下一个线程,依据Context中的IP和SP来接着运行上次的东西.Windows永远不会让1个线程去独占一段时间. 2 可调度性 系统仅仅调用能够调度的线程,事实上系统的大部分线程都是处于不可调度的状态,要么处于暂停的状态,要么处于休眠的状态. 3 线程的暂停和恢复 <1>在CreateThread的时候通过制定CREATE_SUSPENDED来让线程暂
(转)WINDOWS内核对象
WINDOWS内核对象 原文地址:http://blog.csdn.net/misterliwei/article/details/976988 支持原创 一.前言 Windows中有很多像进程对象.线程对象.文件对象等等这样的对象,我们称之为Windows内核对象.内核对象是系统地址空间中的一个内存块,由系统创建并维护.内核对象为内核所拥有,而不为进程所拥有,所以不同进程可以访问同一个内核对象. 二.内核对象结构 每个对象都有对象头和对象体组成.所有类型的对象头结构都是相同的,而结构体部分却
Windows2003 内核级进程隐藏、侦测技术
论文关键字: 内核 拦截 活动进程链表 系统服务派遣表 线程调度链 驱动程序简介 论文摘要:信息对抗是目前计算机发展的一个重要的方向,为了更好的防御,必须去深入的了解敌人进攻的招式.信息对抗促使信息技术飞速的发展.下面我选取了信息对抗技术的中一个很小一角关于windows内核级病毒隐藏技术和反病毒侦测技术作为议题详细讨论. 1.为什么选驱动程序 驱动程序是运行在系统信任的Ring0环境下在代码,她拥有对系统任何软件和硬件的访问权限.这意味着内核驱动可以访问所有的系统资源,可以读取所
[14]Windows内核情景分析 --- 文件系统
文件系统 一台机器上可以安装很多物理介质来存放资料(如磁盘.光盘.软盘.U盘等).各种物理介质千差万别,都配备有各自的驱动程序,为了统一地访问这些物理介质,windows设计了文件系统机制.应用程序要访问存储在那些物理介质上的资料时,无需直接访问,只需借助文件系统即可对其有效访问.各种物理介质的存储方式千差万别,文件系统则按照'文件'的概念,把要存储的资料以文件为单位进行存放,然后,读取的时候也以文件为单位进行读取.当应用程序要访问资料时,只需指明'文件名+文件内偏移',文件系统自然就能找到实际
[11]Windows内核情景分析---设备驱动
设备驱动 设备栈:从上层到下层的顺序依次是:过滤设备.类设备.过滤设备.小端口设备[过.类.过滤.小端口] 驱动栈:因设备堆栈原因而建立起来的一种堆栈 老式驱动:指不提供AddDevice的驱动,又叫NT式驱动 Wdm驱动:指提供了AddDevice的驱动 驱动初始化:指IO管理器加载驱动后,调用驱动的DriverEntry.AddDevice函数 设备栈中上层设备与下层设备的绑定关系不是一对一,而是一对多.一个设备可以同时绑定到N个下层设备上去,而一个下层设备,也可以同时被N个上层设备绑定,但
[7] Windows内核情景分析---线程同步
基于同步对象的等待.唤醒机制: 一个线程可以等待一个对象或多个对象而进入等待状态(也叫睡眠状态),另一个线程可以触发那个等待对象,唤醒在那个对象上等待的所有线程. 一个线程可以等待一个对象或多个对象,而一个对象也可以同时被N个线程等待.这样,线程与等待对象之间是多对多的关系.他们之间的等待关系由一个队列和一个'等待块'来控制,等待块就是线程与等待目标对象之间的纽带. WaitForSingleObject可以等待那些"可等待对象",哪些对象是'可等待'的呢?进程.线程.作业.文件对象.
热门专题
subshader如何匹配低中高配机型
FLAGS_logbufsecs 默认值
winform创建一个事件
fastapi 静态文件
jeb 1.5.2015 载入插件后没反映
thinkphp 助手函数在哪里
443配置多个location
fuelux.tree 官网
TextContrast 锯齿
unity android 存储地址
css如何设置高度等于宽度
VC 对话框更改图标
运行imu_tk segmentation
python2.7 readline 结尾
bodyparser 解析过大请求体
python Socket套接字的心得
docker日志存储
jquery lazyload csdn 详解
springboot 唯一id生成 日期开头
网站数据库覆盖了怎么恢复