服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 易语言 - 易语言利用HOOK注入获取内容的代码

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

2022-02-21 16:40易语言源码教程 易语言

今天小编就为大家分享一篇关于易语言利用HOOK注入获取内容的代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

DLL命令表

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
.版本 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

常量数据表

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

全局变量表

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

APIHOOK获取信息框内容

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
.版本 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)

启动窗口程序集

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
.版本 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)

运行结果:

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

总结

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

延伸 · 阅读

精彩推荐
  • 易语言易语言关于程序进程和线程的基础知识

    易语言关于程序进程和线程的基础知识

    今天小编就为大家分享一篇关于易语言关于程序进程和线程的基础知识,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    三叶资源网6662022-02-24
  • 易语言易语言生成exe文件的方法

    易语言生成exe文件的方法

    在本篇内容中小编给大家分享的是关于易语言生成exe文件的方法知识点,需要的朋友们参考下。...

    易语言教程网14792022-03-01
  • 易语言一步一步跟我学易语言之第二个易程序菜单设计

    一步一步跟我学易语言之第二个易程序菜单设计

    今天小编就为大家分享一篇关于的一步一步跟我学易语言之第二个易程序菜单设计,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要...

    易语言帮助手册7092021-06-17
  • 易语言易语言在画板中写出指定文本当画板中已满会自动滚屏

    易语言在画板中写出指定文本当画板中已满会自动滚屏

    今天小编就为大家分享一篇关于易语言在画板中写出指定文本当画板中已满会自动滚屏,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,...

    易语言帮助手册9092022-01-12
  • 易语言易语言设置进度条边框样式的方法

    易语言设置进度条边框样式的方法

    今天小编就为大家分享一篇关于易语言设置进度条边框样式的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册4422022-01-20
  • 易语言实例操作易语言载入窗口

    实例操作易语言载入窗口

    在本文中小编给大家整理的是关于易语言载入窗口的教程和步骤内容,需要的可以跟着学习下...

    易语言教程网19162022-03-02
  • 易语言易语言获取指定磁盘的名称

    易语言获取指定磁盘的名称

    今天小编就为大家分享一篇关于易语言获取指定磁盘的名称,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来...

    易语言帮助手册12662022-01-04
  • 易语言一步一步跟我学易语言之关于变量

    一步一步跟我学易语言之关于变量

    今天小编就为大家分享一篇关于一步一步跟我学易语言之关于变量,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册10822021-06-17