zoukankan      html  css  js  c++  java
  • 隐藏DLL

    先来推广一下QQ群:61618925。欢迎各位爱好编程的加入。

    在外挂或者病毒中,经常需要隐藏掉自己注入的DLL,以免被发现。下面就是一个隐藏DLL的通用模块,用的时候只需要加入到相关模块中即可。

    详细代码如下:

    #include <iostream>
    
    using namespace std;
    
    void HideModule(char *szModule)
    {
        DWORD *PEB = NULL;
        DWORD *Ldr = NULL;
        DWORD *Flink = NULL;
        DWORD *p = NULL;
        DWORD *BaseAddress = NULL;
        DWORD *FullDllName = NULL;
    
        //定位PEB
        __asm
        {
            //fs位置保存着teb
            //fs:[0x30]位置保存着peb
            mov eax,fs:[0x30]
            mov PEB,eax
        }
    
        HMODULE hMod = GetModuleHandleA(szModule);
    
        //得到LDR
        Ldr = *((DWORD **)((unsigned char *)PEB + 0x0c));
        //第二条链表
        Flink = *((DWORD **)((unsigned char *)Ldr + 0x0c));
        p = Flink;
    
        do 
        {
            BaseAddress = *((DWORD **)((unsigned char *)p + 0x18));
            FullDllName = *((DWORD **)((unsigned char *)p + 0x28));
    
            if ((DWORD*)hMod == BaseAddress)
            {
                **((DWORD **)(p + 1)) = (DWORD)*((DWORD **)p);
                *(*((DWORD **)p) + 1) = (DWORD)*((DWORD **)(p + 1));
                break;
            }
    
            p = *((DWORD **)p);
        } while (Flink != p);
    
        Flink = *((DWORD **)((unsigned char *)Ldr + 0x14));
        p = Flink;
        do 
        {
            BaseAddress = *((DWORD **)((unsigned char *)p + 0x10));
            FullDllName = *((DWORD **)((unsigned char *)p + 0x20));
            if (BaseAddress == (DWORD *)hMod)
            {
                **((DWORD **)(p + 1)) = (DWORD)*((DWORD **)p);
                *(*((DWORD **)p) + 1) = (DWORD)*((DWORD **)(p + 1));
                break;
            }
            p = *((DWORD **)p);
        } while (Flink != p);
    
        Flink = *((DWORD **)((unsigned char *)Ldr + 0x1c));
        p = Flink;
        do 
        {
            BaseAddress = *((DWORD **)((unsigned char *)p + 0x8));
            FullDllName = *((DWORD **)((unsigned char *)p + 0x18));
            if (BaseAddress == (DWORD *)hMod)
            {
                **((DWORD **)(p + 1)) = (DWORD)*((DWORD **)p);
                *(*((DWORD **)p) + 1) = (DWORD)*((DWORD **)(p + 1));
                break;
            }
            p = *((DWORD **)p);
        } while (Flink != p);
    }
    
    
    int main(int argc, char **argv)
    {
        HideModule("kernel32.dll");
        HideModule("ntdll.dll");
        HideModule("MSVCR90.dll");
        HideModule("KERNELBASE.dll");
        getchar();
        return 0;
    }

    用我之前博客中的进程管理器查看本进程的DLL,可以发现找不到相应的DLL。

  • 相关阅读:
    codevs 1450 xth 的旅行
    Loj #6287 诗歌
    Codeforces 323C Two permutations
    Spoj MKTHNUM
    [TJOI2015]弦论
    Spoj SUBLEX
    bzoj 4338: BJOI2015 糖果
    bzoj 3462: DZY Loves Math II
    bzoj 2843: 极地旅行社
    清北学堂模拟赛d4t5 b
  • 原文地址:https://www.cnblogs.com/qiyueliuguang/p/3631957.html
Copyright © 2011-2022 走看看