必备绝技--Hook大法(上).docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
必备绝技--Hook大法(上)

标 题: 【原创】必备绝技--Hook大法( 上 ) 【作者声明】:?这没有什么新鲜东西,其内容全部来自于前辈,姑且当作学习笔记。文字用自己的话写出,四段代码均出自别人(知道作者的,以注明),但短小精悍,就写在一起了,便于察看。欢迎指正。 【详细过程】 ??hook概念:是一种通过更改程序的数据结构或代码结构从而改变程序运行路线的一种方法。(纯属本人自己观点)? ??????分类:从上面的概念来看,一种是改变程序的数据结构,如:IAT-hook,Dll-inject及Direct?Kernel?Object?Manipulation(DKOM)。一种是Inline?Function?Hooking。 ??????用途:现在这种方法普遍运用于各类程序中,如加壳,杀软,病毒,Rootkits等等。 ??本文从难以程度上主要分三块详细介绍:一.用户模式Hook:IAT-hook,Dll-inject二.内核模式Hook:ssdt-hook,idt-hook,int?2e/sysenter-hook三.Inline?Function?Hook; ??这次先来看第一部分 ??Ⅰ.用户模式Hook ??一.IAT-hooking ??(一)一般原理:IAT是Import?Address?Table(输入地址表)的简写,这需要你知道关于win?PE格式的了解。现在应用程序中的大多数函数都是windows?api,而这些函数一般都由几个系统dll导出,如user32.dll,kernel32.dll,advapi32.dll等。如果程序要运用这些函数,就的从这些dll文件中导入,程序会把导入的函数放到一个叫IAT的数据结构中。我们可以先找到自己需要hook的函数,然后把目标函数的地址改成我们自己的hook函数,最后在恢复到目标函数的地址。这样一来,目标函数被调用时,我们的hook函数也就别调用了。如果这个hook函数是病毒,是后门,是。。。。。。。。由于是在目标函数进程的空间内,所以这个hook函数也就不会被发现。 关于WIN?PE格式的详细知识可参见:/showthread.php?t=31840及加密与解密。 ??(二)大体框架:这里用伪码给个一般框架,以便有个大体印象。 ??文件1:myhookfun() ????????{ ?????????????可以创建一个新的线程,去执行木马或后门等功能 ????????} ??文件2:?include?文件1 ?????寻找目标模块(GetModuleHandle) ????if(目标模块找到) ???????根据pe结构,在目标模块中定位目标函数的IAT地址(这个地址在加载时就确定了) ???????if?(目标函数在IAT中的地址找到) ???????????用我们的myhookfun()地址取代 ???????esle?退出 ????esle?退出 ???? ??当然也可以合成一个文件,但这样分开的好处是可以实现模块化,可以分别关心各自的功能,也便于以后重用。 ??(三)代码实例: ??????.486? ??????.model?flat,?stdcall? ??????option?casemap:none? ?? ??include???windows.inc? ??include???kernel32.inc? ??includelib???kernel32.lib?牋include牋爑ser32.inc?牋includelib牋爑ser32.lib?牋 牋牋牋.data?牋szMsgTitle牋db牋?IAT燞ook,??牋szModule牋燿b牋?user32.dll,??牋szTargetFunc牋燿b牋?GetForegroundWindow,??牋szHooked牋燿b牋?This爄s爄n爐he爃ooked爁unction?燬eems爐o爃ave?worked.,??牋szFail牋牋燿b牋?Failed.,??牋 牋牋牋.data??牋 牋IATHook牋燩ROTO牋燬TDCALL?DWORD,?DWORD,?DWORD?牋HookProc燩ROTO牋燬TDCALL?LPVOID?牋 牋牋牋.code?牋HookProc牋爌roc牋燗rg1:LPVOID?牋牋牋牋牋牋invoke牋燤essageBox,燦ULL,燼ddr爏zHooked,?addr爏zMsgTitle,燤B_OK?牋牋牋牋牋牋ret?牋HookProc牋爀ndp?牋 牋IATHook牋爌roc牋爌

文档评论(0)

almm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档