zoukankan      html  css  js  c++  java
  • 绕过LoadLibrary 加载DLL

    #include <Windows.h>
    typedef struct _UNICODE_STRING { // UNICODE_STRING structure
    USHORT Length;
    USHORT MaximumLength;
    PWSTR Buffer;
    } UNICODE_STRING;
    typedef UNICODE_STRING *PUNICODE_STRING;
     
    typedef NTSTATUS (WINAPI *fLdrLoadDll) //LdrLoadDll function prototype
    (
    IN PWCHAR PathToFile OPTIONAL,
    IN ULONG Flags OPTIONAL,
    IN PUNICODE_STRING ModuleFileName,
    OUT PHANDLE ModuleHandle
    );
     
    typedef VOID (WINAPI *fRtlInitUnicodeString) //RtlInitUnicodeString function prototype
    (
    PUNICODE_STRING DestinationString,
    PCWSTR SourceString
    );
     
    HMODULE hntdll;
    fLdrLoadDll _LdrLoadDll;
    fRtlInitUnicodeString _RtlInitUnicodeString;
     
    HMODULE LoadDll( LPCSTR lpFileName) -
    {
    if (hntdll == NULL) { hntdll = GetModuleHandleA("ntdll.dll"); }
    if (_LdrLoadDll == NULL) { _LdrLoadDll = (fLdrLoadDll) GetProcAddress ( hntdll, "LdrLoadDll"); }
    if (_RtlInitUnicodeString == NULL)
    { _RtlInitUnicodeString = (fRtlInitUnicodeString) GetProcAddress ( hntdll, "RtlInitUnicodeString"); }
    int StrLen = lstrlenA(lpFileName);
    BSTR WideStr = SysAllocStringLen(NULL, StrLen);
    MultiByteToWideChar(CP_ACP, 0, lpFileName, StrLen, WideStr, StrLen);
    UNICODE_STRING usDllName;
    _RtlInitUnicodeString(&usDllName, WideStr);
    SysFreeString(WideStr);
    HANDLE DllHandle;
    _LdrLoadDll(0, 0, &usDllName, &DllHandle);
    return (HMODULE)DllHandle;
    }
    typedef void (* _u)();
    int main()
    {
    HMODULE hMydll = LoadDll("C:\ww.dll");
    _u ss = (_u)GetProcAddress(hMydll,"tt");
    ss();
    return 0;
    }

  • 相关阅读:
    mysql的多表查询join
    JMeter源码集成到Eclipse
    jmeter关联 正则表达式提取器
    JMeter结果树响应数据中文乱码解决办法
    BZOJ 2080: [Poi2010]Railway 双栈排序
    BZOJ 4384: [POI2015]Trzy wieże
    BZOJ 4325: NOIP2015 斗地主
    BZOJ 1142: [POI2009]Tab
    第10章 内核同步方法
    第1章 Linux内核简介
  • 原文地址:https://www.cnblogs.com/iTaoqi/p/3465605.html
Copyright © 2011-2022 走看看