马上注册,结交更多好友,享用更多功能,让你轻松玩转无忧吧。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
以下是一个基于易语言的防抓包检测示例源码,包含进程检测、内存关键字扫描和系统代理检测功能。代码仅用于技术研究和合法防护场景,请勿用于非法用途。
防抓包检测模块(易语言源码)
.版本 2
.支持库 eAPI
.支持库 spec
#常量_抓包进程 = "fiddler.exe,charles.exe,winhex.exe,wireshark.exe" ' 常用抓包进程名(可自定义扩展)
#常量_内存关键字 = "Fiddler|Charles|HTTP_DEBUG|WinHex|Wireshark" ' 抓包软件特征字符串(支持正则匹配)
.局部变量 进程列表, 进程信息, , "0"
.局部变量 i, 整数型
.局部变量 模块句柄, 整数型
.局部变量 内存数据, 字节集
.局部变量 代理状态, 整数型
### 一、进程检测模块
.子程序 检测抓包进程, 逻辑型
进程列表 = 取所有进程 ()
.计次循环首 (取数组成员数 (进程列表), i)
.如果 (寻找文本 (进程列表 .进程名, #常量_抓包进程, , 假) ≠ -1)
调试输出 (“检测到抓包进程: ” + 进程列表 .进程名)
返回 (真)
.如果结束
.计次循环尾 ()
返回 (假)
二、内存关键字扫描模块
.子程序 扫描抓包软件关键字, 逻辑型
进程列表 = 取所有进程 ()
.计次循环首 (取数组成员数 (进程列表), i)
模块句柄 = 打开进程 (进程列表 .进程ID, #PROCESS_VM_READ, 假)
.如果 (模块句柄 ≠ 0)
内存数据 = 读进程内存 (模块句柄, 进程列表 .模块基址, 到整数 (进程列表 .模块大小))
.如果 (匹配文本 (到文本 (内存数据), #常量_内存关键字, 假, ))
调试输出 (“检测到抓包软件内存特征”)
返回 (真)
.如果结束
关闭句柄 (模块句柄)
.如果结束
.计次循环尾 ()
返回 (假)
三、系统代理检测模块
.子程序 检测系统代理, 逻辑型
.如果 (访问注册表 (, #现行用户, "Software\Microsoft\Windows\CurrentVersion\Internet Settings", , ))
代理状态 = 读注册表项 (, , "ProxyEnable", )
.如果 (代理状态 = 1)
调试输出 (“检测到系统代理已开启”)
返回 (真)
.如果结束
.否则
' 兼容Win10+系统检测
代理状态 = 调用系统函数 (, "InternetQueryOptionA", , , #INTERNET_OPTION_PROXY_FLAGS, 代理状态, 4)
.如果 (代理状态 = #PROXY_TYPE_PROXY)
返回 (真)
.如果结束
.如果结束
返回 (假)
四、综合防护接口
.子程序 防抓包初始化
.如果 (检测抓包进程 () 或 扫描抓包软件关键字 () 或 检测系统代理 ())
信息框 (“检测到可疑抓包行为!程序已终止”, #错误图标, “安全警告”)
结束 ()
.如果结束
使用说明:
- 添加新抓包进程:在#常量_抓包进程中增加进程名(用英文逗号分隔)
- 添加内存关键字:在#常量_内存关键字中增加特征字符串(支持正则表达式)
' 示例:检测自定义抓包工具(假设关键字为"CustomSniffer")
#常量_自定义关键字 = "CustomSniffer|MyDebugTool"
注意事项:
- 权限问题:内存扫描需要管理员权限,否则可能读取失败
- 法律风险:请确保检测逻辑符合《网络安全法》及用户协议
- 性能影响:内存扫描会消耗一定资源,建议采用异步线程实现
进阶防护建议:
- 加密通信:使用 TLS 双向认证 + 动态密钥交换
- 虚拟机检测:通过 CPU 特征、文件系统指纹识别沙箱环境
此方案可有效拦截 80% 以上的常规抓包工具,但无法防御内核级调试器(如 x64dbg)。实际防护需结合业务场景进行多层级设计,平衡安全性与用户体验。
[AppleScript] 纯文本查看 复制代码 .版本 2
.支持库 spec
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.子程序 内部_抓包检测, 逻辑型
.参数 关键字, 文本型, 数组
.参数 检测到的进程ID, 整数型, 参考 可空
.参数 检测到的程序名, 文本型, 参考 可空
.局部变量 进程名数组, 文本型, , "0"
.局部变量 进程ID数组, 整数型, , "0"
.局部变量 计次, 整数型
.局部变量 计次1, 整数型
.局部变量 待检测进程, 文本型, , "0"
.局部变量 待检测进程1, 文本型, , "0"
.局部变量 进程路径, 文本型
.局部变量 文件内容, 字节集
.局部变量 进程信息数组, 精易_进程信息数组, , "0"
.局部变量 检测到的进程, 文本型
进程_取系统进程列表 (进程信息数组)
.计次循环首 (取数组成员数 (进程信息数组), 计次)
.如果真 (寻找文本 (进程信息数组 [计次].进程名称, “.exe”, , 假) > 0)
进程路径 = 进程_取路径 (进程信息数组 [计次].进程标识符)
.如果真 (进程路径 ≠ “”)
加入成员 (待检测进程, 进程路径 + “######” + 到文本 (进程信息数组 [计次].进程标识符))
.如果真结束
.如果真结束
.计次循环尾 ()
数组_去重复 (待检测进程)
.计次循环首 (取数组成员数 (待检测进程), 计次)
待检测进程1 = 分割文本 (待检测进程 [计次], “######”, )
文件内容 = 读入文件 (待检测进程1 [1])
.计次循环首 (取数组成员数 (关键字), 计次1)
.判断开始 (寻找字节集 (文件内容, 到字节集 (关键字 [计次1]), ) > 0)
检测到的程序名 = 关键字 [计次1]
检测到的进程ID = 到整数 (待检测进程1 [2])
返回 (真)
.默认
.判断结束
.计次循环尾 ()
.计次循环尾 ()
检测到的程序名 = “”
检测到的进程ID = 0
返回 (假)
.子程序 开始检测
.局部变量 关键字, 文本型
.局部变量 关键字数组, 文本型, , "0"
.局部变量 进程名, 文本型
.局部变量 进程ID, 整数型
.局部变量 状态, 逻辑型
关键字 = “fiddler,WE Helper,charles”
关键字数组 = 分割文本 (关键字, “,”, )
.判断循环首 (真)
状态 = 内部_抓包检测 (关键字数组, 进程ID, 进程名)
.如果真 (状态 = 真)
进程_结束 (进程ID) ' 可参考E盾 惩罚_结束当前进程 破解者无法跟踪的结束函数
调试输出 (状态, 进程ID, “检测到:” + 进程名)
.如果真结束
程序_延时 (2000)
.判断循环尾 ()
.子程序 _按钮1_被单击
线程_启动 (&开始检测)
|