资源描述:
《编写通用内联钩子》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、编写通用内联钩子)栏目编辑>sOcket)餮前置知识:VC关键诃编程,inlineHook,ReadProcessMemory缩写通用内联钧文/woosheep如果R00tkit是一座雄伟神秘的殿堂,那么Ring3的_nlineHook毫无疑问就是这座殿堂的大门,虽然不似Rng0那般强大,但在简单,安全(不至于蓝屏)方面却略胜一筹.更重要的,不至于让和我一样的朋友望着ROOtkit这座神殿,发出只能膜拜无法学习的感叹.无需DDK无需虚拟机,请容我把这款通用型内联钩子的编写慢慢道来.InlineHook说起来也简单,就是找到指定API函数的内存地址,放下五字节的JMP(即E9,当然,
2、如果有办法在短跳转的射程内腾出一片空间,则不在此列).跳向钩子处理函数即告完成.不过JMP的选址很讲风水.放得越深,自然越不易被检测,但对被HOOk的API破坏也越大,最简单的就是直接放在函数入口处,如果是编程前就指定的API,甚至可以把覆盖的原API汇编码直接附在钩子函数末尾.但被检测出来的风险也最大.只能自求多福了.我写的正是这么个钩子.唯一不同的是它的通用性,即只要简单地传递想要Hook的APl以及相关参数而无需另作任何修改.废话不多说,直接奉上完整代码:voidhook(DWORDdd,constchar*a~Name,constchar*dUName){intfuncSize=
3、(int)endFunc一(int)remoteFtmc;//计算挂入钧子函数大小HANDLEHandle;,f龟FARPR0CapiAddr;/2mInfo.mTemp;DWORDOldProtec编写通用内联钩子)栏目编辑>sOcket)餮前置知识:VC关键诃编程,inlineHook,ReadProcessMemory缩写通用内联钧文/woosheep如果R00tkit是一座雄伟神秘的殿堂,那么Ring3的_nlineHook毫无疑问就是这座殿堂的大门,虽然不似Rng0那般强大,但在简单,安全(不至于蓝屏)方面却略胜一筹.更重要的,不至于让和我一样的朋友望着ROOtkit这座
4、神殿,发出只能膜拜无法学习的感叹.无需DDK无需虚拟机,请容我把这款通用型内联钩子的编写慢慢道来.InlineHook说起来也简单,就是找到指定API函数的内存地址,放下五字节的JMP(即E9,当然,如果有办法在短跳转的射程内腾出一片空间,则不在此列).跳向钩子处理函数即告完成.不过JMP的选址很讲风水.放得越深,自然越不易被检测,但对被HOOk的API破坏也越大,最简单的就是直接放在函数入口处,如果是编程前就指定的API,甚至可以把覆盖的原API汇编码直接附在钩子函数末尾.但被检测出来的风险也最大.只能自求多福了.我写的正是这么个钩子.唯一不同的是它的通用性,即只要简单地传递想要Hoo
5、k的APl以及相关参数而无需另作任何修改.废话不多说,直接奉上完整代码:voidhook(DWORDdd,constchar*a~Name,constchar*dUName){intfuncSize=(int)endFunc一(int)remoteFtmc;//计算挂入钧子函数大小HANDLEHandle;,f龟FARPR0CapiAddr;/2mInfo.mTemp;DWORDOldProtec编写通用内联钩子)栏目编辑>sOcket)餮前置知识:VC关键诃编程,inlineHook,ReadProcessMemory缩写通用内联钧文/woosheep如果R00tkit是一座雄伟
6、神秘的殿堂,那么Ring3的_nlineHook毫无疑问就是这座殿堂的大门,虽然不似Rng0那般强大,但在简单,安全(不至于蓝屏)方面却略胜一筹.更重要的,不至于让和我一样的朋友望着ROOtkit这座神殿,发出只能膜拜无法学习的感叹.无需DDK无需虚拟机,请容我把这款通用型内联钩子的编写慢慢道来.InlineHook说起来也简单,就是找到指定API函数的内存地址,放下五字节的JMP(即E9,当然,如果有办法在短跳转的射程内腾出一片空间,则不在此列).跳向钩子处理函数即告完成.不过JMP的选址很讲风水.放得越深,自然越不易被检测,但对被HOOk的API破坏也越大,最简单的就是直接放在函数入
7、口处,如果是编程前就指定的API,甚至可以把覆盖的原API汇编码直接附在钩子函数末尾.但被检测出来的风险也最大.只能自求多福了.我写的正是这么个钩子.唯一不同的是它的通用性,即只要简单地传递想要Hook的APl以及相关参数而无需另作任何修改.废话不多说,直接奉上完整代码:voidhook(DWORDdd,constchar*a~Name,constchar*dUName){intfuncSize=(int)endFunc一(int)