易语言增强APIHook类1.4模块源码
系统结构:汇编动态调用函数,MyMessageBoxA1,MyMessageBoxA2,MyMessageBoxA3,子程序10000000000000000000000000000,MyGetWindowLongA1,MyGetWindowLongA2,线程1,线程2,线程3,MywsprintfA1,指针取文本,API_RtlMoveMemory_读取整数,API_RtlMoveMemory_写入整数,API_lstrcpynA_字节集,API_VirtualProtect,API_LoadLibraryA,API_GetProcAddress,以下是演示中所用的dll声明,API_MessageBoxA,API_lstrcpynA_文本,API_OutputDebugStringA,API_CreateThread,API_wsprintfA,API_lstrlen,API_lstrcpyn_Text,API_HeapAlloc,API_GetProcessHeap,检测是否已被Hook,安装HookByName,安装HookByAddr,卸载Hook,继续Hook,暂停Hook,函数原内存地址,函数新过程地址,新函数头,清理新函数头,调用原函数,写出Nop数量,汇编动态调用,读取一字节,sizeofcode,暂停其他线程,挂起指定线程,恢复其他线程,有效句柄,汇编sizeofcode,API_RtlMoveMemory_读取整数,API_RtlMoveMemory_写入整数,API_lstrcpynA_字节集,API_VirtualProtect,API_LoadLibraryA,API_GetProcAddress,API_GetThreadPriority,API_GetCurrentThreadId,API_GetCurrentThread,API_SetThreadPriority,API_GetCurrentProcessId,API_CreateToolhelp32Snapshot,API_Thread32First,API_Thread32Next,API_OpenThread,API_SuspendThread,API_CloseHandle,API_ResumeThread,
======启动
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |
======演示窗口程序集
| |
| |------ 汇编动态调用函数
| |
| |------ _按钮2_被单击
| |
| |------ _按钮1_被单击
| |
| |------ MyMessageBoxA1
| |
| |------ _按钮3_被单击
| |
| |------ _按钮4_被单击
| |
| |------ MyMessageBoxA2
| |
| |------ _按钮5_被单击
| |
| |------ _按钮6_被单击
| |
| |------ MyMessageBoxA3
| |
| |------ _按钮7_被单击
| |
| |------ 子程序10000000000000000000000000000
| |
| |------ _按钮8_被单击
| |
| |------ _按钮9_被单击
| |
| |------ MyGetWindowLongA1
| |
| |------ _按钮10_被单击
| |
| |------ _按钮11_被单击
| |
| |------ MyGetWindowLongA2
| |
| |------ _按钮12_被单击
| |
| |------ _演示窗口_创建完毕
| |
| |------ 线程1
| |
| |------ 线程2
| |
| |------ 线程3
| |
| |------ _按钮13_被单击
| |
| |------ _按钮14_被单击
| |
| |------ MywsprintfA1
| |
| |------ 指针取文本
| |
| |------ _按钮15_被单击
| |
| |------ _按钮16_被单击
| |
| |------ _演示窗口_将被销毁
| |
| |
======调用的Dll
| |
| |---[dll]------ API_RtlMoveMemory_读取整数
| |
| |---[dll]------ API_RtlMoveMemory_写入整数
| |
| |---[dll]------ API_lstrcpynA_字节集
| |
| |---[dll]------ API_VirtualProtect
| |
| |---[dll]------ API_LoadLibraryA
| |
| |---[dll]------ API_GetProcAddress
| |
| |---[dll]------ 以下是演示中所用的dll声明
| |
| |---[dll]------ API_MessageBoxA
| |
| |---[dll]------ API_lstrcpynA_文本
| |
| |---[dll]------ API_OutputDebugStringA
| |
| |---[dll]------ API_CreateThread
| |
| |---[dll]------ API_wsprintfA
| |
| |---[dll]------ API_lstrlen
| |
| |---[dll]------ API_lstrcpyn_Text
| |
| |---[dll]------ API_HeapAlloc
| |
| |---[dll]------ API_GetProcessHeap
======功能子程序
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |
======增强APIHook类
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ 检测是否已被Hook
| |
| |------ 安装HookByName
| |
| |------ 安装HookByAddr
| |
| |------ 卸载Hook
| |
| |------ 继续Hook
| |
| |------ 暂停Hook
| |
| |------ 函数原内存地址
| |
| |------ 函数新过程地址
| |
| |------ 新函数头
| |
| |------ 清理新函数头
| |
| |------ 调用原函数
| |
| |------ 写出Nop数量
| |
| |------ 汇编动态调用
| |
| |------ 读取一字节
| |
| |------ sizeofcode
| |
| |------ 暂停其他线程
| |
| |------ 挂起指定线程
| |
| |------ 恢复其他线程
| |
| |------ 有效句柄
| |
| |------ 汇编sizeofcode
| |
| |
======调用的Dll
| |
| |---[dll]------ API_RtlMoveMemory_读取整数
| |
| |---[dll]------ API_RtlMoveMemory_写入整数
| |
| |---[dll]------ API_lstrcpynA_字节集
| |
| |---[dll]------ API_VirtualProtect
| |
| |---[dll]------ API_LoadLibraryA
| |
| |---[dll]------ API_GetProcAddress
| |
| |---[dll]------ API_GetThreadPriority
| |
| |---[dll]------ API_GetCurrentThreadId
| |
| |---[dll]------ API_GetCurrentThread
| |
| |---[dll]------ API_SetThreadPriority
| |
| |---[dll]------ API_GetCurrentProcessId
| |
| |---[dll]------ API_CreateToolhelp32Snapshot
| |
| |---[dll]------ API_Thread32First
| |
| |---[dll]------ API_Thread32Next
| |
| |---[dll]------ API_OpenThread
| |
| |---[dll]------ API_SuspendThread
| |
| |---[dll]------ API_CloseHandle
| |
| |---[dll]------ API_ResumeThread
调用的DLL命令:
.DLL命令 API_RtlMoveMemory_读取整数, 整数型, "kernel32", "RtlMoveMemory", , 写内存整数,最后个参数应该是4,才表示整数,否则只是个字节
.参数 pDestination, 整数型, 传址
.参数 pSource, 整数型
.参数 Length, 整数型, , 1
.DLL命令 API_RtlMoveMemory_写入整数, , "kernel32", "RtlMoveMemory", , 写内存整数,最后个参数应该是4,才表示整数,否则只是个字节
.参数 Destination, 整数型
.参数 Source, 整数型, 传址
.参数 Length, 整数型
.DLL命令 API_lstrcpynA_字节集, 整数型, "Kernel32", "lstrcpynA", , 本api可替代取变量数据地址命令
.参数 lpString1, 字节集, 传址, 这个与下面的类型要同时修改
.参数 lpString2, 字节集, 传址
.参数 iMaxLength, 整数型
.DLL命令 API_VirtualProtect, 整数型, , "VirtualProtect", , 改写内存属性 失败为0
.参数 lpAddress, 整数型
.参数 dwSize, 整数型
.参数 flNewProtect, 整数型
.参数 lpflOldProtect, 整数型, 传址
.DLL命令 API_LoadLibraryA, 整数型, "kernel32", "LoadLibraryA", , 载入库
.参数 File, 文本型
.DLL命令 API_GetProcAddress, 整数型, "kernel32", "GetProcAddress", , 返回函数地址
.参数 hModule, 整数型
.参数 lpProcName, 文本型
.DLL命令 以下是演示中所用的dll声明, , , , , ===========================================================
.DLL命令 API_MessageBoxA, 整数型, , "MessageBoxA"
.参数 NULL, 整数型, , NULL
.参数 text, 文本型, , text
.参数 title, 文本型, , title
.参数 BUTTON, 整数型, , BUTTON
.DLL命令 API_lstrcpynA_文本, 整数型, "Kernel32", "lstrcpynA", , 本api可替代取变量数据地址命令
.参数 lpString1, 文本型, 传址, 这个与下面的类型要同时修改
.参数 lpString2, 文本型, 传址
.参数 iMaxLength, 整数型
.DLL命令 API_OutputDebugStringA, , "Kernel32", "OutputDebugStringA"
.参数 LPCTSTR, 文本型, , __in_opt LPCTSTR lpOutputString
.DLL命令 API_CreateThread, 整数型, "kernel32", "CreateThread", , 不引用C标准函数库,还是很可靠的
.参数 lpThreadAttributes, 整数型
.参数 dwStackSize, 整数型
.参数 lpStartAddress, 整数型
.参数 lpParameter, 整数型
.参数 dwCreationFlags, 整数型
.参数 lpThreadId, 整数型, 传址
.DLL命令 API_wsprintfA, 整数型, "User32", "@wsprintfA", , 因为它的参数是不定的
.参数 输出文本, 文本型
.参数 格式文本, 文本型
.参数 文本1, 文本型
.参数 整数, 整数型
.DLL命令 API_lstrlen, 整数型, , "lstrlenA"
.参数 Ptr, 整数型
.DLL命令 API_lstrcpyn_Text, 整数型, , "lstrcpynA"
.参数 lpString1, 文本型
.参数 lpString2, 整数型
.参数 iMaxLength, 整数型
.DLL命令 API_HeapAlloc, 整数型, , "HeapAlloc"
.参数 hHeap, 整数型
.参数 dwFlags, 整数型
.参数 dwBytes, 整数型
.DLL命令 API_GetProcessHeap, 整数型, , "GetProcessHeap"
调用的DLL命令:
.DLL命令 API_RtlMoveMemory_读取整数, 整数型, "kernel32", "RtlMoveMemory", 公开, 写内存整数,最后个参数应该是4,才表示整数,否则只是个字节
.参数 pDestination, 整数型, 传址
.参数 pSource, 整数型
.参数 Length, 整数型, , 1
.DLL命令 API_RtlMoveMemory_写入整数, , "kernel32", "RtlMoveMemory", 公开, 写内存整数,最后个参数应该是4,才表示整数,否则只是个字节
.参数 Destination, 整数型
.参数 Source, 整数型, 传址
.参数 Length, 整数型
.DLL命令 API_lstrcpynA_字节集, 整数型, "Kernel32", "lstrcpynA", 公开, 本api可替代取变量数据地址命令
.参数 lpString1, 字节集, 传址, 这个与下面的类型要同时修改
.参数 lpString2, 字节集, 传址
.参数 iMaxLength, 整数型
.DLL命令 API_VirtualProtect, 整数型, "kernel32", "VirtualProtect", 公开, 改写内存属性 失败为0
.参数 lpAddress, 整数型
.参数 dwSize, 整数型
.参数 flNewProtect, 整数型
.参数 lpflOldProtect, 整数型, 传址
.DLL命令 API_LoadLibraryA, 整数型, "kernel32", "LoadLibraryA", 公开, 载入库
.参数 File, 文本型
.DLL命令 API_GetProcAddress, 整数型, "kernel32", "GetProcAddress", 公开, 返回函数地址
.参数 hModule, 整数型
.参数 lpProcName, 文本型
.DLL命令 API_GetThreadPriority, 整数型, "kernel32", "GetThreadPriority", 公开, ,
.参数 线程句柄, 整数型, , 线程句柄
.DLL命令 API_GetCurrentThreadId, 整数型, "kernel32", "GetCurrentThreadId", 公开, ,
.DLL命令 API_GetCurrentThread, 整数型, "kernel32", "GetCurrentThread", 公开, , 获取当前线程的一个伪句柄 当前线程的伪句柄
.DLL命令 API_SetThreadPriority, 整数型, "kernel32", "SetThreadPriority", 公开, , 设定线程的优先级别 非零表示成功,零表示失败。会设置GetLastError
.参数 线程句柄, 整数型, , hThread
.参数 优先权, 整数型, , nPriority
.DLL命令 API_GetCurrentProcessId, 整数型, "kernel32", "GetCurrentProcessId", 公开, , 获取当前进程一个唯一的标识符
.DLL命令 API_CreateToolhelp32Snapshot, 整数型, "kernel32", "CreateToolhelp32Snapshot", 公开, , 取进程信息
.参数 标志, 整数型, , lFlags
.参数 进程标识符, 整数型, , lProcessID
.DLL命令 API_Thread32First, 逻辑型, "Kernel32", "Thread32First", 公开
.参数 hSnapshot, 整数型, , A handle to the snapshot returned from a previous call to the CreateToolhelp32Snapshot function
.参数 lpte, THREADENTRY32, 传址, A pointer to a THREADENTRY32 structure
.DLL命令 API_Thread32Next, 逻辑型, "Kernel32", "Thread32Next", 公开
.参数 hSnapShot, 整数型
.参数 lpte, THREADENTRY32, 传址, LPTHREADENTRY32 lpte
.DLL命令 API_OpenThread, 整数型, "Kernel32", "OpenThread", 公开
.参数 dwDesiredAccess, 整数型
.参数 bInheritHandle, 逻辑型
.参数 dwThreadId, 整数型
.DLL命令 API_SuspendThread, 整数型, "Kernel32", "SuspendThread", 公开
.参数 hThread, 整数型, , Long,指定要挂起的一个线程的句柄
.DLL命令 API_CloseHandle, 整数型, "Kernel32", "CloseHandle", 公开
.参数 hObject, 整数型, , HANDLE hObject
.DLL命令 API_ResumeThread, 整数型, "Kernel32", "ResumeThread", 公开, If the function fails, the return value is (DWORD) -1
.参数 hThread, 整数型, , Long,指定要挂起的一个线程的句柄
易语言卷帘工具箱源码,初始化卷帘,取星期,更换风格,搜索文件,线程搜索,修改底色,获取信息,取信息记录,取网络信息...
易语言仅用核心支持库实现对外部数据库的操作ADODB操作外部数据库例程源码,根据村组查询数据,数据库_读取数据到高级表格,数据库_保存高级表格数据到数据库,数据库_读取数据到列表...
易语言仅用核心支持库实现对外部数据库的操作ADODB操作外部数据库例程源码,根据村组查询数据,数据库_读取数据到高级表格,数据库_保存高级表格数据到数据库,数据库_读取数据到列表...
易语言仅用核心支持库实现对外部数据库的操作ADODB操作外部数据库例程源码,根据村组查询数据,数据库_读取数据到高级表格,数据库_保存高级表格数据到数据库,数据库_读取数据到列表...
易语言两个文件内存中通讯源码,子程序1,打开文件,生成空文件,生成重复字节文件,移到文件首,移到文件尾,移动读写位置,取读写位置,关闭文件,取文件长度,写出字节集,是否在文件尾,取错...
易语言易模块管理器Include目录源码,CopyTo_CreateProcessDebugInfo,CopyTo_CreateThreadDebugInfo,CopyTo_ExitThreadDebugInfo,CopyTo_ExitProcessDebugInfo,CopyTo_LoadDllDebugInfo,CopyTo_UnloadDllDebugInfo,CopyTo_ExceptionDebugInfo,Copy...
易语言卷帘工具箱源码,初始化卷帘,取星期,更换风格,搜索文件,线程搜索,修改底色,获取信息,取信息记录,取网络信息...
子程序1,打开文件,生成空文件,生成重复字节文件,移到文件首,移到文件尾,移动读写位置,取读写位置,关闭文件,取文件长度,写出字节集,是否在文件尾,取错误信息,读入字节集,读入2M字节集,清除文件缓冲区,读入文本,写出文本,写文本行,读入一行,插入字节集,取文件号...
初始化卷帘,取星期,更换风格,搜索文件,线程搜索,修改底色,获取信息,取信息记录,取网络信息...