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

  • 相关阅读:
    ES6学习笔记(五)函数的扩展
    ES6学习笔记(四)数值的扩展
    ES6学习笔记(二)变量的解构与赋值
    ES6学习笔记(一)新的变量定义命令let和const
    JS对象继承与原型链
    JS构造函数、对象工厂、原型模式
    获取地图的坐标
    大屏页面
    如何更新git?
    ES6——多个箭头函数
  • 原文地址:https://www.cnblogs.com/jcleung/p/1459198.html
Copyright © 2011-2022 走看看