为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 易语言相关 > 系统工具源码 正文

用NtQuerySystemInformation函数暴力枚举驱动

三叶资源网 2017-12-11 17:04:25 系统工具源码 3697 ℃ 3 评论

资源介绍:

易代码出于本人之手,另附VB代码注释,VB代码非原创,2年前从看雪某个角落瞄出来翻译的[因为我个人非常喜欢把各种语言互相转换- -],一直把这个功能集成在自己的私人模块里,今天拿出来与大家分享.

因为原代码申请内存释放内存用了自己写的内存控制函数[这个暂且不发了,sorry],我已经换为易语言自己的申请内存[注意,我没有释放],释放内存这些请自行解决,否则查询易论坛,一抓一大把.否则将导致内存大量浪费- -这个你懂的.不过不是经常调用也无所谓,

资源作者:

lms520

资源界面:

.版本 2
.支持库 spec

.程序集 窗口程序集1

.子程序 驱动操作_暴力枚举驱动, 整数型, , 暴力枚举驱动,成功返回驱动数量,失败返回0
.参数 驱动文件名, 内核驱动成员, 数组
.局部变量 Ret, 整数型
.局部变量 Buffer, 整数型
.局部变量 ModulesInfo, lms520_MODULES
.局部变量 i, 整数型
.局部变量 驱动服务名称, 文本型, , "0"
.局部变量 X, 整数型
.局部变量 位置A, 整数型
.局部变量 判断函数, 整数型
.局部变量 装载类型, 内核驱动成员

' '''''''''定义数据类型SYSTEM_MODULE_INFORMATION' '''''''''
' Option Explicit
' Private Type SYSTEM_MODULE_INFORMATION
' dwReserved(1) As Long
' dwBase As Long
' dwSize As Long
' dwFlags As Long
' Index As Integer
' Unknown As Integer
' LoadCount As Integer
' ModuleNameOffset As Integer
' ImageName As String * 256
' End Type
' '''''''''定义数据类型MODULES' '''''''''
' Private Type MODULES
' dwNumberOfModules As Long
' ModuleInformation As SYSTEM_MODULE_INFORMATION
' End Type
' '''''''''定义API函数'''''''''''''''''''
' Private Declare Function NtQuerySystemInformation Lib "NTDLL.DLL" ( _
' ByVal SystemInformationClass As Long, _
' ByVal pSystemInformation As Long, _
' ByVal SystemInformationLength As Long, _
' ByRef ReturnLength As Long) As Long
' Private Declare Function VirtualAlloc Lib "kernel32.dll" ( _
' ByVal Address As Long, _
' ByVal dwSize As Long, _
' ByVal AllocationType As Long, _
' ByVal Protect As Long) As Long
' Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
' ByVal pDst As Long, _
' ByVal pSrc As Long, _
' ByVal ByteLen As Long)
' '''''''''定义常量'''''''''''''''''''
' Private Const SystemModuleInformation = 11
' Private Const PAGE_READWRITE = &H4
' Private Const MEM_RELEASE = &H8000
' Private Const MEM_COMMIT = &H1000
清除数组 (驱动服务名称)
' Private Sub cmdEnum_Click()
' Dim Ret As Long
' Dim Buffer As Long
' Dim ModulesInfo As MODULES
' Dim i As Long
' NtQuerySystemInformation SystemModuleInformation, 0, 0, Ret
meiju_NtQuerySystemInformation (#SystemModuleInformation, 0, 0, Ret)
' Buffer = VirtualAlloc(0, Ret * 2, MEM_COMMIT, PAGE_READWRITE)
Buffer = 申请内存 (Ret × 2, 真)
' Buffer = meiju_VirtualAlloc (0, Ret × 2, #MEM_COMMIT, #PAGE_READWRITE)
调试输出 (Buffer)
' NtQuerySystemInformation SystemModuleInformation, Buffer, Ret * 2, Ret
meiju_NtQuerySystemInformation (#SystemModuleInformation, Buffer, Ret × 2, Ret)
' CopyMemory ByVal VarPtr(ModulesInfo), ByVal Buffer, LenB(ModulesInfo)
meiju_CopyMemory (ModulesInfo, Buffer, meiju_GlobalSize (ModulesInfo))
' lstModule.Clear '列表框.清空()
' lstModule.AddItem "Total: " & ModulesInfo.dwNumberOfModules & " Modules"
' lstModule.AddItem StrConv(ModulesInfo.ModuleInformation.ImageName, vbUnicode)
' 输出调试文本 (“Total: ” + 到文本 (ModulesInfo.dwNumberOfModules) + “ Modules”)
' 输出调试文本 (到文本 (ModulesInfo.ModuleInformation.ImageName))
加入成员 (驱动服务名称, 到文本 (ModulesInfo.ModuleInformation.ImageName))
' i = ModulesInfo.dwNumberOfModules
i = ModulesInfo.dwNumberOfModules
判断函数 = i
.判断循环首 (i > 1)
    i = i - 1
    Buffer = Buffer + 71 × 4
    ' While (i > 1)
    ' i = i - 1
    ' Buffer = Buffer + 71 * 4
    meiju_CopyMemory (ModulesInfo, Buffer, meiju_GlobalSize (ModulesInfo))
    ' CopyMemory ByVal VarPtr(ModulesInfo), ByVal Buffer, LenB(ModulesInfo)
    ' 输出调试文本 (到文本 (ModulesInfo.ModuleInformation.ImageName))
    加入成员 (驱动服务名称, 到文本 (ModulesInfo.ModuleInformation.ImageName))

    ' lstModule.AddItem StrConv(ModulesInfo.ModuleInformation.ImageName, vbUnicode)
    ' Wend
.判断循环尾 ()
.计次循环首 (取数组成员数 (驱动服务名称), X)
    位置A = 倒找文本 (驱动服务名称 [X], “”, , 假)
    装载类型.驱动文件名 = 取文本右边 (驱动服务名称 [X], 取文本长度 (驱动服务名称 [X]) - 位置A)
    装载类型.驱动全路径名 = 驱动服务名称 [X]
    加入成员 (驱动文件名, 装载类型)
.计次循环尾 ()
.如果 (判断函数 > 1)
    返回 (取数组成员数 (驱动服务名称))
.否则
    返回 (0)
.如果结束
' 本源码来自三叶资源网(www.sanye.cx)

.子程序 _按钮1_被单击
.局部变量 局_驱动数据, 内核驱动成员, , "0"
.局部变量 循环, 整数型

编辑框1.内容 = “”
驱动操作_暴力枚举驱动 (局_驱动数据)
.计次循环首 (取数组成员数 (局_驱动数据), 循环)
    编辑框1.加入文本 (“驱动文件名:” + 局_驱动数据 [循环].驱动文件名 + #换行符 + “驱动全路径名:” + 局_驱动数据 [循环].驱动全路径名 + #换行符)
.计次循环尾 ()
' 本源码来自三叶资源网(www.sanye.cx)

资源下载:

文件下载

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

已有3位网友发表了看法:

  • 易语言

    易语言  评论于 [2020-09-11 10:30:45]  回复

    vb ntquerysysteminformation

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
辣妈帮Unicode字符串解析HTML语句XUI花椒直播工具WebSocket ClientHTMLayout提取资源图标动态加密哈希表类QQ空间分享删除群发例程mongodb使用clientToken算法谷歌浏览器CURL多彩浏览框支持库进制转换网页解析库
最新评论