`
camel2099
  • 浏览: 45959 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

进程中dll模块的隐藏

阅读更多
为了避免自己的某个dll模块被别人检测出来,有时候希望在自己加载一个dll之后,或者将dll注入到他人进程之后避免被检查出来。这就需要想办法抹掉这个dll的模块信息,使得Toolhelp、psapi等枚举模块的API无法枚举它。

        我们可以先简单看看Windows枚举进程内模块的办法吧:

        首先是BOOL EnumProcessModules( HANDLE hProcess, HMODULE* lphModule, DWORD cb, LPDWORD lpcbNeeded);

        EnumProcessModules实际调用EnumProcessModulesInternal进行枚举。下面是vista下psapi的代码片断:

.text:514024B8                 push    ebx

.text:514024B9                 push    18h

.text:514024BB                 lea     eax, [ebp+stProcessBasicInfo]

.text:514024BE                 push    eax

.text:514024BF                 push    ebx      ;ebx=0

.text:514024C0                 push    [ebp+hProcess]

.text:514024C3                 call    ds:__imp__NtQueryInformationProcess@20 ; NtQueryInformationProcess(x,x,x,x,x)

.text:514024C9                 cmp     eax, ebx

.text:514024CB                 jge     short loc_514024E0

        调用NtQueryInformationProcess获得ProcessBasicInformation,在PROCESS_BASIC_INFORMATION结构中取得PEB地址。然后读取指定进程PEB中的数据

text:514024E0 loc_514024E0:                           ; CODE XREF: EnumProcessModulesInternal(x,x,x,x,x)+24j

.text:514024E0                 mov     eax, [ebp+stProcessBasicInfo.PebBaseAddress]

.text:514024E3                 cmp     eax, ebx

.text:514024E5                 jnz     short loc_514024EE

.text:514024E7                 push    8000000Dh

.text:514024EC                 jmp     short loc_514024CE

.text:514024EE ; —————————————————————————

.text:514024EE

.text:514024EE loc_514024EE:                           ; CODE XREF: EnumProcessModulesInternal(x,x,x,x,x)+3Ej

.text:514024EE                 push    ebx             ; lpNumberOfBytesRead

.text:514024EF                 push    4               ; nSize

.text:514024F1                 lea     ecx, [ebp+Ldr]

.text:514024F4                 push    ecx             ; lpBuffer

.text:514024F5                 add     eax, 0Ch

.text:514024F8                 push    eax             ; lpBaseAddress

.text:514024F9                 push    [ebp+hProcess] ; hProcess

.text:514024FC                 mov     edi, ds:__imp__ReadProcessMemory@20 ; ReadProcessMemory(x,x,x,x,x)

.text:51402502                 call    edi ; ReadProcessMemory(x,x,x,x,x) ; ReadProcessMemory(x,x,x,x,x)

这里读取的是PEB地址+0C处的四个字节。

通过WinDbg我们可以看看nt!_PEB的结构

0: kd> dt nt!_PEB

   +0×000 InheritedAddressSpace : UChar

   +0×001 ReadImageFileExecOptions : UChar

   +0×002 BeingDebugged    : UChar

   +0×003 SpareBool        : UChar

   +0×004 Mutant           : Ptr32 Void

   +0×008 ImageBaseAddress : Ptr32 Void

   +0x00c Ldr              : Ptr32 _PEB_LDR_DATA

  +0×010 ProcessParameters : Ptr32 _RTL_USER_PROCESS_PARAMETERS

……

+0C处是一个_PEB_LDR_DATA结构指针,里面包含了和LDR相关的一些数据,进程的模块链表就保存在Ldr中。下面是_PEB_LDR_DATA的结构:

0: kd> dt nt!_PEB_LDR_DATA

   +0×000 Length           : Uint4B

   +0×004 Initialized      : UChar

   +0×008 SsHandle         : Ptr32 Void

   +0x00c InLoadOrderModuleList : _LIST_ENTRY

   +0×014 InMemoryOrderModuleList : _LIST_ENTRY

   +0x01c InInitializationOrderModuleList : _LIST_ENTRY

   +0×024 EntryInProgress : Ptr32 Void

其中,InLoadOrderModuleList、InMemoryOrderModuleList
(来自:码农源库,http://www.vcclass.net/wordpress/?p=337)
分享到:
评论

相关推荐

    隐藏进程DLL

    标题 "隐藏进程DLL" 涉及到的是在Windows操作系统中如何通过动态链接库(DLL)来实现进程的隐藏技术,这种技术常用于系统优化、安全防护或恶意软件中。DLL是包含可由多个程序同时使用的代码和数据的库文件。在本案例...

    易语言DLL隐藏模块

    5. **lst**:标签中的"lst"可能指的是列表或列表操作,可能在处理DLL模块的参数或返回值时使用,例如,将多个数据项组合成一个列表传递给DLL,或者从DLL返回的结果分解成多个部分。 6. **安全与反调试**:为了...

    易语言隐藏所有进程模块

    通过PEB,可以获取到Kernel32.dll模块的基地址,这是Windows API的核心库,其中包含了大量系统级函数,如处理进程和内存管理的函数。 2. **子程序_获取模块地址**:这个子程序用于查找特定模块在进程内存空间中的...

    易语言隐藏所有进程模块源码

    "隐藏所有进程模块"是指在编程中实现一个功能,使得指定的进程或程序的所有模块(如DLL动态链接库)在系统中变得不可见,这通常涉及到系统级的操作和进程管理。 在易语言中实现这一功能,你需要了解以下几个关键...

    MyHider.zip_peb_peb模块隐藏_vad_模块隐藏_进程隐藏

    PEB模块隐藏是通过篡改PEB中的InInitializationOrderModuleList和InLoadOrderModuleList等链表,将恶意模块从进程的模块列表中移除,达到隐藏的目的。这种技术需要对Windows内核有深入理解,并且通常需要编写驱动...

    进程内存写入实现模块隐藏

    在实现模块隐藏时,我们可能会先使用`VirtualAlloc`在目标进程中分配一块内存,然后将模块的数据写入这段内存,以避免模块出现在正常的模块列表中。 **2. `WriteProcessMemory`函数**:此函数允许一个进程将数据...

    易语言实现DLL的注入 与 隐藏源码

    很多被Tx保护的进程被注入DLL后可以在进程里检测到,我们要做的就是注入完成把DLL文件给隐藏掉 从而实现躲避检测的效果,具体可以自己实践一下, 模块功能由 某论坛VIP模块中反编译的一部分功能,非常实用。...

    进程模块查看工具

    在Windows中,模块通常指的是进程地址空间中的代码和数据的集合,这可能包括可执行文件、动态链接库(DLL)或者其他类型的加载代码。DLL是一种共享库机制,它允许多个进程共享同一段代码和数据,从而节省内存并简化...

    ROOTKIT专题的研究

    5)进程中dll模块隐藏 6)更绝的隐藏进程中的dll模块,绕过IceSword的检测 7)端口隐藏 7。ring0中调用ring3程序 1) apc方式 2) deviceiocontrol 方式 8。进程线程监控 1)监控进程创建 2)杀线程 3)...

    完整版隐藏进程模块(2).rar

    2. **模块隐藏**:模块是可执行文件中的一部分,如DLL(动态链接库)。隐藏模块通常涉及在进程内存中动态加载和执行代码,不通过常规的加载方式。这可以防止反病毒软件通过检查进程模块列表来发现它们。 3. **API...

    卸载远程进程中的指定DLL文件

    此工具对于手工查杀病毒和木马非常有帮助,特别是当常规的安全软件无法清除那些隐藏在其他进程中的恶意DLL时。但需要注意的是,误操作可能导致正常程序的功能受到影响,因此在使用这类工具时必须谨慎。 总结来说,...

    DLL注入模块.rar

    但同时,它也被滥用在恶意软件中,例如键盘记录器、病毒和木马,通过隐藏自身并控制目标进程来躲避检测。 要防止DLL注入,可以采取以下措施: 1. 使用沙盒环境隔离敏感进程。 2. 对系统调用进行监控,及时发现异常...

    Rootkit的学习与研究

    5)进程中dll模块隐藏 6)更绝的隐藏进程中的dll模块,绕过IceSword的检测 7)端口隐藏 7。ring0中调用ring3程序 1) apc方式 2) deviceiocontrol 方式 8。进程线程监控 1)监控进程创建 2)杀线程 3)...

    Windows内核驱动EPROCESS遍历进程模块

    EPROCESS结构体在Windows内核中代表一个进程,而模块则是进程执行时加载的动态链接库(DLL)或其他可执行文件。 EPROCESS结构体是Windows内核中的核心数据结构之一,它包含了关于进程的各种信息,如进程ID、安全上...

    汇编隐藏dll模块支持库源码

    标题中的“隐藏dll模块”是指一种技术,它使得DLL在运行时不会显示在进程模块列表中,增加了程序的安全性和隐蔽性。这种技术通常用于防止恶意软件分析或逆向工程,因为隐藏的DLL不易被发现和跟踪。在汇编语言中实现...

    DLL的注入与隐藏.zip

    很多被Tx保护的进程被注入DLL后可以在进程里检测到,我们要做的就是注入完成把DLL文件给隐藏掉 从而实现躲避检测的效果,具体可以自己实践一下, 模块功能由 某论坛VIP模块中反编译的一部分功能,非常实用。...

    隐藏DLL进程的实例(用于木马后果自负)

    2. **命名空间隐藏**:恶意DLL可能会修改自己的模块名称,使其在系统调用中不易被发现。这种方法需要对PE(Portable Executable)文件结构有深入了解。 3. **权限提升**:恶意DLL可能试图获取更高的系统权限,以...

    隐藏模块.dll 来吧 来下载吧

    描述中的“谁都检测不了”暗示了这个隐藏模块可能采用了高级的隐藏技术,如代码混淆、进程注入、自定义加密解密算法等,使得常规的病毒扫描器和安全分析工具难以识别其真实意图。这在恶意软件开发中非常常见,尤其是...

    【专题四】Rootkit的学习与研究

    │ │ 5)进程中dll模块隐藏.doc │ │ │ ├─6)更绝的隐藏进程中的dll模块,绕过IceSword的检测 │ │ 6)更绝的隐藏进程中的dll模块,绕过IceSword的检测.doc │ │ │ └─7)端口隐藏 │ 7)端口隐藏....

Global site tag (gtag.js) - Google Analytics