求助100铜关于注入DLL然后子类化的问题发源码求助
功能说明:该程序主要功能是实现对窗口的子类化(Subclass)管理,通过易语言的API调用和自定义类来实现对窗口消息的拦截与处理。程序的核心在于使用`C_Win_SubClass2`类,提供了安装、卸载、获取窗口子类以及回调处理等功能。
程序中定义了多个子程序,如`Install`用于安装窗口子类,`UnInstall`用于卸载子类,`GetSubclass`用于获取当前子类信息,`CallBackEvent`用于调用默认的子类处理函数。主程序通过`_窗口1_创建完毕`事件加载窗口,并调用`Install`方法将窗口与子类过程绑定。
在`SUBCLASSPROC`子程序中,根据不同的消息类型(如右键点击、左键点击、窗口大小改变、关闭等),进行相应的调试输出,展示了如何在子类过程中处理窗口消息。同时,在窗口关闭时弹出确认对话框,判断用户是否退出。
整个程序基于Windows API中的`SetWindowSubclass`、`RemoveWindowSubclass`、`GetWindowSubclass`等函数实现,主要用于对窗口行为进行扩展或修改,适用于需要对特定窗口进行消息拦截和自定义处理的场景。程序结构清晰,功能明确,是一个典型的窗口子类化管理工具。
======程序集1
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |------ start
| |
| |
======C_Win_SubClass2
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ Install
| |
| |------ UnInstall
| |
| |------ GetSubclass
| |
| |------ CallBackEvent
| |
| |
======窗口程序集1
| |
| |------ _窗口1_创建完毕
| |
| |------ SUBCLASSPROC
| |
| |------ _窗口1_将被销毁
| |
| |
======调用的Dll
| |
| |---[dll]------ SetWindowSubclass
| |
| |---[dll]------ GetWindowSubclass
| |
| |---[dll]------ DefSubclassProc
| |
| |---[dll]------ RemoveWindowSubclass
======程序集1
| |
| |------ _启动子程序
| |
| |------ _临时子程序
| |
| |------ estar
| |
| |------ 子类化
| |
| |------ SUBCLASSPROC
| |
| |------ 进程名取窗口句柄
| |
| |------ EnumThreadWndProc
| |
| |
======窗口程序集1
| |
| |------ _按钮1_被单击
| |
| |------ _窗口1_创建完毕
| |
| |------ _窗口1_将被销毁
| |
| |
======C_Win_SubClass2
| |
| |------ _初始化
| |
| |------ _销毁
| |
| |------ Install
| |
| |------ UnInstall
| |
| |------ GetSubclass
| |
| |------ CallBackEvent
| |
| |
======调用的Dll
| |
| |---[dll]------ SetWindowSubclass
| |
| |---[dll]------ GetWindowSubclass
| |
| |---[dll]------ DefSubclassProc
| |
| |---[dll]------ RemoveWindowSubclass
| |
| |---[dll]------ 取父窗口_
| |
| |---[dll]------ 取屏幕句柄_
| |
| |---[dll]------ 取得窗口_
| |
| |---[dll]------ 寻找顶级窗口_
| |
| |---[dll]------ CreateToolhelp32Snapshot
| |
| |---[dll]------ CloseHandle
| |
| |---[dll]------ Process32First
| |
| |---[dll]------ Process32Next
| |
| |---[dll]------ Thread32First
| |
| |---[dll]------ Thread32Next
| |
| |---[dll]------ OpenThread
| |
| |---[dll]------ EnumThreadWindows
| |
| |---[dll]------ GetParent
| |
| |---[dll]------ GetCurrentProcessId
======窗口程序集1
| |
| |------ _按钮1_被单击
| |
| |
======程序集1
| |
| |------ push_常数
| |
| |------ _取代码
| |
| |------ call_eax
| |
| |------ push_eax
| |
| |------ mov_eax_常数
| |
| |------ ret
| |
| |------ 置代码
| |
| |------ 取文本型变量指针
| |
| |------ 取字节集型变量指针
| |
| |
======程序集2
| |
| |------ 注入DLL
| |
| |
======调用的Dll
| |
| |---[dll]------ GetCurrentProcessId
| |
| |---[dll]------ GetProcAddress
| |
| |---[dll]------ GetModuleHandle
| |
| |---[dll]------ OpenProcess
| |
| |---[dll]------ WriteProcessMemory
| |
| |---[dll]------ VirtualAllocEx
| |
| |---[dll]------ CreateRemoteThread
| |
| |---[dll]------ CloseHandle
| |
| |---[dll]------ CallWindowProcA
| |
| |---[dll]------ CallWindowProcA1
| |
| |---[dll]------ VirtualProtectEx
======窗口程序集1
| |
| |------ __启动窗口_创建完毕
| |
| |
======调用的Dll
| |
| |---[dll]------ start
注:本站源码主要来源于网络收集。如有侵犯您的利益,请联系我们,我们将及时删除!
部分源码可能含有危险代码,(如关机、格式化磁盘等),请看清代码在运行。
由此产生的一切后果本站均不负责。源码仅用于学习使用,如需运用到商业场景请咨询原作者。
使用本站源码开发的产品均与本站无任何关系,请大家遵守国家相关法律。