hookdll源码
系统结构:Hook,new_ChangeDisplaySettingsA,HOOKAPI,ReadApi,api_CallNextHookEx,取程序或DLL句柄,取DLL函数地址,返回虚拟信息,修改虚拟保护,写内存字节,取当前进程伪句柄,api_ExitWindowsEx,错误提示管理_,开始窗口化_,调整屏幕分辨率,获取屏幕分辨率,停止,安装全局钩子,停止钩子_,刷新进程信息,修改API首地址,还原API,GetWindowLongA,SetWindowLongA,SetWindowPos,ShowWindow,GetForegroundWindow,ChangeDisplaySettings,EnumDisplaySettings,取程序或DLL句柄,取DLL函数地址,取当前进程伪句柄,载入动态链接库_,取DLL函数地址_,设置系统钩子,关闭全局钩子,释放动态链接库_,创建进程快照,开始进程快照,继续进程快照,修改虚拟保护,返回虚拟信息,写内存字节,API_GetWindowThreadProcessId,API_寻找顶级窗口,
======程序集1
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |------ Hook
| |
| |------ new_ChangeDisplaySettingsA
| |
| |------ HOOKAPI
| |
| |------ ReadApi
| |
| |
======调用的Dll
| |
| |---[dll]------ api_CallNextHookEx
| |
| |---[dll]------ 取程序或DLL句柄
| |
| |---[dll]------ 取DLL函数地址
| |
| |---[dll]------ 返回虚拟信息
| |
| |---[dll]------ 修改虚拟保护
| |
| |---[dll]------ 写内存字节
| |
| |---[dll]------ 取当前进程伪句柄
| |
| |---[dll]------ api_ExitWindowsEx
======主窗口程序集
| |
| |------ _启动子程序
| |
| |------ _窗口_主窗口_创建完毕
| |
| |------ 错误提示管理_
| |
| |------ 开始窗口化_
| |
| |------ 调整屏幕分辨率
| |
| |------ 获取屏幕分辨率
| |
| |------ 停止
| |
| |------ 安装全局钩子
| |
| |------ _窗口_主窗口_可否被关闭
| |
| |------ 停止钩子_
| |
| |
======接口程序集
| |
| |------ 刷新进程信息
| |
| |------ 修改API首地址
| |
| |------ 还原API
| |
| |
======调用的Dll
| |
| |---[dll]------ GetWindowLongA
| |
| |---[dll]------ SetWindowLongA
| |
| |---[dll]------ SetWindowPos
| |
| |---[dll]------ ShowWindow
| |
| |---[dll]------ GetForegroundWindow
| |
| |---[dll]------ ChangeDisplaySettings
| |
| |---[dll]------ EnumDisplaySettings
| |
| |---[dll]------ 取程序或DLL句柄
| |
| |---[dll]------ 取DLL函数地址
| |
| |---[dll]------ 取当前进程伪句柄
| |
| |---[dll]------ 载入动态链接库_
| |
| |---[dll]------ 取DLL函数地址_
| |
| |---[dll]------ 设置系统钩子
| |
| |---[dll]------ 关闭全局钩子
| |
| |---[dll]------ 释放动态链接库_
| |
| |---[dll]------ 创建进程快照
| |
| |---[dll]------ 开始进程快照
| |
| |---[dll]------ 继续进程快照
| |
| |---[dll]------ 修改虚拟保护
| |
| |---[dll]------ 返回虚拟信息
| |
| |---[dll]------ 写内存字节
| |
| |---[dll]------ API_GetWindowThreadProcessId
| |
| |---[dll]------ API_寻找顶级窗口
调用的DLL命令:
.DLL命令 api_CallNextHookEx, 整数型, , "CallNextHookEx"
.参数 hhook, 整数型
.参数 nCode, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.DLL命令 取程序或DLL句柄, 整数型, "kernel32", "GetModuleHandleA", , 获取一个应用程序或动态链接库的模块句柄 如执行成功成功,则返回模块句柄。零表示失败。会设置GetLastError
.参数 模块名, 文本型, , 指定模块名,这通常是与模块的文件名相同的一个名字。例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD;
.DLL命令 取DLL函数地址, 整数型, "kernel32", "GetProcAddress", , 返回函数地址 成功返回DLL库模块内函数地址
.参数 DLL句柄, 整数型, , DLL库模块的句柄,可以调用 LoadLibrary 函数返回。
.参数 DLL库模块内函数名, 文本型, , DLL库模块内函数名
.DLL命令 返回虚拟信息, 整数型, "kernel32", "VirtualQueryEx"
.参数 hProcess, 整数型, , 对象的进程句柄,可以使用函数 OpenProcess() 返回。
.参数 lpAddress, 整数型, , 对象指针地址
.参数 lpBuffer, 虚拟信息, , 返回的虚拟信息
.参数 dwLength, 整数型, , 信息长度,已知 28
.DLL命令 修改虚拟保护, 逻辑型, "kernel32", "VirtualProtectEx"
.参数 hProcess, 整数型, , 对象的进程句柄,可以使用函数 OpenProcess() 返回。
.参数 lpAddress, 整数型, , 虚拟信息.BaseAddress
.参数 dwSize, 整数型, , 虚拟信息.RegionSize
.参数 flNewProtect, 整数型, , 修改类型,#PAGE_EXECUTE_READWRITE 64为可读写模式
.参数 lpflOldProtect, 整数型, 传址, 虚拟信息.Protect
.DLL命令 写内存字节, 逻辑型, "kernel32", "WriteProcessMemory", , 在指定进程中写内存
.参数 hProcess, 整数型, , 对象的进程句柄,可以使用函数 OpenProcess() 返回。
.参数 起始写入地址, 整数型, , 起始写入地址
.参数 要写入的内容, 字节集, , 本参数的类型也能是“字节”型。
.参数 写入长度, 整数型, , 写入的数据长度。
.参数 实际写入长度, 整数型, , 实际写入的数据长度,为0则忽略。
.DLL命令 取当前进程伪句柄, 整数型, "kernel32", "GetCurrentProcess"
.DLL命令 api_ExitWindowsEx, 整数型, "user32.dll", "ExitWindowsEx", , 退出windows,并用特定的选项重新启动
.参数 标志, 整数型, , 0.注销; 1.关机; 2.重启; 3.待机
.参数 保留值, 整数型, , dwReserved,保留,设为零
调用的DLL命令:
.DLL命令 GetWindowLongA, 整数型, "user32", "GetWindowLongA", , 取窗口特征_,函数功能:该函数获得有关指定窗口的信息,函数也获得在额外窗口内存中指定偏移位地址的32位度整型值。从指定窗口的结构中取得信息 由nIndex决定.零表示出错
.参数 窗口句柄, 整数型, , 欲为其获取信息的窗口的句柄窗口句柄及间接给出的窗口所属的窗口类。
.参数 属性, 整数型, , 欲取回的信息可以是下述任何一个常数:;GWL_EXSTYLE:扩展窗口样式;GWL_STYLE:窗口样式;GWL_WNDPROC:该窗口的窗口函数的地址;GWL_HINSTANCE:拥有窗口的实例的句柄;GWL_HWNDPARENT:该窗口之父的句柄.不要用SetWindowWord来改变这个值;GWL_ID:对话框中一个子窗口的标识符;GWL_USERDATA:含义由应用程序规定;DWL_DLGPROC:这个窗口的对话框函数地址;DWL_MSGRESULT:在对话框函数中处理的一条消息返回的值;DWL_USER:含义由应用程序规定;nlndex:指定要获得值的大于等于0的值的偏移量。有效值的范围从0到额外窗口内存空间的字节数一4例如,若指定了12位或多于12位的额外类存储空间,则应设为第三个32位整数的索引位8。要获得任意其他值,指定下列值之一: GWL_EXSTYLE;获得扩展窗日风格。
.DLL命令 SetWindowLongA, 整数型, "user32", "SetWindowLongA", , 置窗口特征_,函数功能:该函数改变指定窗口的属性。函数也将在指定偏移地址的一个32位值存入窗口的额外窗口存。在窗口结构中为指定的窗口设置信息指定数据的前一个值—— 返回值:如果函数成功,返回值为给定的32位整数的原来的值。如果函数失败,返回值为0。若想获得更多错误信息,请调用GetLastError函数。备注:如果由hWnd参数指定的窗口与调用线程不属于同一进程,将导致SetWindowLong函数失败。 指定的窗口数据是在缓存中保存的,因此在调用SetWindowLong之后再调用SetWindowPos函数才O SetWindowLong函数所作的改变生效。 如果使用带GWL_WNDPROC索引值的SetWindowLong函数替换窗口过程,则该窗日过程必须WindowProc回调函数说明部分指定的指导行一致。如果使用带DWL_MSGRESULT索引值的SetWlndowLong函数来设置由一个对话框处理的消息的和值,应在此后立即返回TRUE。否则,如果又调用了其他函数而使对话框过程接收到一个窗口消息,套的窗口可能消息可能改写使用DWL_MSGRESULT设定的返回值。 可以使用带GWL_WNDPROC索引值的SetWindowLohg函数创建一个窗口类的子类,该窗口类是用于创建该窗口的类。一个应用程序可以一个系统类为子类,但是不能以一个其他进程产生的窗口类为于类。SetWindowLong函数通过改变与一个特殊的窗口类相联系的窗口过程来创建窗口子类。从而使系统调用新的窗口过程而不是以前定义的窗口过程。应用程序必须通过调用CallWindowProc函数向前窗口传递未被新窗口处理的消息。允许应用程序创建一个窗口过程链。可以通过对RegisterClassEx函数中使用的WNDCLASSEX结构的chWndExtra单元指定一个非零值来保留额外窗口内存。不能通过调用带GWL_HWNDPARENT索引值的SetWindowLong的函数来改变子窗口的父窗口。应使用SetParent函数。WindowsCE:nlndex参数必须是4个字节的倍数;不支持Unaligned access。
.参数 窗口句柄, 整数型, , hwnd欲为其取得信息的窗口的句柄窗口句柄,及间接声明的该窗口所属的类。
.参数 窗口信息值, 整数型, , nIndex给出了要设置的值的零起点的偏移地址。有效值为从0到额外窗口存储空间的字节数一4。例如
.参数 窗口信息新值, 整数型, , dwNewLong由nIndex指定的窗口信息的新值
.DLL命令 SetWindowPos, 整数型, "user32.dll", "SetWindowPos", , 设置窗口位置_,函数功能:该函数改变一个子窗口,弹出式窗口式顶层窗口的尺寸,位置和Z序。子窗口,弹出式窗口,及顶层窗口根据它们在屏幕上出现的顺序排序、顶层窗口设置的级别最高,并且被设置为Z序的第一个窗口。这个函数能为窗口指定一个新位置和状态.它也可改变窗口在内部窗口列表中的位置.该函数与DeferWindowPos函数相似只是它的作用是立即表现出来的(在vb里使用:针对vb窗体如它们在win32下屏蔽或最小化则需重设最顶部状态.如有必要请用一个子类处理模块来重设最顶部状态——返回值:如果函数成功,返回值为非零;如果函数失败,返回值为零。若想获得更多错误消息,请调用GetLastError函数。 备注:如果设置了SWP_SHOWWINDOW和SWP_HIDEWINDOW标志,则窗口不能被移动和改变大小。如果使用SetWindowLoog改变了窗口的某些数据,则必须调用函数SetWindowPos来作真正的改变。使用下列的组合标志:SWP_NOMOVEISWP_NOSIZEISWP_FRAMECHANGED。 有两种方法将窗口设为最顶层窗口:一种是将参数hWndlnsertAfter设置为HWND_TOPMOST并确保没有设置SWP_NOZORDER标志;另一种是设置窗口在Z序中的位置以使其在其他存在的窗口之上.当一个窗口被置为最顶层窗口时属于它的所有窗口均为最顶层窗口而它的所有者的z序并不改变.如果HWND_TOPMOST和HWND_NOTOPMOST标志均未指定,即应用程序要求窗口在激活的同时改变其在Z序中的位置时,在参数hWndinsertAfter中指定的值只有在下列条件中才使用:
.参数 窗口句柄, 整数型, , Long欲定位的窗口
.参数 定位类型, 整数型, , hWndInsertAfter Long窗口句柄.在窗口列表中窗口hwnd会置于这个窗口句柄的后面.也可能选用下述值之一:
.参数 窗口新横坐标, 整数型, , Long窗口新的x坐标.如hwnd是一个子窗口则x用父窗口的客户区坐标表示
.参数 窗口新纵坐标, 整数型, , Long窗口新的y坐标.如hwnd是一个子窗口则y用父窗口的客户区坐标表示
.参数 窗口新宽度, 整数型, , Long指定新的窗口宽度
.参数 窗口新高度, 整数型, , Long指定新的窗口高度
.参数 显示方式, 整数型, , wFlags 窗口尺寸和定位的标志。该参数可以是下列值的组合:
.DLL命令 ShowWindow, 整数型, "user32", "ShowWindow", , 置窗口状态_,控制窗口的可见性(在vb里使用:针对vb窗体及控件请使用对应的vb属性) 如窗口之前是可见的则返回TRUE(非零)否则返回FALSE(零)请用下述常数
.参数 窗口句柄, 整数型, , 窗口句柄要向这个窗口应用由nCmdShow指定的命令
.参数 窗口状态, 整数型, , 为窗口指定可视性方面的一个命令.请用下述任何一个常数;0隐藏窗口活动状态给令一个窗口;1与9相同;2最小化窗口并将其激活;3最大化窗口并将其激活;4用最近的大小和位置显示一个窗口同时不改变活动窗口;5用当前的大小和位置显示一个窗口同时令其进入活动状态;6最小化窗口活动状态给令一个窗口;7最小化一个窗口同时不改变活动窗口;8用当前的大小和位置显示一个窗口不改变活动窗口;9用原来的大小和位置显示一个窗口同时令其进入活动状态;nCmdShow Long为窗口指定可视性方面的一个命令.
.DLL命令 GetForegroundWindow, 整数型, "user32", "GetForegroundWindow", , 取前台窗口句柄_,函数功能:该函数返回前台窗口(用户当前工作的窗口)。系统分配给产生前台窗口的线程一个稍高一点的优先级。 获得前台窗口的句柄.这里的“前台窗口”是指前台应用程序的活动窗口windows nt支持多个桌面它们相互间是独立的.每个桌面都有自己的前台窗口
.DLL命令 ChangeDisplaySettings, 整数型, , "ChangeDisplaySettingsA"
.参数 lpDevMode, 短整数型, 传址
.参数 dwFlags, 整数型
.DLL命令 EnumDisplaySettings, 整数型, , "EnumDisplaySettingsA"
.参数 lpszDeviceName, 整数型
.参数 iModeNum, 整数型
.参数 lpDevMode, 短整数型, 传址
.DLL命令 取程序或DLL句柄, 整数型, "kernel32", "GetModuleHandleA", , 获取一个应用程序或动态链接库的模块句柄 如执行成功成功,则返回模块句柄。零表示失败。会设置GetLastError
.参数 模块名, 文本型, , 指定模块名,这通常是与模块的文件名相同的一个名字。例如,NOTEPAD.EXE程序的模块文件名就叫作NOTEPAD;
.DLL命令 取DLL函数地址, 整数型, "kernel32", "GetProcAddress", , 返回函数地址 成功返回DLL库模块内函数地址
.参数 DLL句柄, 整数型, , DLL库模块的句柄,可以调用 LoadLibrary 函数返回。
.参数 DLL库模块内函数名, 文本型, , DLL库模块内函数名
.DLL命令 取当前进程伪句柄, 整数型, "kernel32", "GetCurrentProcess"
.DLL命令 载入动态链接库_, 整数型, , "LoadLibraryA"
.参数 lpFileName, 文本型
.DLL命令 取DLL函数地址_, 子程序指针, , "GetProcAddress"
.参数 hMod, 整数型
.参数 lpFileName, 文本型
.DLL命令 设置系统钩子, 整数型, , "SetWindowsHookExA"
.参数 idHook, 整数型
.参数 lpfn, 子程序指针
.参数 nMod, 整数型
.参数 dwThreadID, 整数型
.DLL命令 关闭全局钩子, 逻辑型, , "UnhookWindowsHookEx"
.参数 hhook, 整数型
.DLL命令 释放动态链接库_, 整数型, "kernel32.dll", "FreeLibrary"
.参数 库句柄, 整数型, , hLibModule,要释放的一个库句柄
.DLL命令 创建进程快照, 整数型, , "CreateToolhelp32Snapshot"
.参数 快照类型, 整数型
.参数 进程标识, 整数型
.DLL命令 开始进程快照, 整数型, , "Process32First"
.参数 快照句柄, 整数型
.参数 线程信息输出变量, 进程信息输出
.DLL命令 继续进程快照, 整数型, , "Process32Next"
.参数 快照句柄, 整数型
.参数 线程信息输出变量, 进程信息输出
.DLL命令 修改虚拟保护, 逻辑型, "kernel32", "VirtualProtectEx"
.参数 hProcess, 整数型, , 对象的进程句柄,可以使用函数 OpenProcess() 返回。
.参数 lpAddress, 整数型, , 虚拟信息.BaseAddress
.参数 dwSize, 整数型, , 虚拟信息.RegionSize
.参数 flNewProtect, 整数型, , 修改类型,#PAGE_EXECUTE_READWRITE 64为可读写模式
.参数 lpflOldProtect, 整数型, 传址, 虚拟信息.Protect
.DLL命令 返回虚拟信息, 整数型, "kernel32", "VirtualQueryEx"
.参数 hProcess, 整数型, , 对象的进程句柄,可以使用函数 OpenProcess() 返回。
.参数 lpAddress, 整数型, , 对象指针地址
.参数 lpBuffer, 虚拟信息, , 返回的虚拟信息
.参数 dwLength, 整数型, , 信息长度,已知 28
.DLL命令 写内存字节, 逻辑型, "kernel32", "WriteProcessMemory", , 在指定进程中写内存
.参数 hProcess, 整数型, , 对象的进程句柄,可以使用函数 OpenProcess() 返回。
.参数 起始写入地址, 整数型, , 起始写入地址
.参数 要写入的内容, 字节集, , 本参数的类型也能是“字节”型。
.参数 写入长度, 整数型, , 写入的数据长度。
.参数 实际写入长度, 整数型, , 实际写入的数据长度,为0则忽略。
.DLL命令 API_GetWindowThreadProcessId, 整数型, "user32", "GetWindowThreadProcessId", , ; 获取与指定窗口关联在一起的一个进程和线程标识符 拥有窗口的线程的标识符
.参数 hwnd, 整数型, , 指定一个变量,用于装载拥有那个窗口的一个进程的标识符
.参数 lpdwProcessId, 整数型, 传址, 指定窗口句柄;
.DLL命令 API_寻找顶级窗口, 整数型, "user32", "FindWindowA", , 寻找窗口列表中第一个符合指定条件的顶级窗口(在vb里使用:FindWindow最常见的一个用途是获得ThunderRTMain类的隐藏窗口的句柄;该类是所有运行中vb执行程序的一部分。获得句柄后,可用api函数GetWindowText取得这个窗口的名称;该名也是应用程序的标题) 找到窗口的句柄。如未找到相符窗口,则返回零。会设置GetLastError
.参数 窗口类名, 文本型, , 指向包含了窗口类名的空中止(C语言)字串的指针;或设为零,表示接收任何类
.参数 窗口文本, 文本型, , 指向包含了窗口文本(或标签)的空中止(C语言)字串的指针;或设为零,表示接收任何窗口标题 示例Dim hw&, cnt&Dim rttitle As * 256hw& = FindWindow("ThunderRT5Main", vbNullString) ' ThunderRTMain under VB4cnt = GetWindowText(hw&, rttitle, 255)MsgBox Left, 0, "RTMain title";
易语言简单的程序防爆暗桩功能源码,错误提示管理_,FF25_,子程序1,子程序2,CallWindowProcA,lstrcpyn...
易语言简单游戏资源打包例程写游戏体会源码,绘制网格页面,检测键盘控制,绘制预备页面,取运行时间_...
易语言私服登录器制作例程之游戏商城源码,初始化,管理商城,管理元宝,管理充值卡,子程序_刷新列表,子程序_刷新充值卡列表...
易语言破天一剑登录器支持多区商城充值卡账号管理源码,取MD5,API_CryptAcquireContext,API_CryptCreateHash,API_CryptReleaseContext,API_CryptHashData,API_CryptDestroyHash,API_CryptGetHashParam,DLL命令1,子程序_创建快捷...
易语言根据兲訫ve的修改的暗桩处理源码,错误提示管理_,FF25_,子程序1,子程序2,验证注册码,CallWindowProcA,lstrcpyn...
易语言树型框配合数据库例程源码,子程序_初始支出,子程序_读入支出,子程序_日常管理表头,子程序_树形框_首级菜单,子程序_是否有子项,子程序_列出当月支出,子程序_列出支出,子程序...
易语言图片浮雕效果字形窗口源码,输出字形窗口,启动路径分支_,设置背景模式_,文本绘图_,结束路径分支_,PathToRegion,设置窗口区域_,选入设备场景_,用指定属性创建逻辑字体_,删除对象_,取...
易语言点点通讯录源码,刷新,显示,清空资料,得到焦点,失去焦点,改变背景色,读出资料...
易语言api截图位图源码,创建内存场景_,创建GDI对象_,取位图二进制位_,置位图到设备场景_,选入设备场景_,删除设备场景_,删除对象_,复制场景位图_,取设备场景_...