//skt.sec
整数 窗口,开始,网络,状态,文件,位置,计数,Pid;文本 数表[36]
小程序 初始化(整数 实例,整数 模式,整数 数据);
判断(模式)
为 初次调用{开启线程(@启动, 0 , 实例)}
结束;
小程序 启动(整数 实例)
整数 开始,发出,编辑
窗口=查找窗口("SecClass", "抓包工具");
如果(窗口=0){跳到 结束关闭}
开始=获取控件(窗口,1)
发出=获取控件(窗口,3)
编辑=获取控件(窗口,6)
Pid=进程标识;查找函数
文件=建文件("D:\skt.bin",0)
循环在(可用窗口(开始)){
状态=发送消息(开始,获取选择,0,0)
如果(可用窗口(发出)=0)发送包(发出,编辑)
延时(240)}状态=0
控制窗口(开始,真)
关文件(文件)改回地址
结束关闭@
释放线程(实例,0)
结束;
小程序 发送包(整数 发出,整数 文档)
整数 内容,长度;
长度=发送消息(文档,文本长度,0,0)+1
内容=申请内存(长度)
长度=发送消息(文档,获取文本,长度,内容)>>1
写二进制(内容,长度)
发送(网络,内容,长度,0)
释放内存(内容)
控制窗口(发出,真)
结束;
小程序 写二进制(整数 缓冲,整数 长度)
循环数组(长度>缓冲(长度)){
拆分式(缓冲,"%02X",@长度)
缓冲+2}
结束;
小程序 查找函数
整数 基址,长度,名称;
基址=导入列表($400000,真,1,@长度)
循环{
名称=$400000+基址(16)&;基址+24;
}(比较字母(名称,"WS2_32.dll")=0)
基址<基址-4;基址+$400000;
长度=模块地址("WS2_32.dll")
名称=函数地址(长度,"send")
修改地址(基址,名称,@发包)
名称=函数地址(长度,"recv")
修改地址(基址,名称,@收包)
名称=函数地址(长度,"WSASend")
修改地址(基址,名称,@发数据)
名称=函数地址(长度,"WSARecv")
修改地址(基址,名称,@收数据)
结束;
小程序 改回地址
位置=数表+16
循环数组(计数<数表(4)&){
Pid<位置;如果(计数)Pid>计数;位置+4}
循环
结束;
小程序 修改地址(整数 基址,整数 地址,整数 新址)
地址=检索(基址&,地址,100)
如果(地址<0){返回}基址+地址*4;
虚拟保护(基址,4,PAGE_READWRITE,@地址);
数表(计数)&=基址;数表(计数+16)&=~基址;新址>基址;计数+4
结束;
小程序 发包(整数 网口,整数 内容,整数 长度,整数 标志)
网络=网口;记录数据($401,内容,长度)发送(网口,内容,长度, 0)
结束;
小程序 收包(整数 网口,整数 内容,整数 长度,整数 标志)
长度=接收(网口,内容,长度,0)记录数据($402,内容,长度)
返回(长度)
结束;
小程序 发数据(整数 网口,整数 数组,整数 数量,整数 长度,整数 标志,整数 重叠,整数 回调)
网络=网口;标志<数组+4
记录数据($403,标志,~数组)
发送数据(网口,数组,数量,长度,0, 0, 0);
结束;
小程序 收数据(整数 网口,整数 数组,整数 数量,整数 长度,整数 标志,整数 重叠,整数 回调)
回调=接收数据(网口,数组,数量,长度, 标志, 0, 0)
如果(回调=0){标志<数组+4记录数据($404,标志,~长度)}返回(回调)
结束;
小程序 记录数据(整数 通道,整数 内容,整数 长度)
如果(状态=1){写文件(文件,内容,长度)
发送消息(窗口,通道,位置,长度)位置+长度}
结束;
//抓包.sec
整数 手形,按下,大小,状态,选项,选窗,进程,PID;文本 路径[64],缓冲[64];
小程序 窗体消息(整数 窗口,整数 消息,整数 参数,整数 数据)
判断(消息)为 窗口关闭{停止(0)}
为 单击左键{左键点击(参数)}
为 鼠标移动{如果(按下)抓取窗口}
为 按下左键{更换游标(手形)捕获鼠标(窗口)按下=真}
为 释放左键{释放鼠标;按下=假}
为 $401数据消息("发包",参数,数据)
为 $402数据消息("收包",参数,数据)
为 $403数据消息("发送",参数,数据)
为 $404数据消息("接收",参数,数据)
否则{处理窗口(窗口,消息,参数,数据)}
结束;
小程序 窗体启动
手形=载入光标(0,32649)
按钮复选(窗体,10,真)
大小=当前目录(64,路径)+9
附加文字(路径,"\skt.dll")
桌面.左=窗体
读取消息
结束;
小程序 左键点击(整数 编号)
判断(编号)
为 2抓包注入
为 3控制窗口(发包,0)
为 4读取内容
为 5写入内容
为 10~13选项=编号-10
为 $10009详细信息
结束
小程序 抓取窗口
整数 窗口,顶,左
读取光标(@左)
窗口=定位窗口(左,顶)
如果(窗口=选窗)返回;
取窗口字(窗口,缓冲,64)
改窗口字(编辑,缓冲)
控制窗口(注入,真)选窗=窗口
窗口进程(窗口,@PID)
进程=打开进程($1F0FFF,0,PID)
结束;
小程序 抓包注入
整数 线程,地址=虚拟空间(进程,0,大小,$1000,$4)
控制窗口(开始,0)延时(200)控制窗口(开始,真)
写入内存(进程,地址,路径,大小,0)
线程= 远程线程(进程, 0, 0, @加载库, 地址, 0, 0)
等单对象(线程,-1)关闭对象(线程)控制窗口(注入,0)
空间释放(进程,地址,大小,MEM_DECOMMIT)
结束
小程序 数据消息(整数 分类,整数 位置,整数 长度)
格式化(缓冲,"%s %d %d",分类,长度,位置)
发送消息(列表,列表添加,0,缓冲)
结束
小程序 详细信息
整数 文件,长度,位置,缓存,编号=发送消息(列表,列表选项,0,0)
发送消息(列表,列表读取,编号,缓冲)
拆分式(缓冲,"%*s %d %d",@长度,@位置)
文件=开文件("D:\skt.bin",0)
流定位(文件,位置,0)
缓存=申请内存(长度)
读文件(文件,缓存,长度)
判断(选项)为 0显二进制(缓存,长度)
为 1显示整数(缓存,长度)
为 2显示小数(缓存)
为 3{缓存+取控件数(窗体,7,0,1)
改窗口字(编辑,缓冲)}
释放内存(缓存)
关文件(文件)
结束;
小程序 显示整数(整数 内容,整数 长度)
整数 缓存,指针,数值
长度=内容(9)%内容+11
缓存=申请内存(长度*8)指针=缓存
循环数组(数值<内容(长度>>2)&){
指针+格式化(指针,"%d ",数值)
}改窗口字(编辑,缓存)
释放内存(缓存)
结束;
小程序 显示小数(整数 内容)
整数 缓存=申请内存(128)
整数 指针=缓存,数值;浮点 双数
内容+取控件数(窗体,7,0,1)
循环数组(数值<内容(3)&){
双数=数值
指针+格式化(指针,"%f ",双数)
}改窗口字(编辑,缓存)
释放内存(缓存)
结束;
小程序 读取内容
整数 长度,地址=取控件数(窗体,7,0,1)
浮点 双数
读取内存(进程,地址,缓冲,64,0)
判断(选项)为 0显二进制(缓冲,64)
为 1改控件数(窗体,6,~缓冲,1)
为 2{地址<缓冲;双数=地址
格式化(缓冲,"%f",双数)
改窗口字(编辑,缓冲)}
为 3改窗口字(编辑,缓冲)
结束;
小程序 显二进制(整数 内容,整数 长度)
整数 缓存=申请内存(长度*2+1)
整数 指针=缓存,数值
循环数组(数值<内容(长度)){
格式化(指针,"%02X",数值)
指针+2}改窗口字(编辑,缓存)
释放内存(缓存)
结束;
小程序 写入内容
整数 长度,数值,地址=取控件数(窗体,7,0,1)
长度=取窗口字(编辑,缓冲,64)
小数 单数;判断(选项)
为 0长度=写二进制(长度>>1)
为 1{长度=4数值=转整数(缓冲)数值>缓冲}
为 2{长度=4单数=转小数(缓冲)单数>缓冲}
为 3长度++
写入内存(进程,地址,缓冲,长度,0)
结束;
小程序 写二进制(整数 长度)
整数 指针=@缓冲,数值
循环数组(数值>缓冲(长度)){
拆分式(指针,"%02X",@数值)
指针+2}返回(长度)
结束;
//抓包说明.txt
在窗口的空白处按住鼠标左键,拖曳到目标窗口,再放开鼠标左键
在上面文本框内输入内存地址,就可以按字节,整数,小数或文本形式读写游戏内存了
抓包需要点击注入,再点击开始按钮抓包,若要停止抓包再按开始按钮即可
以小数或文本形式查看封包,需要输入正确的偏移地址
视频教程: https://www.ixigua.com/i7162560890515128845/
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。