下你所需,载你所想!
汇集开发技术源码资料

64位进程远程hook技术及64模块导出表的一些变化

:55.633KB :1 :2021-10-21 15:52:50

部分简介

64位进程远程hook技术及64模块导出表的一些变化例子。一个开源模块WOW64Ext,就为易语言操作64位模块进程提供了一些基本的封装,本人也借此基础上封装了几个功能,作为进一步扩展,有兴许的朋友可以继续完善。
在64进程中PostMessageA函数的4个参数也是整数型4字节传递,包括它发送出去的值也是一个整数型4字节。那么64进程堆栈指针是一个8字节长整数,也就是说我们需要拆分堆栈指针8字节为两个4字节,通过消息值1 消息值2 传递这个堆栈指针,在我们的程序中在合并它得到完整的堆栈指针。看上去这样也许就可以了,但是喜欢完美的我还想让PostMessageA在传递一个HOOK进程的句柄值,这样我们在易语言程序中就可以直接使用这个句柄做其他操作,而且句柄与堆栈地址对应,完美,所有需要传递的值都不会出问题。
在这里再次强调本模块是在WOW64Ext开源模块的基础上增加的一些功能,请保留版权信息,若用于其它目的而造成的一切纠纷与后果由您自行承担。
本来还想写写 64位模块导出表的变化,鉴于篇幅,暂时作罢,日后再说,源码也包含在内,自己看吧。同时构造了模块64_取函数入口() 和其他的一些常用子程序。
远程hook64指令_安装()
支持最小6字节,最大127字节,hook采用JMP转移,且为长转移(并非2G短转移),且支持最小6字节
支持hook任意指令处,支持获得当时16个通用寄存器+一个rip寄存器,的读取及修改
回调接口返回值支持是否执行Hook掉的原指令(0=执行,>0不执行)
支持任意堆栈操作,通过rsp
支持任意rip转移(支持大于2G长转移),通过rip
支持一个易语言程序同时控制多个64位目标进程
支持多个hook点同时回调至一个回调接口内
且所有回调尽阶独立,不论hook位置的复杂经过性皆不影响回调数据
每次hook的经过都会等到回调返回,假如回调接口未返回,则hook当时的经过为挂起等待状态。

64位进程远程hook技术及64模块导出表的一些变化

热门推荐

相关文章