- 注册时间
- 2021-4-16
- 最后登录
- 2024-3-13
- 在线时间
- 4 小时
编程入门
- 龙马币
- 70
|
魔改C++x64超级HOOK源码针对send和recv进行HOOK
调用例子:
- #include "SuperHook.h"
- #include <Windows.h>
- using namespace std;
- void _fastcall MySend(SOCKET s, char* buf, int length, int flags) {
- //参数都是直接可用的,在多线程下可能寄存器的值会被其他线程写入冲突,这里不建议读取寄存器的值
- Register l_reg = g_SuperHook_x64.ReadAllRegister(g_HookDataRecv.ReturnRegisterAddress);
- std::cout << "rax:" << l_reg.rax << std::endl;
- std::cout << "rbx:" << l_reg.rbx << std::endl;
- std::cout << "rdx:" << l_reg.rdx << std::endl;
- std::cout << "rcx:" << l_reg.rcx << std::endl;
- std::cout << "rsi:" << l_reg.rsi << std::endl;
- std::cout << "rdi:" << l_reg.rdi << std::endl;
- std::cout << "rsp:" << l_reg.rsp << std::endl;
- std::cout << "rbp:" << l_reg.rbp << std::endl;
- std::cout << "r8:" << l_reg.r8 << std::endl;
- std::cout << "r9:" << l_reg.r9 << std::endl;
- std::cout << "r10:" << l_reg.r10 << std::endl;
- std::cout << "r11:" << l_reg.r11 << std::endl;
- std::cout << "r12:" << l_reg.r12 << std::endl;
- std::cout << "r13:" << l_reg.r13 << std::endl;
- std::cout << "r14:" << l_reg.r14 << std::endl;
- std::cout << "r15:" << l_reg.r15 << std::endl;
- }
- void _fastcall MyRecv(SOCKET s, char* buf, int length, int flags) {
- //参数都是直接可用的,在多线程下可能寄存器的值会被其他线程写入冲突,这里不建议读取寄存器的值
- Register l_reg = g_SuperHook_x64.ReadAllRegister(g_HookDataRecv.ReturnRegisterAddress);
- std::cout << "rax:" << l_reg.rax << std::endl;
- std::cout << "rbx:" << l_reg.rbx << std::endl;
- std::cout << "rdx:" << l_reg.rdx << std::endl;
- std::cout << "rcx:" << l_reg.rcx << std::endl;
- std::cout << "rsi:" << l_reg.rsi << std::endl;
- std::cout << "rdi:" << l_reg.rdi << std::endl;
- std::cout << "rsp:" << l_reg.rsp << std::endl;
- std::cout << "rbp:" << l_reg.rbp << std::endl;
- std::cout << "r8:" << l_reg.r8 << std::endl;
- std::cout << "r9:" << l_reg.r9 << std::endl;
- std::cout << "r10:" << l_reg.r10 << std::endl;
- std::cout << "r11:" << l_reg.r11 << std::endl;
- std::cout << "r12:" << l_reg.r12 << std::endl;
- std::cout << "r13:" << l_reg.r13 << std::endl;
- std::cout << "r14:" << l_reg.r14 << std::endl;
- std::cout << "r15:" << l_reg.r15 << std::endl;
- }
- SuperHook_x64 g_SuperHook_x64;
- HookData g_HookDataSend;
- HookData g_HookDataRecv;
- void main() {
- g_SuperHook_x64.HookSend(MySend, g_HookDataSend);
- g_SuperHook_x64.HookRecv(MyRecv, g_HookDataRecv);
- while (true) {
- if (getchar() == 0x61) {
- break;
- }
- }
- g_SuperHook_x64.UnInstall();
- }
复制代码
回复下载源码:
|
|