易语言利用HOOK注入获取内容的代码

DLL命令表

.版本 2
.DLL命令 RtlMoveMemory, 整数型, "kernel32.dll", "RtlMoveMemory"
 .参数 Destination, 整数型
 .参数 Source, 整数型
 .参数 Length, 整数型
.DLL命令 CreateWindowExA, 整数型
 .参数 dwExStyle, 整数型
 .参数 lpClassName, 文本型
 .参数 lpWindowName, 文本型
 .参数 dwStyle, 整数型
 .参数 x, 整数型
 .参数 y, 整数型
 .参数 nWidth, 整数型
 .参数 nHeight, 整数型
 .参数 hWndParent, 整数型
 .参数 hMenu, 整数型
 .参数 hInstance, 整数型
 .参数 lpParam, 整数型
.DLL命令 VirtualProtect, 逻辑型
 .参数 lpAddress, 整数型
 .参数 dwSize, 整数型
 .参数 flNewProtect, 整数型
 .参数 lpflOldProtect, 整数型, 传址
.DLL命令 SetWindowLongA, 整数型, , "SetWindowLongA"
 .参数 hWnd, 整数型
 .参数 nIndex, 整数型
 .参数 dwNewLong, 整数型
.DLL命令 CallWindowProcA, 整数型, , "CallWindowProcA"
 .参数 lpPrevWndFunc, 整数型
 .参数 hWnd, 整数型
 .参数 Msg, 整数型
 .参数 wParam, 整数型
 .参数 lParam, 整数型
.DLL命令 GetProcAddress, 整数型
 .参数 hModule, 整数型
 .参数 lpProcName, 文本型
.DLL命令 GetModuleHandleA, 整数型
 .参数 lpModuleName, 文本型
.DLL命令 MessageBoxA, 整数型, "user32.dll", "MessageBoxA", 公开, 显示和操作一个消息框。该消息框包含一个应用程序定义的消息和标题,加上预定义的图标和按钮的任意组合。 wLanguageId参数指定为预定义的按钮使用的语言资源集。
 .参数 hwnd, 整数型, , 要创建的消息框的所有者窗口的句柄。如果这个参数为NULL,则消息框没有所有者窗口
 .参数 lpText, 文本型
 .参数 lpCaption, 文本型
 .参数 wtype, 整数型
.DLL命令 SetWindowsHookExA, 整数型, "User32.dll", "SetWindowsHookExA", 公开, HHOOK WINAPI SetWindowsHookEx
 .参数 idHook, , , _In_ int  idHook,
 .参数 lpfn, , , _In_ HOOKPROC lpfn,
 .参数 hMod, , , _In_ HINSTANCE hMod,
 .参数 dwThreadId, , , _In_ DWORD  dwThreadId
.DLL命令 GetCurrentThreadId, 整数型, "kernel32.dll", "GetCurrentThreadId", 公开, 取当前线程ID
.DLL命令 CallNextHookEx, 整数型, "User32.dll", "CallNextHookEx", 公开, LRESULT WINAPI CallNextHookEx
 .参数 hhk, 整数型, , _In_opt_ HHOOK hhk,
 .参数 nCode, 整数型, , _In_  int nCode,
 .参数 wParam, 整数型, , _In_  WPARAM wParam,
 .参数 lParam, 整数型, , _In_  LPARAM lParam
.DLL命令 GetForegroundWindow, 整数型, "User32.dll", "GetForegroundWindow", 公开, HWND WINAPI GetForegroundWindow
.DLL命令 UnhookWindowsHookEx, 逻辑型, "User32.dll", "UnhookWindowsHookEx", 公开, BOOL WINAPI UnhookWindowsHookEx
 .参数 hhk, , , _In_ HHOOK hhk

常量数据表

.版本 2
.常量 GWL_WNDPROC, "-4"
.常量 PAGE_EXECUTE_READWRITE, "64"
.常量 WM_NOTIFY, "78"
.常量 WH_CBT, "5"
.常量 HCBT_ACTIVATE, "5"

全局变量表

.版本 2
.全局变量 APIHook, APIHOOK类

APIHOOK获取信息框内容

.版本 2
.程序集 APIHOOK类
.程序集变量 pFunAddress, 整数型
.程序集变量 OldProtect, 整数型
.程序集变量 NewData, 字节集
.程序集变量 OldData, 字节集
.程序集变量 HookInfo, 文本型
.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用
.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用
.子程序 InstallApiHook, 逻辑型, 公开
.参数 lpLibFileName, 文本型
.参数 lpProcName, 文本型
.参数 lpfn, 整数型
pFunAddress = GetProcAddress (GetModuleHandleA (lpLibFileName), lpProcName) ' 获取API函数地址
.如果真 (pFunAddress = 0)
 返回 (假)
