开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3654|回复: 19
打印 上一主题 下一主题
收起左侧

[易源码分享] Inline_HOOK—注释详细

[复制链接]
结帖率:100% (2/2)
跳转到指定楼层
楼主
发表于 2022-4-27 23:15:41 | 只看该作者 回帖奖励 |正序浏览 |阅读模式   湖南省长沙市
分享源码
界面截图: -
是否带模块: 纯源码
备注说明: -
18年玩wxhook的时候找的  放在硬盘也是烂了  注释算详细了吧~~~

  
窗口程序集名保 留  保 留备 注
Inline_HOOK   
子程序名返回值类型公开备 注
Uninstall_Hook整数型 卸载hook  把原来的hook数据重新写到指定位置  不为0则成功
参数名类 型参考可空数组备 注
code地址整数型原来的被替换的汇编代码的地址
code长度整数型被替换的长度
code数据字节集原code
虚拟内存整数型我们代码被写入的点
' 写入数据
WriteProcessMemory (-1, code地址, code数据, code长度, 0)
' 释放内存
返回 (VirtualFree (虚拟内存, 0, #MEM_RELEASE ))
子程序名返回值类型公开备 注
Inline_GetBuf字节集 
参数名类 型参考可空数组备 注
目标地址整数型hook
当前地址整数型函数
变量名类 型静态数组备 注
调用地址整数型 
' jmp相对地址计算方法:目标地址 - 当前地址 - 5   最后-5 是因为jmp指令长度为5字节
调用地址 = 当前地址 - 目标地址 - 5
返回 (到字节集 (调用地址))
子程序名返回值类型公开备 注
Inline_Hook字节集 hook地址  调用原来的方法后返回
参数名类 型参考可空数组备 注
Hook地址整数型
Hook长度整数型
Hook数据字节集
回调地址整数型
回调偏移整数型
是否前置逻辑型
虚拟内存整数型这个使用来返回写的东西的虚拟内存
变量名类 型静态数组备 注
原Code字节集 
数据长度整数型 
局部字节字节集 
' 取获取hook 长度的空白字节集 一般是5
原Code = 取空白字节集 (Hook长度)
' 取自己写的汇编代码的长度
数据长度 = 取字节集长度 (Hook数据)
' 读取内存地址 也就是hook的地方的数据  读到原code里面去
ReadProcessMemory2 (-1, Hook地址, 原Code, Hook长度, 0)
' 创建128位的虚拟内存
虚拟内存 = VirtualAlloc (0, 128, #MEM_COMMIT, #PAGE_EXECUTE_READWRITE )
判断 (是否前置 = )
WriteProcessMemory (-1, 虚拟内存, 原Code, 取字节集长度 (原Code), 0)
WriteProcessMemory (-1, 虚拟内存 + Hook长度, Hook数据, 数据长度, 0)
WriteProcessMemory (-1, 虚拟内存 + Hook长度 + 回调偏移, Inline_GetBuf (虚拟内存 + 回调偏移 - 1, 回调地址), 4, 0)
WriteProcessMemory (-1, 虚拟内存 + Hook长度 + 数据长度, { 233 }Inline_GetBuf (虚拟内存 + 数据长度 + Hook长度, Hook地址 + Hook长度), 5, 0)

' 写内存地址 :把我们的汇编代码写到虚拟内存中
WriteProcessMemory (-1, 虚拟内存, Hook数据, 数据长度, 0)
' 写内存地址 : -1是因为call  指令占了一位 字节  所以我们需要减去这个 然后计算函数的相对位置进行call   jmp相对地址计算方法: hook目标地址 - 要执行当前地址 - 5   最后-5 是因为jmp指令长度为5字节
WriteProcessMemory (-1, 虚拟内存 + 回调偏移, Inline_GetBuf (虚拟内存 + 回调偏移 - 1, 回调地址), 4, 0)
' 把原code写到我们汇编代码的尾部
WriteProcessMemory (-1, 虚拟内存 + 数据长度, 原Code, Hook长度, 0)
' 在汇编 在汇编代码 和我们code 的尾部 jmp 到 原code下一层
WriteProcessMemory (-1, 虚拟内存 + 数据长度 + Hook长度, { 233 }Inline_GetBuf (虚拟内存 + 数据长度 + Hook长度, Hook地址 + Hook长度), 5, 0)

' 在hook地址  jmp 到虚拟内存
WriteProcessMemory (-1, Hook地址, { 233 }Inline_GetBuf (Hook地址, 虚拟内存), 5, 0)
' 多余的字节nop掉
计次循环首 (Hook长度 - 5, )
局部字节 = 局部字节 + { 144 }
计次循环尾 ()
' nop的数据 写到内存
WriteProcessMemory (-1, Hook地址 + 5, 局部字节, 取字节集长度 (局部字节), 0)
返回 (原Code)
子程序名返回值类型公开备 注
Inline_Hook_E8Code hookE8 等数据 可能会导致偏移出错
参数名类 型参考可空数组备 注
E8地址整数型
Hook地址整数型
Hook数据字节集
回调地址整数型
回调偏移整数型
虚拟内存地址整数型这个使用来返回写的东西的虚拟内存
变量名类 型静态数组备 注
数据长度整数型 
局部字节字节集 
Hook长度整数型 
Hook长度 = 5
数据长度 = 取字节集长度 (Hook数据)
' 创建128位的虚拟内存
虚拟内存地址 = VirtualAlloc (0, 128, #MEM_COMMIT, #PAGE_EXECUTE_READWRITE )
' 写内存地址 :把我们的汇编代码写到虚拟内存中
WriteProcessMemory (-1, 虚拟内存地址, Hook数据, 数据长度, 0)
' 写内存地址 : -1是因为call  指令占了一位 字节  所以我们需要减去这个 然后计算函数的相对位置进行call   jmp相对地址计算方法: hook目标地址 - 要执行当前地址 - 5   最后-5 是因为jmp指令长度为5字节
WriteProcessMemory (-1, 虚拟内存地址 + 回调偏移, Inline_GetBuf (虚拟内存地址 + 回调偏移 - 1, 回调地址), 4, 0)
' 把原code写到我们汇编代码的尾部
WriteProcessMemory (-1, 虚拟内存地址 + 数据长度, { 232 }Inline_GetBuf (虚拟内存地址 + 数据长度, E8地址), Hook长度, 0)
' 在汇编 在汇编代码 和我们code 的尾部 jmp 到 原code下一层
WriteProcessMemory (-1, 虚拟内存地址 + 数据长度 + Hook长度, { 233 }Inline_GetBuf (虚拟内存地址 + 数据长度 + Hook长度, Hook地址 + Hook长度), 5, 0)
' 在hook地址  jmp 到虚拟内存
WriteProcessMemory (-1, Hook地址, { 233 }Inline_GetBuf (Hook地址, 虚拟内存地址), 5, 0)
' 多余的字节nop掉
计次循环首 (Hook长度 - 5, )
局部字节 = 局部字节 + { 144 }
计次循环尾 ()
' nop的数据 写到内存
WriteProcessMemory (-1, Hook地址 + 5, 局部字节, 取字节集长度 (局部字节), 0)

评分

参与人数 4好评 +2 精币 +6 收起 理由
DavidLiu + 1 很好很强悍,坚持下去哦~
lltenable + 1 + 2 感谢分享,很给力!~
小翁哥哥 + 1 + 2 支持开源~!感谢分享
xing340 + 1 支持开源~!感谢分享

查看全部评分


签到天数: 19 天

20
发表于 2024-10-19 01:44:12 | 只看该作者   江苏省连云港市
很好很强悍,坚持下去哦~
回复 支持 反对

使用道具 举报

结帖率:79% (23/29)

签到天数: 1 天

19
发表于 2024-1-15 23:03:22 | 只看该作者   江苏省镇江市
这是用的什么模块啊
回复 支持 反对

使用道具 举报

签到天数: 20 天

18
发表于 2022-6-3 17:11:15 | 只看该作者   河南省郑州市
感谢楼主分享
回复 支持 反对

使用道具 举报

结帖率:77% (10/13)
17
发表于 2022-5-15 03:16:41 | 只看该作者   江西省赣州市
支持支持(赚个j币)
回复 支持 反对

使用道具 举报

签到天数: 1 天

16
发表于 2022-5-4 19:07:45 | 只看该作者   广西壮族自治区百色市
感谢楼主分享
回复 支持 反对

使用道具 举报

15
发表于 2022-5-3 10:50:25 | 只看该作者   内蒙古自治区呼伦贝尔市
感谢楼主分享—,学—一下
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)

签到天数: 9 天

14
发表于 2022-4-30 19:51:19 | 只看该作者   河北省石家庄市
感谢楼主分享 学习一下
回复 支持 反对

使用道具 举报

签到天数: 23 天

13
发表于 2022-4-29 05:57:21 | 只看该作者   四川省成都市
路过围观一下,顺便帮顶
回复 支持 反对

使用道具 举报

签到天数: 6 天

12
发表于 2022-4-28 18:49:49 | 只看该作者   重庆市重庆市
感谢楼主分享 学习一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:[email protected]
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表