乐易论坛-乐易网易语言培训教程火山PC视窗中文编程交流论坛

 找回密码
 立即注册

手机号登录

用手机号号登陆

微信登录

微信扫码,快速开始

QQ登录

用QQ账号登陆

办理VIP,定制软件,报名培训联系QQ[重磅]2024年实地培训高清培训目录火山PC版乐易模块使用教程
有了火山,易语言是否还有必要学习吗?易语言0基础入门课程火山PC视窗0基础入门课程
乐易论坛官方QQ群一览表易语言外挂0基础入门课程火山PC视窗火山HOOK入门课程
易语言误报处理课程QQ空间POST课程2022年火山PC易语言POST系列课程
Android逆向Jeb动态调试0基础课程QQ邮箱网页POST课程WeChat个微Hook实战课程
百日Js加密分析实战课程(无密下载)QQ群POST课程h5游戏WebSocket逆向视频
JavaScript加密特训课程易语言汇编快速入门课程破解实战系列课程
手游模拟器脚本0基础课程易语言加密防破解0基础入门课程广告位招租联系QQ1615457736
查看: 11546|回复: 3

VehHook实现监控某游戏的封包

[复制链接]

VehHook实现监控某游戏的封包

[复制链接]
已绑定手机
尘。
等级头衔

等級:顶级Vip

Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
易币
贡献
主题
精华
金钱
积分
470
注册时间
2014-8-18
最后登录
1970-1-1

勋章墙

2016-1-25 10:59:12 | 显示全部楼层 |阅读模式
本帖最后由 逝去的初夏丶 于 2016-1-25 11:01 编辑

AddVectoredExceptionHandler 添加一个Veh异常处理的链表,参数1为是否把链表放在最前,参数2为链表的地址
SetThreadContext 设置线程上下文,参数1为线程句柄,用OpenThread获得 参数2指向一个线程上下文的数据结构,成员如下
  
窗口程序集名保 留  保 留备 注
(未填写程序集名)   
变量名类 型数组备 注
变量名类 型数组备 注
封包地址整数型  

子程序名返回值类型公开备 注
_窗口1_创建完毕  
封包地址 = 内存操作.搜索基址 ({ 131, 236, 64, 86, 139, 241, 139, 70, 20, 131 })
_设置Veh链表 (&_VEH异常链表)
子程序名返回值类型公开备 注
_VEH异常链表整数型 
参数名类 型参考可空数组备 注
KePoint整数型   
变量名类 型静态数组备 注
esp整数型  
调用地址整数型  
包名地址整数型  
数据包名文本型  
报文地址整数型  
列表索引整数型  
报文长度整数型  
报文内容字节集  
i整数型  
是否显示逻辑型  
待过滤文本型  
判断 (_读整数型 (_读整数型 (KePoint) + 12) = 封包地址)
esp = _读整数型 (_读整数型 (KePoint + 4) + 196)
调用地址 = _读整数型 (esp)
报文地址 = _读整数型 (esp + 4)
包名地址 = _读整数型 (报文地址) + 32
数据包名 = 到文本 (_读字节集 (包名地址, 100))
是否显示 = 真
如果真 (是否过滤.选中)
计次循环首 (超级列表框2.取硐钍 (), i)
待过滤 = 删全部空 (超级列表框2.取晏 (i, 0))
如果真 (取文本长度 (待过滤) > 3)
如果真 (-1 ≠ 寻找文本 (数据包名, 超级列表框2.取晏 (i, 0), , 真))
是否显示 = 假


计次循环尾 ()
如果真 (是否显示)
报文长度 = _计算包长 (调用地址)
判断 (报文长度 = 0)
报文内容 = _读字节集 (报文地址, 60)
报文内容 = _读字节集 (报文地址, 报文长度)
列表索引 = 超级列表框1.插入表项 (, , , , , )
超级列表框1.保证显示 (列表索引)
超级列表框1.置标题 (列表索引, 0, “0x”取十六进制文本 (调用地址))
超级列表框1.置标题 (列表索引, 1, 数据包名)
判断 (报文长度 = 0)
超级列表框1.置标题 (列表索引, 2, “??”)
超级列表框1.置标题 (列表索引, 2, “0x”取十六进制文本 (报文长度))
超级列表框1.置标题 (列表索引, 3, 查看字节集2 (报文内容))
esp = esp - 十六到十 (“40”)
写到内存 (esp, _读整数型 (KePoint + 4) + 196, )
写到内存 (到整数 (封包地址 + 3), _读整数型 (KePoint + 4) + 184, )
返回 (-1)


