• 如何防止dll注入


    不管LoadLibraryA,LoadLibraryW,LoadLibraryExA,LoadLibraryExW,所以只要hook LoadLibraryExW就可以监视所有的dll加载。

    值得注意的是,win7 以上系统,LoadLibraryExW函数在KernelBase.dll中,kernel32中的只是个跳板函数。

    还有一种利用dll的回调方法,会更优雅,下一次介绍,不需要hook任何函数。

    简单的示例:

    #pragma once

    #include "../../../../ComAll/XHook.hpp"

    namespace HookLoadLibraryW

    {

    static HookEnv env;

    HMODULE WINAPI MyLoad(

    __in const WCHAR* lpFileName,

    __reserved HANDLE hFile,

    __in DWORD dwFlags

    )

    {

    wcout<<lpFileName<<endl;

    return NULL;

    }

    static int32 Hook(){

    InitHookEnv(env);

    addr_t old=GetProcAddress(GetModuleHandleA("KernelBase.dll"),"LoadLibraryExW") ;

    Hook(env,old,MyLoad);

    return 0;

    }

    static int32 UnHook(){

    UnHook(env);

    return 0;

    }

    }

    欢迎关注 windows驱动编程微信公众号,微信号:driverdevelop

  • 相关阅读:
    mount命令详解
    traceroute命令详解
    etcd节点扩容至两个节点
    shell历史命令
    etcd单节点安装
    linux中修改环境变量及生效方法
    ansible最佳实战部署nginx
    用roles部署nginx
    playbook部署mangodb
    安装mangodb
  • 原文地址:https://www.cnblogs.com/xujinping/p/4919179.html
Copyright © 2020-2023  润新知