VB 使用 ZwQueryInformationProcess

Option Explicit

Public Declare Function ZwQueryInformationProcess _
Lib "NTDLL.DLL" (ByVal ProcessHandle As Long, _
ByVal ProcessInformationClass As PROCESSINFOCLASS, _
ByVal ProcessInformation As Long, _
ByVal ProcessInformationLength As Long, _
ByRef ReturnLength As Long) As Long

Public Enum
PROCESSINFOCLASS
ProcessBasicInformation
ProcessQuotaLimits
ProcessIoCounters
ProcessVmCounters
ProcessTimes
ProcessBasePriority
ProcessRaisePriority
ProcessDebugPort
ProcessExceptionPort
ProcessAccessToken
ProcessLdtInformation
ProcessLdtSize
ProcessDefaultHardErrorMode
ProcessIoPortHandlers
'// Note: this is kernel mode only
ProcessPooledUsageAndLimits
ProcessWorkingSetWatch
ProcessUserModeIOPL
ProcessEnableAlignmentFaultFixup
ProcessPriorityClass
ProcessWx86Information
ProcessHandleCount
ProcessAffinityMask
ProcessPriorityBoost
ProcessDeviceMap
ProcessSessionInformation
ProcessForegroundInformation
ProcessWow64Information
ProcessImageFileName
ProcessLUIDDeviceMapsEnabled
ProcessBreakOnTermination
ProcessDebugObjectHandle
ProcessDebugFlags
ProcessHandleTracing
ProcessIoPriority
ProcessExecuteFlags
ProcessResourceManagement
ProcessCookie
ProcessImageInformation
MaxProcessInfoClass
'// MaxProcessInfoClass should always be the last enum
End Enum

Public
Type PROCESS_BASIC_INFORMATION
ExitStatus
As Long 'NTSTATUS
PebBaseAddress As Long 'PPEB
AffinityMask As Long 'ULONG_PTR
BasePriority As Long 'KPRIORITY
UniqueProcessId As Long 'ULONG_PTR
InheritedFromUniqueProcessId As Long 'ULONG_PTR
End Type

Private Function GetProcessId(ByVal hProcess As Long) As Long
Dim
st As Long
Dim
pbi As PROCESS_BASIC_INFORMATION: pbi = GetProcessBasicInfo(hProcess)
GetProcessId = pbi.UniqueProcessId
End Function

Private Function
GetProcessBasicInfo(ByVal hProcess As Long) As PROCESS_BASIC_INFORMATION
Dim st As Long
Dim
pbi As PROCESS_BASIC_INFORMATION
st = ZwQueryInformationProcess(hProcess, ProcessBasicInformation, VarPtr(pbi), LenB(pbi),
0)

If (Not NT_SUCCESS(st)) Then Exit Function
GetProcessBasicInfo = pbi
End Function

Public Function
NT_SUCCESS(ByVal Status As Long) As Boolean
NT_SUCCESS = (Status >= 0)
End Function

 

VB 调用 WindowsAPI 函数GetModuleFileName、 GetProcessImageFileName 和QueryFullProcessImageName获取进程文件路径 Windows编程中,需要获取一个已打开窗口程序的完整路径,以便下次用ShellExecute 函数直接打开。 能实现这一目标的Windows API函数有3个: GetModuleFileName、GetProcessImageFileName 和QueryFullProcessImageName。网上的API函数手册大多只能查到第一个,后面两个只能百度查找调用方法,然而却都讲得不清不楚。... 阅读详情

相关推荐

逆向——反调试

逆向——基础分析基础分析(二) 基础分析(二)

wk19951125的博客 1216

VB根据PID得到进程路径

VB根据PID得到进程路径,改了一段代码,可以获取进程的PID和路径:   在窗体设计器里放一个listbox,命名为process;   再放2个txtbox,一个名为ProcessID,用来显示PID;   另一个名为Path,用来显示进程路径;   最后再放一个按钮,命名为cmdRefresh,用于刷新列表;   完成后即可运行代码

Windows内核下获取进程全路径的方法

Windows内核下获取进程全路径的方法

Think88666的博客 1536

Hook ZwQueryInformationProcess 函数使得异常处理可以在shellcode上执行

32位系统上当你的shellcode有使用 __try __except 进行处理时,系统最终会调用RtlIsValidHandler来判断异常处理函数是否有效,如果你希望处理异常 应该是HookRtlIsValidHandler,可是微软没有导出这个接口 于是我们逆向看看RtlIsValidHandler 发现它会判断ZwQueryInformationProcess的返回值,...

lif12345的专栏 1903

windows 内核下获取进程路径

windows 内核下获取进程路径 思路:1):在EPROCESS结构中获取。此时要用到一个导出函数:PsGetProcessImageFileName,申明如下: NTSYSAPI UCHAR * PsGetProcessImageFileName( __in PEPROCESS Process ); 此函数获取的是一个简单的进程名,...

861

用到的结构

