易语言过驱动读写内存源码
系统结构:Lx_驱动通信,Lx_获取驱动句柄,Lx_加载驱动,Lx_卸载驱动,CTL_CODE,十六到十,读整数,读文本,写整数,写文本,NtQuerySystemInformation,LocalAlloc,LocalFree,SYSTEM_MODULE_INFORMATION,LoadLibraryEx,FreeLibrary,GetProcAddress,OpenSCManagerA,DeleteService,CreateServiceA,StartServiceA,取指针_整数,CloseServiceHandle,取指针_字节集,VirtualProtectEx,TerminateProcess,OpenServiceA,CreateFileA,ControlService,DeviceIoControl,MessageBoxA,CloseHandle,
======Lx_驱动操作
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ Lx_驱动通信
| |
| |------ Lx_获取驱动句柄
| |
| |------ Lx_加载驱动
| |
| |------ Lx_卸载驱动
| |
| |------ CTL_CODE
| |
| |------ 十六到十
| |
| |
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |------ _打开进程_被单击
| |
| |------ _读内存_被单击
| |
| |------ 读整数
| |
| |------ 读文本
| |
| |------ _写内存_被单击
| |
| |------ 写整数
| |
| |------ 写文本
| |
| |------ __启动窗口_可否被关闭
| |
| |
======调用的Dll
| |
| |---[dll]------ NtQuerySystemInformation
| |
| |---[dll]------ LocalAlloc
| |
| |---[dll]------ LocalFree
| |
| |---[dll]------ SYSTEM_MODULE_INFORMATION
| |
| |---[dll]------ LoadLibraryEx
| |
| |---[dll]------ FreeLibrary
| |
| |---[dll]------ GetProcAddress
| |
| |---[dll]------ OpenSCManagerA
| |
| |---[dll]------ DeleteService
| |
| |---[dll]------ CreateServiceA
| |
| |---[dll]------ StartServiceA
| |
| |---[dll]------ 取指针_整数
| |
| |---[dll]------ CloseServiceHandle
| |
| |---[dll]------ 取指针_字节集
| |
| |---[dll]------ VirtualProtectEx
| |
| |---[dll]------ TerminateProcess
| |
| |---[dll]------ OpenServiceA
| |
| |---[dll]------ CreateFileA
| |
| |---[dll]------ ControlService
| |
| |---[dll]------ DeviceIoControl
| |
| |---[dll]------ MessageBoxA
| |
| |---[dll]------ CloseHandle
调用的DLL命令:
.DLL命令 NtQuerySystemInformation, 整数型, "ntdll.dll", , , 获取系统各类信息
.参数 SystemInformationClass, 整数型
.参数 SystemInformation, 整数型
.参数 SystemInformationLength, 整数型
.参数 ReturnLength, 整数型, 传址
.DLL命令 LocalAlloc, 整数型, "kernel32", "LocalAlloc", , 应该是申请内存,,在同一段内分配内存. 返回个类似句柄的把
.参数 wFlags, 整数型
.参数 wBytes, 整数型
.DLL命令 LocalFree, 整数型, "kernel32", "LocalFree", , 释放内存
.参数 hMem, 整数型, , 句柄
.DLL命令 SYSTEM_MODULE_INFORMATION, , , "RtlMoveMemory"
.参数 Destination, SYSTEM_MODULE_INFORMATION
.参数 Source, 整数型, , 缓冲区
.参数 Length, 整数型, , 尺寸
.DLL命令 LoadLibraryEx, 整数型, , "LoadLibraryExA"
.参数 lpFileName, 文本型
.参数 hFile, 整数型
.参数 dwFlags, 整数型
.DLL命令 FreeLibrary, 逻辑型
.参数 hModule, 整数型
.DLL命令 GetProcAddress, 整数型, , "GetProcAddress"
.参数 hModule, 整数型
.参数 lpProcName, 文本型
.DLL命令 OpenSCManagerA, 整数型, "advapi32.dll", "OpenSCManagerA", , 打开SC管理服务_,建立服务首先应用此函数打开然后再用OpenServiceA打开服务获得服务控制管理器数据库的句柄
.参数 机器名称, 文本型, , lpMachineName用取本机名取得就是本机的名称指向需要打开的计算机名字符串,字符串以NULL结尾,如果参数指定为NULL,表示连接到本机上的SCM
.参数 数据库名, 文本型, , lpDatabaseName指向以NULL结尾的包含SCM数据库名称的字符串,字符串应该指定为"ServicesActive",如果参数指定为NULL,则默认打开"ServicesActive"
.参数 数据库, 整数型, , dwDesiredAccess指定访问SCM的权限,这个参数告诉SCM我们需要进行什么样的操作,常用的取值有三个:SC_MANAGER_CREATE_SERVICESC_MANAGER_CREATE_SERVICESC_MANAGER_ALL_ACCESS
.DLL命令 DeleteService, 整数型, "advapi32.dll", "DeleteService", , 删除服务,成功返回0失败返回非0
.参数 hService, 整数型, , OpenSCManager的数据库句柄
.DLL命令 CreateServiceA, 整数型, "advapi32.dll", "CreateServiceA", , 创建服务,创建服务
.参数 hSCManager, 整数型, , SCM句柄OpenSCManager返回值
.参数 lpServiceName, 文本型, , 指向一个以0字符结尾的表示服务名称的字符串,字符串的最大长度是256个字符字符串的最大长度是256个字符,名称中不允许使用/或者\字符(因为这些字符会和注册表的路径表示方式冲突),这个值和注册表中的键名是相对应的
.参数 lpDisplayName, 文本型, , 指向一个以0字符结尾表示服务名称的字符串,这个名称是供用户界面程序识别函数时使用的,同样,它的最大长度也是256个字符。这个值和注册表中的DisplayName键的值是相对应的
.参数 dwDesiredAccess, 整数型, , 指定需要访问服务的操作可以有以下取值:SERVICE_ALL_ACCESS--可以进行所有操作SERVICE_START--允许调用StartService函数来启动服SERVICE_STOP--允许调用ControlService函数来停止服务DELETE--允许调用DeleteService函数来删除服务
.参数 dwServiceType, 整数型, , 服务的类型我们的教程中只用得到SERVICE_KERNEL_DRIVER,这个值和注册表中的Type键的值是相对应的
.参数 dwStartType, 整数型, , 表示在什么时候启动服务,如果我们需要手动启动驱动的话,那么使用SERVICE_DEMAND_START参数,如果驱动程序需要在系统启动的时候就被启动,那么使用SERVICE_AUTO_START参数,这个取值和注册表中的Start键的取值是相对应的
.参数 dwErrorControl, 整数型, , 表示当驱动初始化的时候出错该如何处理,取值SERVICE_ERROR_IGNORE表示忽略错误,取值SERVICE_ERROR_NORMAL表示将错误记录到系统日志中去,这个取值和注册表中的ErrorControl键值是相对应的
.参数 lpBinaryPathName, 文本型, , 指向以0结尾的表示驱动程序文件名的字符串,这个值和注册表中的ImagePath的键值是相对应的
.参数 lpLoadOrderGroup, 整数型, , 指向以0结尾的表示组名称的字符串,表示该驱动属于哪个组,既然我们的例子程序不属于任何组,那么这里就用NULL好了
.参数 lpdwTagId, 整数型, , 指向一个32位的缓冲区,用来接收驱动在lpLoadOrderGroup参数指定的组中的唯一的标识,我们的例子中不需要用到这个表示,所以参数指定为NULL
.参数 lpDependencies, 整数型, , 对于驱动程序来说,这个参数没什么用途,设置为NULL好了
.参数 lpServiceStartName, 整数型, , 指向一个以0结尾的表示帐号名称的字符串,用于指定服务允许在哪个帐号下运行,如果服务类型是SERVICE_KERNEL_DRIVER的话,该帐号就是系统装入服务的模块名称,我们在这里使用NULL,表示由默认的模块装入
.参数 lpPassword, 整数型, , 对于驱动程序来说,这个参数没什么用途,设置为NULL好了
.DLL命令 StartServiceA, 整数型, "advapi32.dll", "StartServiceA", , 开始启动系统服务,开始运行服务
.参数 服务句柄, 整数型, , CreateService返回的驱动的句柄
.参数 dwNumServiceArgs, 整数型, , 0
.参数 lpServiceArgVectors, 整数型, , 0
.DLL命令 取指针_整数, 整数型, , "lstrcpyn"
.参数 欲取其指针, 整数型, 传址
.参数 欲取其指针, 整数型, 传址
.参数 保留, 整数型
.DLL命令 CloseServiceHandle, 整数型, "advapi32.dll", "CloseServiceHandle", , 关闭SC服务管理句柄_,
.参数 SC对象句柄, 整数型, , 由OpenSCManagerA和CreateServiceA返回的句柄关闭时应关闭两个
.DLL命令 取指针_字节集, 整数型, , "lstrcpyn"
.参数 欲取其指针, 字节集, 传址
.参数 欲取其指针, 字节集, 传址
.参数 保留, 整数型
.DLL命令 VirtualProtectEx, 整数型, "kernel32.dll", "VirtualProtectEx", , 更改内存属性
.参数 hProcess, 整数型
.参数 lpAddress, 整数型
.参数 dwSize, 整数型
.参数 flNewProtect, 整数型
.参数 lpflOldProtect, 整数型
.DLL命令 TerminateProcess, 整数型
.参数 hProcess, 整数型
.参数 Exit, 整数型
.DLL命令 OpenServiceA, 整数型, "advapi32.dll", "OpenServiceA", , 打开服务,
.参数 hSCManager, 整数型, , 由CreateServiceA返回的句柄
.参数 lpServiceName, 文本型, , 服务名称
.参数 dwDesiredAccess, 整数型, , 983551指定需要访问服务的操作
.DLL命令 CreateFileA, 整数型, "kernel32.dll", "CreateFileA", , 创建文件_,这是一个全功能的例程可打开和创建文件、管道、邮槽、通信服务、设备以及控制台 ——返回值:如执行成功则返回文件句柄.INVALID_HANDLE_VALUE表示出错会设置GetLastError.即使函数成功但若文件存在且指定了CREATE_ALWAYS 或 OPEN_ALWAYSGetLastError也会设为ERROR_ALREADY_EXISTS 例子:查看例程API程序自杀
.参数 打开文件名, 文本型, , lpFileName要打开的文件的名字
.参数 访问权限, 整数型, , dwDesiredAccess如果为 GENERIC_READ 表示允许对设备进行读访问;如果为 GENERIC_WRITE 表示允许对设备进行写访问(可组合使用);如果为零表示只允许获取与一个设备有关的信息
.参数 共享方式, 整数型, , dwShareMode
.参数 security特性, 整数型, , lpSecurityAttributes是指向SECURITY_ATTRIBUTES结构的指针,指定了目录的security属性,但要求文件系统支持如NTFS的格式。Windows 98不支持此属性,在函数调用时应设置为NULL
.参数 创建方式, 整数型, , dwCreationDispositiondwCreationDisposition Long下述常数之一:
.参数 文件属性, 整数型, , dwFlagsAndAttributesdwFlagsAndAttributes Long一个或多个下述常数
.参数 从文件复制文件属性, 整数型, , hTemplateFile如果不为零则指定一个文件句柄.新文件将从这个文件中复制扩展属性
.DLL命令 ControlService, 整数型, "advapi32.dll", "ControlService", , 停止系统服务_,用来停止系统服务
.参数 hService, 整数型, , 用 OpenService 返回的句柄
.参数 dwControl, 整数型, , 用于驱动程序的时候,这个参数总是设置为NULL
.参数 lpServiceStatus, SERVICE_STATUS, 传址, 同上,也为NULL
.DLL命令 DeviceIoControl, 整数型, "kernel32.dll", "DeviceIoControl"
.参数 hDevice, 整数型
.参数 dwIoControlCode, 整数型
.参数 lpInBuffer, 整数型
.参数 nInBufferSize, 整数型
.参数 lpOutBuffer, 整数型
.参数 nOutBufferSize, 整数型
.参数 lpBytesReturned, 整数型, 传址
.参数 lpOverlapped, 整数型
.DLL命令 MessageBoxA, 整数型, "User32.dll", "MessageBoxA", , int WINAPI MessageBox
.参数 hWnd, 整数型, , __in_opt HWND hWnd
.参数 lpText, 文本型, , __in_opt LPCTSTR lpText
.参数 lpCaption, 文本型, , __in_opt LPCTSTR lpCaption
.参数 uType, 整数型, , __in UINT uType
.DLL命令 CloseHandle, 整数型, "kernel32", "CloseHandle", , 关闭内核对象_,关闭一个内核对象.其中包括文件、文件映射、进程、线程、security和同步对象等.涉及文件处理时这个函数通常与vb的close命令相似.应尽可能的使用close因为它支持vb的差错控制.注意这个函数使用的文件句柄与vb的文件编号是完全不同的 非零表示成功零表示失败.会设置GetLastError ——注解:除非对内核对象的所有引用都已关闭否则该对象不会实际删除
.参数 对象句柄, 整数型, , 欲关闭的一个对象的句柄;
原贴 [易语言首发]PCVX小程序解密 因为 我也不懂 就看了下这个 PC小程序解密.e 发出来不知道怎么用,所以 度娘一步步找答案得到 的 自行研究捉摸了下 仅供学习参考 1.打开 PC小程序解...
易语言模块基址获取源码,模块基址获取,GetModuleBaseAddress...
易语言流程控制编译原理源码,流程控制编译原理,是否汉字,读字符,是否运算符,是否逻辑运算符,指针回溯,跳过空格,跳过注释,代码块,取程序返回值,外部接口_代码块执行,外部接口_表达式计算,表达式计算,逻辑判断,文本到逻辑,函数调用,函数_位或,函数_测试,函数_信...
易语言搜索程序隐藏代码源码,搜索程序隐藏代码,枚举子程序...
易语言打鱼学习链表源码,打鱼学习链表,入栈,出栈,清空链表,取顶数据,取索引处值,取长度,取值处索引,插入,删除,倒置,是否为空,到八,入队,出队...
易语言脚本解析类源码,脚本解析类,子程序1,QEHash,创建进入许可证_,进入许可区_,退出许可区_,删除进入许可证_,启动线程_,销毁线程_,寻找字节集_,内存_申请,内存_释放,内存_尺寸,内存_读整数,内存_写整数,内存_复制,内存_写字节集,内存_写文本,内存_读字节集,...
易语言核心算术计算解析源码,核心算术计算解析,信息框3,信息框2...
易语言获取网页和密码例程源码,获取网页和密码例程,取文档对象,取浏览器文档对象_API,注册消息_API,发送消息_API,置鼠标捕获窗口_API,取消鼠标捕获窗口_API,取窗口类名_API,取座标窗口句柄_API,取光标位置_API...
易语言置入代码调用子程序办法源码,置入代码调用子程序办法,普通写法,置入写法...