【旧文章搬运】修改已加载模块的名称和路径
原文发表于百度空间,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的路上不断成长。。。