1 typedef NTSTATUS (WINAPI *ZWQUERYINFORmMATIONTHREAD)(DWORD ThreadHandle,DWORD ThreadInformationClass,THREAD_BASIC_INFORMATION* SystemInformation,DWORD ThreadInformationLength,DWORD ReturnL...

dengjiatao9832的博客 241

通过ZwQuerySystemInformation获取EPROCESS

google一下,发现很多都是直接通过ZwQuerySystemInformation通过11号获取进程结构SYSTEM_PROCESS_INFORMATION,对于详细的进程信息表达不够。所以想要通过这个来查看详细的 EPROCESS 结构。方法可以通过 PsLookupProcessByProcessId 这个函数来获取。函数原型在下面给出。   typedef struct _SYS...

weixin_33672109的博客 627

枚举系统中打开的句柄

删除系统中的文件会提示 有进程已经打开了这个文件会导致不能删除该文件在网上找到了在ring3下实现文件碎甲的一篇介绍:在ring3上实现文件碎甲功能其中首先需要实现的就是需要枚举出系统中每个进程打开的文件句柄枚举进程 枚举句柄 这些功能都需要用到从Ntdll.dll中导出系统内核函数比如函数 ZwQuerySystemInformation ZwQueryInformationPr

4965

ZwQuerySystemInformation 查看系统进程信息

ZwQuerySystemInformation 查看系统进程信息 [cpp] view plaincopyprint? #include typedef enum _SYSTEM_INFORMATION_CLASS { SystemBasicInformation, SystemProcessorInformation, SystemP

anhkgg的专栏 1191

RING3下 内存清零法 杀进程

<br />在一般任务管理器无法关闭进程时用到<br />内存清零法 杀进程 原理分析<br />1.先打开CSRSS.EXE系统进程,获得其句柄,几乎系统所有的HANDLE结构体中,里面的ProcessId都是指向csrss.exe的,利用它的PID来进行遍历进程实现过滤。<br /><br />2.分配好一块内存空间Buffer,用来存储SystemHandleInformation系统句柄信息<br /><br />3.通过ZwQuerySystemInformation函数来查询系统句柄信息并保存在

wowbell的专栏 6069

进程遍历(枚举),模块遍历,线程遍历,进程链表,线程链表,模块链表

关键字: R3 Peb.Ldr,PEB_LDR_DATA NtQuerySystemInformation,ZwQueryInformationProcess, CreateToolhelp32Snapshot,EnumProcesses,EnumProcessModules ReadProcessMemory,NtReadProcessMemory kernel32.dll,psa...

fzy20062008的专栏 2076

隐藏进程检测

 隐藏进程检测User Mode下的隐藏进程检测我们先来看一些简单的方法,这些方法可以用在ring3下,用不着驱动。检测的原理是每一个进程活动时都会暴露一些痕迹,可以通过这些痕迹检测到它们。这些痕迹包括打开的句柄、窗口和创建的系统对象。针对类似的检测方法来实现进程隐藏并不困难,但需要考虑进程工作时可能暴露出的所有迹象。目前还没有一个公开的rootkit做到了这一点(遗憾的是私有版本我也还没见到)。

Tommy(凌飞)的专栏 3620

根据进程句柄获得可执行文件路径的几种方法

转载自: http://blog.csdn.net/hellokandy/article/details/52160077 通过进程句柄,获得可执行文件的路径,主要有以下几种方法: 第一种方法:也是最常用的方法,是通过GetModuleFileNameEx函数获得可执行文件的模块路径,这个函数从Windows NT 4.0开始到现在的Vista系统都能使用,向后兼容性比较好。

while(1) { smile(); } 13万+

Windows 反调试参考翻译1

[1] 说明  这篇文章分类并提供了几种在基于WINDOWS NT的操作系统中使用的反调试技术.反调试技术是程序用来检测自身是否运行于调试器之下的各种方式之一.它们被用于商业执行保护,加壳以及恶意软件, 为了阻止或减慢逆向工程过程.我们假定程序是在ring3级调试器,例如Windows平台的OllyDbg下分析.本文的目标是逆向工程人员和恶意软件分析人员.注意有一点我们只单纯的涉及一些基本的反调

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1293

函数ZwQuerySystemInformation小结

函数存在于NTDLL.DLL动态链接库中。NTDLL.DLL负责ring3与ring0之间的通信。当使用子系统方式进行系统调用的时候,ntdll.dll和SSDT会配合使用。 关于ZwQuerySystemInformation这个函数可以用来查询进程信息、内核信息、硬件信息(例如CPU数目)、句柄信息、时间信息等54个系统信息。 该函数的原型是 NTSTATUS WI...

weixin_33906657的博客 414

检测隐藏进程(一)

许多用户都有过用视窗系统自带的任务管理器查看所有进程的经验,并且非常多人都认为在任务管理器中隐藏进程是不可能的。而实际上,进程隐藏是再简单不过的事情了。有许多可用的方法和参考源码能达到进程隐藏的目的。令我惊奇的是只有非常少一部分的木马使用了这种技术。估计1000个木马中仅有1个是进程隐藏的。我认为木马的作者太懒了,因为隐藏进程需要进行的额外工作仅仅是对原始码的拷贝-粘贴。所

tcz999的专栏 1403
上一篇: 对 PassThru 中的 Protocol.c 的注释
下一篇: VB 开机自动运行程序
yeuegi
博客等级 码龄18年 17粉丝 161原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值