zoukankan      html  css  js  c++  java
  • API Interception via DLL Redirection

    参考论文:<API Interception via DLL Redirection>

    拦截,监视和修改进程的API调用,通常称为API Hook,可以让我们对进程进行更有效和完全的控制.关于API Hook的实现已经有很多方法,本论文中讲的是DLL 重定向,究其原因有以下:
    1,实现简单.
    2,可以让我们查看和修改传递给API函数的参数,修改返回值,或者运行我们期望的任何代码.
    3,许多其它方法都要求向目标进程中注入代码,而DLL重定向仅只需拥有对目标程序所在文件夹的写入权限.
    4,我们可以不通过修改目标应用程序(无论是磁盘上的还是内存中的)和任何其它系统文件.

    开始磨刀,工具列表:
    Visual C++,用来编译我们的DLL 文件.
    OlleDbg,用来考察目标应用程序和其它任何外部模块.
    DumpbinGUI,用来获取一个目标DLL中的输出函数.
    Linkout.pl,一个用来自动化我们的大部分繁琐工作的perl脚本(其实可以用任何其它脚本,比如ruby,jscript,vbscript,都可以,仅作一些字符串的简单处理,译者注)

    通常用于DLL Redirection的方法有两种即.local和.manifest方法.
    .local方法要求在目标应用程序所在目录下建一个空的.local文件,比如若要拦截a.exe的某些API访问,就可以在其所在目录下建一a.exe.local文件.这种程序在找DLL时会优先从程序所在目录里寻找.
    但是.local并不是一种可靠的办法,某些DLL文件在WindowsXP中并不能被重定向,比如kernel32.dll,user32.dll和gdi32.dll,仅适用于Windows 2000中(这个我也没有试过)

    我们将要彩的方法是.manifest文件的方法,该方法要求在应用程序所在的目录下以应用程序的名称建立一个.manifest文件,不过这个manifest文件就不是空的了,而是一个XML格式的配置文件.manifest文件在很多程序中都用到,以下是笔者电脑上的一个manifest文件:

    manifest

  • 相关阅读:
    Linux下oracle数据库操作
    springcloud学习一
    nginx反向代理实现前后端分离
    GIT版本控制(码云)
    VUE环境搭建
    线程池的使用
    neo4j图形数据库实战
    idea 下tomcat字符集问题
    webservice客户端生成方式
    Spring声明式事务不回滚的问题
  • 原文地址:https://www.cnblogs.com/jcleung/p/1459198.html
Copyright © 2011-2022 走看看