【旧文章搬运】修改PEB,断链隐藏模块成功

原文发表于百度空间,2008-7-26
==========================================================================

继续实践之前的想法,就是断掉如下这个结构中的双向链表:

typedef struct _LDR_MODULE
{
LIST_ENTRY          InLoadOrderModuleList;
LIST_ENTRY          InMemoryOrderModuleList; 
LIST_ENTRY          InInitializationOrderModuleList; 
void*               BaseAddress; 
void*               EntryPoint;   
ULONG               SizeOfImage;
UNICODE_STRING   FullDllName;
UNICODE_STRING      BaseDllName;
ULONG               Flags;
SHORT               LoadCount;
SHORT               TlsIndex;
HANDLE              SectionHandle;
ULONG               CheckSum;
ULONG               TimeDateStamp;
} LDR_MODULE, *PLDR_MODULE;

断开之后,凡使用Module32First()/Module32Next枚举模块的就找不到被隐藏的模块了.
不过这样隐藏好像效果太差,没什么实用价值,最起码比起修改映像名称的效果要差多了~
下面是用WSysCheck查看的效果图(隐藏了kernel32.dll):

断链之前:

断链之后:

原文地址:https://www.cnblogs.com/achillis/p/10179826.html