【旧文章搬运】修改已加载模块的名称和路径

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

突然想起来的,修改PEB 能改掉EXE的路径,那么加载的DLL呢?

于是,马上动手实验了一下,遍历PEB中的模块列表双链,找到user32.dll后,修改其映像名和路径.具体信息在下面这个结构里:

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

代码比较简单,马上写完实验了一下,结果以前断链能过的全过了,myGOD~
也就不一一抓图上来了,贴个狙剑的图(好像狙剑总是自己从路径中按来截取文件名)

RKU的(彻底骗过):

一如既往的过不了IceSword,看来人家的ZwQueryVirtualMemory果然比较好使.
刚发现的,断链大法对RKU竟然也好使,呵呵(之前在RKU的进程菜单中没注意到"View Process's DLL"这一项,faint~)

要隐藏模块还是断链吧~

====================================================================================

后记:在调戏ARK的路上不断成长。。。

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