PEB断链隐藏模块
作者:互联网
结构体介绍
_LDR_DATA_TABLE_ENTRY包含三个双向链表的结构体
1 typedef struct _PEB_LDR_DATA 2 { 3 ULONG Length; 4 BOOLEAN Initialized; 5 PVOID SsHandle; 6 LIST_ENTRY InLoadOrderModuleList; //模块加载顺序 7 LIST_ENTRY InMemoryOrderModuleList; //模块在内存中顺序 8 LIST_ENTRY InInitializationOrderModuleList; //模块初始化的顺序 9 }_PEB_LDR_DATA,*PPEB_LDR_DATA;
_LIST_ENTRY指向双向链表的结构体指针
1 typedef struct _LIST_ENTRY 2 { 3 struct _LIST_ENTRY *Flink; // 指向下一个节点的指针 4 struct _LIST_ENTRY *Blink; // 指向前一个节点的指针 5 } LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY;
_LDR_DATA_TABLE_ENTRY保存模块信息的结构体
1 typedef struct _LDR_DATA_TABLE_ENTRY 2 { 3 _LIST_ENTRY InLoadOrderLinks; 4 _LIST_ENTRY InMemoryOrderLinks; 5 _LIST_ENTRY InInitializationOrderLinks; 6 PVOID DllBase; 7 PVOID EntryPoint; //入口地址 8 ULONG SizeOfImage; 9 _UNICODE_STRING FullDllName; //所有模块名称 10 _UNICODE_STRING BaseDllName; //模块名称的base 11 ULONG Flags; 12 USHORT LoadCount; 13 USHORT TlsIndex; 14 union 15 { 16 _LIST_ENTRY HashLinks; 17 struct 18 { 19 PVOID SectionPointer; 20 ULONG CheckSum; 21 }; 22 }; 23 ULONG TimeDateStamp; 24 }_LDR_DATA_TABLE_ENTRY,*PLDR_DATA_TABLE_ENTRY;
断链隐藏指定模块
1 VOID BrokenHidden(HMODULE hModule) 2 { 3 PPEB_LDR_DATA pLdr; 4 PLDR_DATA_TABLE_ENTRY pLdrData; 5 PLIST_ENTRY pHead; 6 PLIST_ENTRY Cur; 7 8 9 _asm 10 { 11 mov eax,fs:[0x18] //指向TEB地址 12 mov eax, [eax+0x30] //指向PEB地址 13 mov ecx,[eax+0xc] ////指向PEB_LDR_DATA 地址 14 mov pLdr,ecx 15 } 16 pLdrData = (PLDR_DATA_TABLE_ENTRY)pLdr->InLoadOrderModuleList.Flink; 17 //pHead = pLdr; 18 pHead = &(pLdr->InLoadOrderModuleList); 19 Cur = pHead->Flink; 20 21 //循环遍历找到要隐藏的模块并隐藏 22 do 23 { 24 pLdrData = (PLDR_DATA_TABLE_ENTRY)Cur; 25 if (pLdrData->BaseAddress == hModule) 26 { 27 //printf("success!"); 28 pLdrData->InLoadOrderLinks.Blink->Flink = pLdrData->InLoadOrderLinks.Flink; 29 pLdrData->InInitializationOrderLinks.Blink->Flink=pLdrData->InInitializationOrderLinks.Flink; 30 pLdrData->InMemoryOrderLinks.Blink->Flink=pLdrData->InMemoryOrderLinks.Flink; 31 } 32 Cur = Cur->Flink; 33 } while (pHead != Cur); //判断链表是否遍历完 34 }
实现断链隐藏模块中,当用od加载时断链隐藏模块的效果还是不能实现。
标签:pLdrData,Flink,LIST,LDR,模块,ENTRY,断链,DATA,PEB 来源: https://www.cnblogs.com/flagby/p/16209955.html