.如果真结束
VirtualProtect (pFunAddress, 8, #PAGE_EXECUTE_READWRITE, OldProtect) ' 把内存块设置为可读写
NewData = { 184 } + 到字节集 (lpfn) + { 255, 224 } ' 生成新机器码数据
OldData = 指针到字节集 (pFunAddress, 8) ' 保存旧机器码数据
HookInfo = lpLibFileName + “|” + lpProcName
返回 (真)
.子程序 BeginHook, , 公开
.如果真 (pFunAddress ≠ 0)
 写到内存 (NewData, pFunAddress, 8)
.如果真结束
.子程序 StopHook, , 公开
.如果真 (pFunAddress ≠ 0)
 写到内存 (OldData, pFunAddress, 8)
.如果真结束
.子程序 UninstallApiHook, , 公开
.局部变量 temp, 整数型
.如果真 (pFunAddress ≠ 0)
 写到内存 (OldData, pFunAddress, 8)
 VirtualProtect (pFunAddress, 8, OldProtect, temp)
.如果真结束
连续赋值 (0, pFunAddress, OldProtect)
连续赋值 ({ }, NewData, OldData)
连续赋值 (“”, HookInfo)
.子程序 GetApiHookInfo, 文本型, 公开
返回 (HookInfo)

启动窗口程序集

.版本 2
.程序集 窗口程序集_启动窗口
.程序集变量 hhk, 整数型
.子程序 __启动窗口_创建完毕
APIHook.InstallApiHook (“user32.dll”, “MessageBoxA”, 到数值 (&MyMessageBox)) ' 安装APIHOOK
APIHook.BeginHook ()
信息框 (“你好”, 0, )
信息框 (“你好”, 0, )
结束 ()
.子程序 __启动窗口_将被销毁
APIHook.UninstallApiHook ()
.子程序 Proc, 整数型
.参数 nCode, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
.判断开始 (nCode = #HCBT_ACTIVATE)
 输出调试文本 (“信息框的句柄:” + 到文本 (wParam))
 UnhookWindowsHookEx (hhk)
.默认
.判断结束
CallNextHookEx (hhk, nCode, wParam, lParam)
返回 (0)
.子程序 MyMessageBox, 整数型
.参数 hwnd, 整数型
.参数 lpText, 文本型
.参数 lpCaption, 文本型
.参数 wtype, 整数型
.局部变量 ret, 整数型
输出调试文本 (“=============”)
输出调试文本 (hwnd, lpText, lpCaption, wtype)
输出调试文本 (“=============”)
APIHook.StopHook ()
hhk = SetWindowsHookExA (#WH_CBT, 到整数 (&Proc), 0, GetCurrentThreadId ())
ret = MessageBoxA (hwnd, lpText, lpCaption, wtype)
APIHook.BeginHook ()
返回 (ret)

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 易语言实现自动发送QQ信息的代码

    全局变量表 .版本 2 .全局变量 局_句柄, 整数型 .全局变量 b, 整数型 QQ自动发送信息 此功能需要加载精易模块5.6 .版本 2 .支持库 spec .支持库 eAPI .程序集 窗口程序集_启动窗口 .程序集变量 逻辑, 逻辑型 .子程序 _暂停按钮_被单击 时钟1.时钟周期 = 0 .子程序 _好友按钮_被单击 逻辑 = 假 时钟1.时钟周期 = 1500 .子程序 功能_取句柄, 整数型 .参数 名称, 文本型 局_句柄 = 窗口_取句柄 (, , "TXGuiFoundati

  • 易语言制作王校长吃热狗游戏的源码

    王校长吃热狗游戏 .版本 2 .支持库 iext2 .支持库 OPenGL .支持库 spec .支持库 EThread .程序集 窗口程序集_启动窗口 .程序集变量 人物标识, 整数型 .程序集变量 热狗标识, 整数型, , "0" .程序集变量 死亡, 逻辑型 .程序集变量 得分, 整数型 .子程序 _开始按钮_被单击 动画物体2.图片 = #人物 人物标识 = 动画框1.创建物体 (动画物体2, 取鼠标水平位置 () - _启动窗口.左边 - 25, 取鼠标垂直位置 () - _

  • 易语言制作二维码生成器

    DLL命令表 .版本 2 .DLL命令 二维码_外形设置, , "QRCodeWin32.dll", "QRAppearance" .参数 模块尺寸, 双精度小数型 .参数 方向, 整数型 .参数 边框, 整数型 .DLL命令 二维码_编码参数, , "QRCodeWin32.dll", "QRConfigure" .参数 版本, 整数型 .参数 纠错级别, 整数型 .参数 掩膜, 整数型 .DLL命令 二维码_默认设置, ,

  • 易语言获取程序已运行时间的代码

    获取程序已运行时间 .版本 2 .支持库 iext .程序集 窗口程序集1 .子程序 _时钟1_周期事件 .局部变量 hr, 整数型, 静态 .局部变量 min, 整数型, 静态 .局部变量 sec, 整数型, 静态 sec = sec + 1 .如果真 (sec = 60) sec = 0 min = min + 1 .如果真结束 .如果真 (min = 60) min = 0 hr = hr + 1 .如果真结束 状态条1.置文本 (0, "已运行:" + 取文本右边 ("

  • 易语言超级编辑框中寻找指定文本并选中的示例

    超级编辑框中寻找指定文本并选中 .版本 2 .支持库 iext2 .程序集 窗口程序集1 .子程序 __启动窗口_创建完毕 .子程序 取字符数, 整数型 .参数 文本, 文本型 .局部变量 长度, 整数型 .局部变量 个数, 整数型 .局部变量 字符位置, 整数型 长度 = 取文本长度 (文本) 个数 = 长度 字符位置 = 1 .判断循环首 (字符位置 < 长度) .如果 (取代码 (取文本中间 (文本, 字符位置, 1), ) < 0 或 取代码 (取文本中间 (文本, 字符位置, 1),

  • 易语言制作网截抓包工具的代码

    常量数据表 .版本 2 .常量 编码常量, "<文本长度: 10797>", , 名称:编码_GB2312 英文名称:Encoding_GB2312 类型:文本型 值:"GB2312" 列举各种编码类型 全局变量表 .版本 2 .全局变量 系统配置路径, 文本型 网截抓包工具 .版本 2 .支持库 eNetIntercept .支持库 eGrid .支持库 iconv .支持库 iext .支持库 iext2 .程序集 主程序集 .程序集变量 服务安装,

  • 易语言获取已登录的QQ号码以及名称的方法

    取登陆QQ号以及名称的代码 此功能需要加载精易模块5.6 .版本 2 .程序集 窗口程序集_启动窗口 .程序集变量 网页填表, 普通填表 .子程序 _读取按钮_被单击 .局部变量 数量, 文本型 .局部变量 i, 整数型 .局部变量 QQ, 文本型 .局部变量 名称, 文本型 显示选择列表框.清空 () 网页填表.初始化 (超文本浏览框1.取窗口句柄 ()) 数量 = 到文本 (网页填表.ULLI_取数量 ()) .计次循环首 (到整数 (数量), i) QQ = 到文本 (文本_取出中间文本

  • 易语言高精度完美延时的源码

    DLL命令表 .版本 2 .DLL命令 QueryPerformanceCounter, 整数型, "kernel32", "QueryPerformanceCounter", , 获取计数值 .参数 lpPerformanceCount, LARGE_INTEGER .DLL命令 QueryPerformanceFrequency, 整数型, "kernel32", "QueryPerformanceFrequency",

  • 易语言实现文件夹加密的代码

    加密锁上文件夹 此功能需要加载精易模块5.6 .版本 2 .支持库 shell .支持库 spec .支持库 dp1 .程序集 窗口程序集1 .程序集变量 密码, 文本型 .子程序 _按钮_浏览文件_被单击 编辑框_路径.内容 = 浏览文件夹 ("打开你需要加密的文件", ) .子程序 _按钮_加密_被单击 .局部变量 文件夹名称, 文本型 .判断开始 (寻找文本 (编辑框_路径.内容, "[已加密]", , 假) ≠ -1) 提示框 ("已加密"

  • 易语言修改软件版权信息的工具

    DLL命令表 .版本 2 .DLL命令 BeginUpdateResource, 整数型, , "BeginUpdateResourceA" .参数 pFileName, 文本型 .参数 bDeleteExistingResources, 逻辑型 .DLL命令 EndUpdateResource, 逻辑型, , "EndUpdateResourceA" .参数 hUpdate, 整数型 .参数 fDiscard, 逻辑型 .DLL命令 UpdateResource,

随机推荐