send封包拦截模块,安装APIHOOK

易语言 2020-07-17 11:10:03

send封包拦截模块,安装APIHOOK

.子程序 安装, 逻辑型, 公开, 安装APIHOOK
.参数 动态链接库路径, 文本型, , 欲截获的函数名所在动态链接库的路径
.参数 函数名, 文本型, , 欲截获的函数名
.参数 新函数地址, 整数型, , 回调子程序指针地址.可以用 到整数(子程序指针) 获得
.局部变量 模块句柄, 整数型

.如果真 (ase4byry ≠ 0)
返回 (真)
.如果真结束
模块句柄 = _取模块句柄2 (动态链接库路径)
.如果真 (模块句柄 = 0)
模块句柄 = _装载DLL (动态链接库路径)
.如果真结束
.如果真 (模块句柄 = 0)
返回 (假)
.如果真结束
ase4byry = _取库函数地址 (模块句柄, 函数名) ' 获取API函数地址
.如果真 (ase4byry = 0)
返回 (假)
.如果真结束
.如果真 (_修改内存属性 (ase4byry, 5, #xrh6bdt, dtgesxt) = 假)
返回 (假)
.如果真结束
se4g6s = 指针到字节集 (ase4byry, 5) ' 保存API入口前5个字节
sr5h6bdfd = { 233 } + 到字节集 (到整数 (新函数地址 - (ase4byry + 5)))
写到内存 (sr5h6bdfd, ase4byry, 5) ' 修改API入口前5字节
se4g6s = se4g6s + { 233, 0, 0, 0, 0 }
dr7hb = _取指针_字节集2 (se4g6s, se4g6s, 0)
写到内存 (到整数 (ase4byry + 5 - (dr7hb + 10)), dr7hb + 6, 4)
_释放DLL (模块句柄)
返回 (真)

.子程序 安装2, 逻辑型, 公开, 安装APIHOOK
.参数 动态链接库路径, 文本型, , 欲截获的函数名所在动态链接库的路径
.参数 函数名, 文本型, , 欲截获的函数名
.参数 新函数地址, 子程序指针, , 回调子程序指针

返回 (安装 (动态链接库路径, 函数名, 到整数 (新函数地址)))