|
|

分享源码
| 界面截图: |
- |
| 是否带模块: |
调用了模块 |
| 备注说明: |
- |
闲来无趣的练手,不小心写的有些屎,大佬们别笑我,因为我已经笑完了,不想改了
分为两部分,接收器(hook主程序.e)和dll核心(dll.e)
接收器负责对指定进程注入DLL并让DLLhook程序调用的API
| 窗口程序集名 | 保 留 | 保 留 | 备 注 | | 程序集 | | | | | 变量名 | 类 型 | 数组 | 备 注 | | dll | 文本型 | | | exe | 文本型 | | | 进程id | 整数型 | |
exe = 取运行目录 () + “\测试被hook程序.exe”dll = 取运行目录 () + “\wxhook.dll”进程id = 进程_创建 (exe, , , )初始化目标进程 (进程id, dll )调试输出 (hook_目标进程API (进程id, “user32.dll”, “MessageBoxA”, 4, 到整数 (&回调 )) )调试输出 (hook_目标进程API (进程id, “kernel32.dll”, “GetCommandLineA”, 0, 到整数 (&回调 )) )
API被断下后会将参数等信息发送给接收器,接收器会调用回调函数,将消息传递给回调函数,修改参数或者拦截都行
| 变量名 | 类 型 | 静态 | 数组 | 备 注 | | 回调信息 | hook回调信息 | | | | p | 整数型 | | | | 结果 | 文本型 | | | | 参数 | 整数型 | | 0 |
回调信息 = 取回调信息 (消息地址 ) 判断 (回调信息.api = “MessageBoxA”) 加入成员 (参数, 0 ) 加入成员 (参数, hook_写新文本 (回调信息.进程句柄, “hook测试”)) 加入成员 (参数, hook_写新文本 (回调信息.进程句柄, “已被hook”)) 加入成员 (参数, 0 ) hook_返回_调用原始API (回调信息, 参数 ) 判断 (回调信息.api = “GetCommandLineA”) hook_返回_字节集 (回调信息, 到字节集 (“被hook了”) + { 0 })   
被HOOK的API执行流程:
API->汇编动态生成的临时函数->hook_api_回调->发送到接收器->通知到回调函数->
自定义处理流程->发送修改或拦截指令到DLL->hook_api_回调处理返回数据
流程看起来比较繁琐,大概就这么个意思
被hook的程序不必非要用进程_创建,只需要进程ID就行
调用了精易模块与我以前写的一个文件读写模块
精易模块论坛有,我就不发了,数据共享_文件版.ec 源码打包在一起
只是练手,所以没深入测试,只是自己能跑了,有bug记得留言。
|
-
-
远程hook.7z
638.25 KB, 下载次数: 53, 下载积分: 精币 -2 枚
售价: 1 枚 精币 [记录]
|