返回 (0)
子程序名返回值类型公开备 注
_计算包长整数型 
参数名类 型参考可空数组备 注
发包地址整数型   
变量名类 型静态数组备 注
当前地址整数型  
当前字节字节集  
临时地址整数型  
报文长度整数型  
报文长度 = -1
当前地址 = 发包地址
循环判断首 ()
当前地址 = 当前地址 - 1
当前字节 = _读字节集 (当前地址, 5)
判断 (-1 ≠ 寻找字节集 (当前字节, { 85, 139, 236, 131, 236 }, ))  ' ;判断函数头部 push ebp
报文长度 = 0
判断 (-1 ≠ 寻找字节集 (当前字节, { 131, 236 }, ))  ' ;判断函数头部 sub esp,0xx
报文长度 = 0
判断 (-1 ≠ 寻找字节集 (当前字节, { 131, 196, 4 }, ))
临时地址 = 当前地址 - 7
当前字节 = _读字节集 (临时地址, 1)
判断 (当前字节 = { 106 })
当前字节 = _读字节集 (临时地址 + 1, 1)
报文长度 = 取字节集数据 (当前字节, #整数型, )





处理事件 ()
循环判断尾 (报文长度 = -1)
返回 (报文长度)
子程序名返回值类型公开备 注
_读字节集字节集 
参数名类 型参考可空数组备 注
内存地址整数型   
读取长度整数型   
变量名类 型静态数组备 注
变量字节集  
变量 = 取空白字节集 (读取长度)
置入代码 ({ 96, 139, 117, 8, 129, 254, 0, 0, 1, 0, 126, 27, 139, 93, 12, 139, 85, 252, 131, 194, 8, 191, 0, 0, 0, 0, 59, 223, 126, 9, 138, 4, 62, 136, 4, 58, 71, 235, 243, 97 })
返回 (变量)
子程序名返回值类型公开备 注
_开始监视_被单击  
判断 (开始监视.选中)
ctx.ContextFlags = 65599
GetThreadContext (GetCurrentThread (), ctx)
ctx.Dr0 = 封包地址
ctx.Dr7 = 1109
ctx.ContextFlags = 65599
SetThreadContext (GetCurrentThread (), ctx)
ctx.ContextFlags = 65599
GetThreadContext (GetCurrentThread (), ctx)
ctx.Dr0 = 0
ctx.Dr7 = 1109
ctx.ContextFlags = 65599
SetThreadContext (GetCurrentThread (), ctx)

子程序名返回值类型公开备 注
_清空报文列表_被单击  
超级列表框1.全部删除 ()
子程序名返回值类型公开备 注
_过滤关键字输入框_内容被改变  

子程序名返回值类型公开备 注
_添加过滤名单_被单击  
变量名类 型静态数组备 注
a整数型  
a = 超级列表框2.插入表项 (, , , , , )
超级列表框2.置标题 (a, 0, 过滤关键字输入框.内容)
子程序名返回值类型公开备 注
_删除过滤名单_被单击  
超级列表框2.删除表项 (超级列表框2.现行选中项)
子程序名返回值类型公开备 注
_是否过滤_被单击  

子程序名返回值类型公开备 注
_删除全部名单_被单击  
超级列表框2.全部删除 ()
子程序名返回值类型公开备 注
_复制所选报文内容_被单击  
置剪辑板文本 (超级列表框1.取晏 (超级列表框1.现行选中项, 3))
子程序名返回值类型公开备 注
_复制所选报文调用_被单击  
置剪辑板文本 (超级列表框1.取晏 (超级列表框1.现行选中项, 0))
子程序名返回值类型公开备 注
_复制所选报文名字_被单击  
置剪辑板文本 (超级列表框1.取晏 (超级列表框1.现行选中项, 1))
子程序名返回值类型公开备 注
_复制所有_被单击  
变量名类 型静态数组备 注
text文本型  
text = 超级列表框1.取晏 (超级列表框1.现行选中项, 0) + “  ” + 超级列表框1.取晏 (超级列表框1.现行选中项, 1) + “  ” + 超级列表框1.取晏 (超级列表框1.现行选中项, 2) + “  ” + 超级列表框1.取晏 (超级列表框1.现行选中项, 3) + #换行符
置剪辑板文本 (text)


i支持库列表   支持库注释   
iext扩展界面支持库一



如果是对外部线程进行get/setthreadcontext操作之前要先挂起被操作的线程, 否则容易引起出错
源码因为贪方便用到了超级模块,不喜欢的把用到的指令自己写一下即可,都是些常用的指令,实现代码都挺简单的

这个监控软件本来还打算添加报文修改和报文重复发送的功能的,但是一直没时间,就还没来得及添加上去
报文修改可以直接在我读取到的报文地址里面做一个字节集替换即可
报文重复发送需要先把报文地址内的内存数据也就是游戏发送的报文重新copy一份保存下来才行



  
窗口程序集名保 留  保 留备 注
(未填写程序集名)   
变量名类 型数组备 注
变量名类 型数组备 注
封包地址整数型  

子程序名返回值类型公开备 注
_窗口1_创建完毕  
封包地址 = 内存操作.搜索基址 ({ 131, 236, 64, 86, 139, 241, 139, 70, 20, 131 })
_设置Veh链表 (&_VEH异常链表)
子程序名返回值类型公开备 注
_VEH异常链表整数型 
参数名类 型参考可空数组备 注
KePoint整数型   
变量名类 型静态数组备 注
esp整数型  
调用地址整数型  
包名地址整数型  
数据包名文本型  
报文地址整数型  
列表索引整数型  
报文长度整数型  
报文内容字节集  
i整数型  
是否显示逻辑型  
待过滤文本型  
判断 (_读整数型 (_读整数型 (KePoint) + 12) = 封包地址)
esp = _读整数型 (_读整数型 (KePoint + 4) + 196)
调用地址 = _读整数型 (esp)
报文地址 = _读整数型 (esp + 4)
包名地址 = _读整数型 (报文地址) + 32
数据包名 = 到文本 (_读字节集 (包名地址, 100))
是否显示 = 真
如果真 (是否过滤.选中)
计次循环首 (超级列表框2.取硐钍 (), i)
待过滤 = 删全部空 (超级列表框2.取晏 (i, 0))
如果真 (取文本长度 (待过滤) > 3)
如果真 (-1 ≠ 寻找文本 (数据包名, 超级列表框2.取晏 (i, 0), , 真))
是否显示 = 假


计次循环尾 ()
如果真 (是否显示)
报文长度 = _计算包长 (调用地址)
判断 (报文长度 = 0)
报文内容 = _读字节集 (报文地址, 60)
报文内容 = _读字节集 (报文地址, 报文长度)
列表索引 = 超级列表框1.插入表项 (, , , , , )
超级列表框1.保证显示 (列表索引)
超级列表框1.置标题 (列表索引, 0, “0x”取十六进制文本 (调用地址))
超级列表框1.置标题 (列表索引, 1, 数据包名)
判断 (报文长度 = 0)
超级列表框1.置标题 (列表索引, 2, “??”)
超级列表框1.置标题 (列表索引, 2, “0x”取十六进制文本 (报文长度))
超级列表框1.置标题 (列表索引, 3, 查看字节集2 (报文内容))
esp = esp - 十六到十 (“40”)
写到内存 (esp, _读整数型 (KePoint + 4) + 196, )
写到内存 (到整数 (封包地址 + 3), _读整数型 (KePoint + 4) + 184, )
返回 (-1)


返回 (0)
子程序名返回值类型公开备 注
_计算包长整数型 
参数名类 型参考可空数组备 注
发包地址整数型   
变量名类 型静态数组备 注
当前地址整数型  
当前字节字节集  
临时地址整数型  
报文长度整数型  
报文长度 = -1
当前地址 = 发包地址
循环判断首 ()
当前地址 = 当前地址 - 1
当前字节 = _读字节集 (当前地址, 5)
判断 (-1 ≠ 寻找字节集 (当前字节, { 85, 139, 236, 131, 236 }, ))  ' ;判断函数头部 push ebp
报文长度 = 0
判断 (-1 ≠ 寻找字节集 (当前字节, { 131, 236 }, ))  ' ;判断函数头部 sub esp,0xx
报文长度 = 0
判断 (-1 ≠ 寻找字节集 (当前字节, { 131, 196, 4 }, ))
临时地址 = 当前地址 - 7
当前字节 = _读字节集 (临时地址, 1)
判断 (当前字节 = { 106 })
当前字节 = _读字节集 (临时地址 + 1, 1)
报文长度 = 取字节集数据 (当前字节, #整数型, )





处理事件 ()
循环判断尾 (报文长度 = -1)
返回 (报文长度)
子程序名返回值类型公开备 注
_读字节集字节集 
参数名类 型参考可空数组备 注
内存地址整数型   
读取长度整数型   
变量名类 型静态数组备 注
变量字节集  
变量 = 取空白字节集 (读取长度)
置入代码 ({ 96, 139, 117, 8, 129, 254, 0, 0, 1, 0, 126, 27, 139, 93, 12, 139, 85, 252, 131, 194, 8, 191, 0, 0, 0, 0, 59, 223, 126, 9, 138, 4, 62, 136, 4, 58, 71, 235, 243, 97 })
返回 (变量)
子程序名返回值类型公开备 注
_开始监视_被单击  
判断 (开始监视.选中)
ctx.ContextFlags = 65599
GetThreadContext (GetCurrentThread (), ctx)
ctx.Dr0 = 封包地址
ctx.Dr7 = 1109
ctx.ContextFlags = 65599
SetThreadContext (GetCurrentThread (), ctx)
ctx.ContextFlags = 65599
GetThreadContext (GetCurrentThread (), ctx)
ctx.Dr0 = 0
ctx.Dr7 = 1109
ctx.ContextFlags = 65599
SetThreadContext (GetCurrentThread (), ctx)

子程序名返回值类型公开备 注
_清空报文列表_被单击  
超级列表框1.全部删除 ()
子程序名返回值类型公开备 注
_过滤关键字输入框_内容被改变  

子程序名返回值类型公开备 注
_添加过滤名单_被单击  
变量名类 型静态数组备 注
a整数型  
a = 超级列表框2.插入表项 (, , , , , )
超级列表框2.置标题 (a, 0, 过滤关键字输入框.内容)
子程序名返回值类型公开备 注
_删除过滤名单_被单击  
超级列表框2.删除表项 (超级列表框2.现行选中项)
子程序名返回值类型公开备 注
_是否过滤_被单击  

子程序名返回值类型公开备 注
_删除全部名单_被单击  
超级列表框2.全部删除 ()
子程序名返回值类型公开备 注
_复制所选报文内容_被单击  
置剪辑板文本 (超级列表框1.取晏 (超级列表框1.现行选中项, 3))
子程序名返回值类型公开备 注
_复制所选报文调用_被单击  
置剪辑板文本 (超级列表框1.取晏 (超级列表框1.现行选中项, 0))
子程序名返回值类型公开备 注
_复制所选报文名字_被单击  
置剪辑板文本 (超级列表框1.取晏 (超级列表框1.现行选中项, 1))
子程序名返回值类型公开备 注
_复制所有_被单击  
变量名类 型静态数组备 注
text文本型  
text = 超级列表框1.取晏 (超级列表框1.现行选中项, 0) + “  ” + 超级列表框1.取晏 (超级列表框1.现行选中项, 1) + “  ” + 超级列表框1.取晏 (超级列表框1.现行选中项, 2) + “  ” + 超级列表框1.取晏 (超级列表框1.现行选中项, 3) + #换行符
置剪辑板文本 (text)


i支持库列表   支持库注释   
iext扩展界面支持库一

源码下载:
游客,如果您要查看本帖隐藏内容请回复


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1易币 +20 金钱 +5 收起 理由
揰掵佲 + 20 + 5 编程大师用户组正式开启啦。https://www.leybc.com/thread

查看全部评分

回复

使用道具 举报

已绑定手机
已实名认证
揰掵佲
等级头衔

等級:乐易运营组

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分成就
易币
贡献
主题
精华
金钱
积分
33754
注册时间
2014-8-2
最后登录
1970-1-1

勋章墙

2016-1-25 12:00:42 | 显示全部楼层
感谢分享!
回复

使用道具 举报

已绑定手机
nigeshabi
等级头衔

等級:顶级Vip

Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
易币
贡献
主题
精华
金钱
积分
1108
注册时间
2015-7-5
最后登录
1970-1-1

勋章墙

2016-1-25 18:49:33 | 显示全部楼层
d顶顶顶顶顶顶顶顶顶
回复

使用道具 举报

已绑定手机
无尘
等级头衔

等級:顶级Vip

Rank: 14Rank: 14Rank: 14Rank: 14

积分成就
易币
贡献
主题
精华
金钱
积分
2328
注册时间
2014-9-27
最后登录
1970-1-1

勋章墙

2016-5-17 20:36:12 | 显示全部楼层
老大辛苦啦  感谢分享
回复

使用道具 举报

如果懒得打字,请选择右侧内容快捷回复 提醒:以任何方式进行『恶意灌水』的行为,进行封号处理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

热点推荐上一条 /5 下一条

QQ|网站地图|手机版|小黑屋|乐易论坛-乐易网 | 湘ICP备19007035号

拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表乐易立场!

娄底市乐易网络科技有限公司声明:乐易原创培训课程版权均为我公司所有,未经许可,不得擅自翻录,盗版,破解本站课课程,我们将保留法律诉讼的权利

GMT+8, 2024-4-29 00:31 , Processed in 0.063906 second(s), 56 queries .

Powered by Discuz! X3.4

Copyright © Tencent Cloud.

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