易语言NT内存操作模块源码
系统结构:模块_插远程进程,模块_提升进程权限,输出,模块_取模块句柄,模块_取DLL中函数地址,函数子类化,取函数地址,修改内存数据,读内存数据,动态备份DLL,释放备份DLL,取备份DLL中函数地址,API_取模块句柄,API_取DLL函数地址,API_寻找顶级窗口,API_取线程和进程标识符,API_打开进程,API_申请内存空间,API_写内存字节,API_读内存字节,API_运行远程线程,API_监测对象,API_释放内存空间,API_关闭内核对象,API_返回虚拟信息,API_修改虚拟保护,API_取当前进程伪句柄,API_取系统目录,API_加载DLL,API_取模块信息,API_OpenProcessToken,API_LookupPrivilegeValue,API_AdjustTokenPrivileges,
======程序集1
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |------ 模块_插远程进程
| |
| |------ 模块_提升进程权限
| |
| |
======接口程序集
| |
| |------ 输出
| |
| |------ 模块_取模块句柄
| |
| |------ 模块_取DLL中函数地址
| |
| |
======函数子类化
| |
| |------ _初始化
| |
| |------ 函数子类化
| |
| |------ 取函数地址
| |
| |------ 修改内存数据
| |
| |------ 读内存数据
| |
| |------ 动态备份DLL
| |
| |------ 释放备份DLL
| |
| |------ 取备份DLL中函数地址
| |
| |------ _销毁
| |
| |
======调用的Dll
| |
| |---[dll]------ API_取模块句柄
| |
| |---[dll]------ API_取DLL函数地址
| |
| |---[dll]------ API_寻找顶级窗口
| |
| |---[dll]------ API_取线程和进程标识符
| |
| |---[dll]------ API_打开进程
| |
| |---[dll]------ API_申请内存空间
| |
| |---[dll]------ API_写内存字节
| |
| |---[dll]------ API_读内存字节
| |
| |---[dll]------ API_运行远程线程
| |
| |---[dll]------ API_监测对象
| |
| |---[dll]------ API_释放内存空间
| |
| |---[dll]------ API_关闭内核对象
| |
| |---[dll]------ API_返回虚拟信息
| |
| |---[dll]------ API_修改虚拟保护
| |
| |---[dll]------ API_取当前进程伪句柄
| |
| |---[dll]------ API_取系统目录
| |
| |---[dll]------ API_加载DLL
| |
| |---[dll]------ API_取模块信息
| |
| |---[dll]------ API_OpenProcessToken
| |
| |---[dll]------ API_LookupPrivilegeValue
| |
| |---[dll]------ API_AdjustTokenPrivileges
调用的DLL命令:
.DLL命令 API_取模块句柄, 整数型, "kernel32", "GetModuleHandleA", 公开, 获取一个应用程序或动态链接库的模块句柄 如执行成功成功,则返回模块句柄。零表示失败。会设置GetLastError
.参数 模块名, 文本型, , 指定模块名,这通常是与模块的文件名相同的一个名字。例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD;
.DLL命令 API_取DLL函数地址, 整数型, "kernel32", "GetProcAddress", 公开, 返回函数地址 成功返回DLL库模块内函数地址
.参数 DLL句柄, 整数型, , DLL库模块的句柄,可以调用 LoadLibrary 函数返回。
.参数 DLL库模块内函数名, 文本型, , DLL库模块内函数名
.DLL命令 API_寻找顶级窗口, 整数型, "user32", "FindWindowA", 公开, 寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题) 找到窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError
.参数 窗口类名, 整数型, , 指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类
.参数 窗口文本, 文本型, , 指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收任何窗口标题 示例Dim hw&
.DLL命令 API_取线程和进程标识符, 整数型, "user32", "GetWindowThreadProcessId", 公开, 获取与指定窗口关联在一起的一个进程和线程标识符,成功返回拥有窗口的线程的标识符
.参数 窗口句柄, 整数型, , 指定窗口句柄
.参数 进程ID, 整数型, 传址
.DLL命令 API_打开进程, 整数型, , "OpenProcess", 公开, 打开进程
.参数 访问方法, 整数型, , 指定这个句柄要求的访问方法,PROCESS_CREATE_THREAD(允许远程创建线程);PROCESS_VM_OPERATION (允许远程VM操作);PROCESS_VM_WRITE(允许远程VM写);2035711 完全访问
.参数 子进程继承, 整数型, , 如句柄能够由子进程继承,则为TRUE,0
.参数 进程标识符, 整数型, , 要打开那个进程的进程标识符,使用一个变量装载进程ID。
.DLL命令 API_申请内存空间, 整数型, "kernel32.dll", "VirtualAllocEx", 公开, 申请内存地址空间 成功返回申请的内存空间的起始地址。
.参数 进程句柄, 整数型, , 可以使用函数 OpenProcess() 返回。
.参数 lpAddress, 整数型, , 0
.参数 空间大小, 整数型, 传址, 申请的内存空间大小
.参数 flAllocationType, 整数型, , 4096
.参数 共享方式, 整数型, , 申请的内存空间共享方式,PAGE_READWRITE(4,可读写方式);
.DLL命令 API_写内存字节, 逻辑型, "kernel32", "WriteProcessMemory", 公开, 在指定进程中写内存
.参数 进程句柄, 整数型, , 使用函数 OpenProcess() 返回。
.参数 起始写入地址, 整数型
.参数 要写入的内容, 字节集, , 本参数的类型也能是“字节”型。
.参数 写入长度, 整数型, , 写入的数据长度。
.参数 实际写入长度, 整数型, , 实际写入的数据长度,为0则忽略。
.DLL命令 API_读内存字节, 逻辑型, "kernel32", "ReadProcessMemory", 公开
.参数 进程句柄, 整数型, , 使用函数 OpenProcess() 返回。
.参数 起始读入地址, 整数型
.参数 读出的内容, 字节集, , 本参数的类型也能是“字节”型。
.参数 读出长度, 整数型, , 要读出的数据长度。
.参数 实际读出长度, 整数型, , 实际读出的数据长度,为0则忽略。
.DLL命令 API_运行远程线程, 整数型, "kernel32", "CreateRemoteThread", 公开, 在另一进程中建立并运行一个远程的线程 成功返回新线程句柄,失败返回NULL,并且可调用GetLastError获得错误值。
.参数 进程句柄, 整数型, , 进程句柄
.参数 线程security描述字, 整数型, , 线程security描述字,指向SECURITY_ATTRIBUTES结构的指针
.参数 线程栈大小, 整数型, , 线程栈大小,以字节表示
.参数 远程进程指针, 整数型, , 一个LPTHREAD_START_ROUTINE类型的指针,指向在远程进程中执行的函数地址
.参数 传入参数, 整数型, , 传入参数
.参数 其它标志, 整数型, , 创建线程的其它标志
.参数 线程身份标志, 整数型, , 线程身份标志,如果为NULL
.DLL命令 API_监测对象, 整数型, "kernel32", "WaitForSingleObject", , 监测一个对象
.参数 hHandle, 整数型
.参数 dwMilliseconds, 整数型
.DLL命令 API_释放内存空间, 逻辑型, "kernel32.dll", "VirtualFreeEx", 公开, 释放申请的内存地址空间
.参数 进程句柄, 整数型, , 可以使用函数 OpenProcess() 返回。
.参数 内存空间地址, 整数型, , 用 VirtualAllocEx() 申请的内存空间地址。
.参数 dwSize, 整数型, 传址, 0
.参数 dwFreeType, 整数型, , 32768
.DLL命令 API_关闭内核对象, 整数型, "kernel32", "CloseHandle", 公开, 关闭一个内核对象。其中包括文件、文件映射、进程、线程、security和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的 非零表示成功,零表示失败。会设置GetLastError
.参数 对象句柄, 整数型, , 欲关闭的一个对象的句柄;
.DLL命令 API_返回虚拟信息, 整数型, "kernel32", "VirtualQueryEx"
.参数 hProcess, 整数型, , 对象的进程句柄,可以使用函数 OpenProcess() 返回。
.参数 lpAddress, 整数型, , 对象指针地址
.参数 lpBuffer, 虚拟信息, , 返回的虚拟信息
.参数 dwLength, 整数型, , 信息长度,已知 28
.DLL命令 API_修改虚拟保护, 逻辑型, "kernel32", "VirtualProtectEx"
.参数 hProcess, 整数型, , 对象的进程句柄,可以使用函数 OpenProcess() 返回。
.参数 lpAddress, 整数型, , 虚拟信息.BaseAddress
.参数 dwSize, 整数型, , 虚拟信息.RegionSize
.参数 flNewProtect, 整数型, , 修改类型,#PAGE_EXECUTE_READWRITE 64为可读写模式
.参数 lpflOldProtect, 整数型, 传址, 虚拟信息.Protect
.DLL命令 API_取当前进程伪句柄, 整数型, "kernel32", "GetCurrentProcess", 公开
.DLL命令 API_取系统目录, 整数型, "kernel32", "GetSystemDirectoryA", 公开
.参数 缓冲区, 文本型
.参数 缓冲区长度, 整数型
.DLL命令 API_加载DLL, 整数型, , "LoadLibraryA", 公开
.参数 DLL名, 文本型
.DLL命令 API_取模块信息, 整数型, "psapi.dll", "GetModuleInformation"
.参数 进程句柄, 整数型, , 可以由API_打开进程()或API_取当前进程伪句柄()返回
.参数 模块句柄, 整数型, , 可以由API_取模块句柄()返回
.参数 模块信息, 模块信息, 传址, 提供一个模块信息的变量用于装载模块信息
.参数 模块信息的大小, 整数型, , SIZE:548
.DLL命令 API_OpenProcessToken, 整数型, "advapi32.dll", "OpenProcessToken", , NT/XP关机操作
.参数 ProcessHandle, 整数型
.参数 DesiredAccess, 整数型
.参数 TokenHandle, 整数型, 传址
.DLL命令 API_LookupPrivilegeValue, 逻辑型, "advapi32.dll", "LookupPrivilegeValueA", , 在NT/XP恢复权限
.参数 lpSystemName, 文本型
.参数 lpName, 文本型
.参数 lpLuid, LuID, 传址
.DLL命令 API_AdjustTokenPrivileges, 逻辑型, "advapi32.dll", "AdjustTokenPrivileges", , 在NT/XP中拥有最高权限
.参数 TokenHandle, 整数型
.参数 DisableAllPrivileges, 整数型
.参数 NewState, TOKEN_PRIVILEGES, 传址
.参数 BufferLength, 整数型
.参数 PreviousState, TOKEN_PRIVILEGES, 传址
.参数 ReturnLength, 整数型, 传址
易语言卷帘工具箱源码,初始化卷帘,取星期,更换风格,搜索文件,线程搜索,修改底色,获取信息,取信息记录,取网络信息...
易语言仅用核心支持库实现对外部数据库的操作ADODB操作外部数据库例程源码,根据村组查询数据,数据库_读取数据到高级表格,数据库_保存高级表格数据到数据库,数据库_读取数据到列表...
易语言仅用核心支持库实现对外部数据库的操作ADODB操作外部数据库例程源码,根据村组查询数据,数据库_读取数据到高级表格,数据库_保存高级表格数据到数据库,数据库_读取数据到列表...
易语言仅用核心支持库实现对外部数据库的操作ADODB操作外部数据库例程源码,根据村组查询数据,数据库_读取数据到高级表格,数据库_保存高级表格数据到数据库,数据库_读取数据到列表...
易语言两个文件内存中通讯源码,子程序1,打开文件,生成空文件,生成重复字节文件,移到文件首,移到文件尾,移动读写位置,取读写位置,关闭文件,取文件长度,写出字节集,是否在文件尾,取错...
易语言易模块管理器Include目录源码,CopyTo_CreateProcessDebugInfo,CopyTo_CreateThreadDebugInfo,CopyTo_ExitThreadDebugInfo,CopyTo_ExitProcessDebugInfo,CopyTo_LoadDllDebugInfo,CopyTo_UnloadDllDebugInfo,CopyTo_ExceptionDebugInfo,Copy...
易语言卷帘工具箱源码,初始化卷帘,取星期,更换风格,搜索文件,线程搜索,修改底色,获取信息,取信息记录,取网络信息...
子程序1,打开文件,生成空文件,生成重复字节文件,移到文件首,移到文件尾,移动读写位置,取读写位置,关闭文件,取文件长度,写出字节集,是否在文件尾,取错误信息,读入字节集,读入2M字节集,清除文件缓冲区,读入文本,写出文本,写文本行,读入一行,插入字节集,取文件号...
初始化卷帘,取星期,更换风格,搜索文件,线程搜索,修改底色,获取信息,取信息记录,取网络信息...