Скрываем ВХ От Фроста(Видеогайд)

  • Для просмотра чата и остального функционала вам нужно авторизоваться или пройти регистрацию!
Статус
В этой теме нельзя размещать новые ответы.

Mr.ToWa

Продвинутый пользователь
Original poster
Дек 13, 2011
216
3
541
Доброго Времени суток)
Сейчас хочу вам представить свою тему, и научить вас прятаться от фроста/dgs
Что нам для этого понадобиться:
• Свой исходник ВХ.
• Cloaking
Код:
    #include 
#include 
#include 
#include 


#pragma comment(lib, "shlwapi.lib")

#define UPPERCASE(x) if((x) >= 'a' && (x) Flink = (x).Flink;  (x).Flink->Blink = (x).Blink;

#pragma pack(push, 1)

typedef struct _UNICODE_STRING {
USHORT  Length;
USHORT  MaximumLength;
PWSTR  Buffer;
} UNICODE_STRING, *PUNICODE_STRING;

typedef struct _ModuleInfoNode
{
LIST_ENTRY LoadOrder;
LIST_ENTRY InitOrder;
LIST_ENTRY MemoryOrder;
HMODULE baseAddress;      //   Base address AKA module handle
unsigned long entryPoint;
unsigned int size;         //   Size of the modules image
UNICODE_STRING fullPath;
UNICODE_STRING name;
unsigned long flags;
unsigned short LoadCount;
unsigned short TlsIndex;
LIST_ENTRY HashTable;   //   A linked list of any other modules that have the same first letter
unsigned long timestamp;
} ModuleInfoNode, *pModuleInfoNode;

typedef struct _ProcessModuleInfo
{
unsigned int size;         //   Size of a ModuleInfo node?
unsigned int initialized;
HANDLE SsHandle;
LIST_ENTRY LoadOrder;
LIST_ENTRY InitOrder;
LIST_ENTRY MemoryOrder;
} ProcessModuleInfo, *pProcessModuleInfo;


#pragma pack(pop)

bool CloakDll_stub(HMODULE);
void CD_stubend();

bool CloakDll(char *, char *);
unsigned long GetProcessIdFromProcname(char *);
HMODULE GetRemoteModuleHandle(unsigned long, char *);


int main(int argc, char **argv)
{
CloakDll("notepad.exe", "kernel32.dll");
return 0;
}

bool CloakDll(char *process, char *dllName)
{
PathStripPath(dllName);

unsigned long procId;
procId = GetProcessIdFromProcname(process);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, procId);

//   Calculate the length of the stub by subtracting it's address
//   from the beginning of the function directly ahead of it.
//
//   NOTE: If the compiler compiles the functions in a different
//   order than they appear in the code, this will not work as
//   it's supposed to.  However, most compilers won't do that.
unsigned int stubLen = (unsigned long)CD_stubend - (unsigned long)CloakDll_stub;

//   Allocate space for the CloakDll_stub function
void *stubAddress = VirtualAllocEx(hProcess,
NULL,
stubLen,
MEM_RESERVE | MEM_COMMIT,
PAGE_EXECUTE_READWRITE);

//   Write the stub's code to the page we allocated for it
WriteProcessMemory(hProcess, stubAddress, CloakDll_stub, stubLen, NULL);

HMODULE hMod = GetRemoteModuleHandle(procId, dllName);

//   Create a thread in the remote process to execute our code
CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)stubAddress, hMod, 0, NULL);

//   Clean up after ourselves, so as to leave as little impact as possible
//   on the remote process
VirtualFreeEx(hProcess, stubAddress, stubLen, MEM_RELEASE);
return true;
}

bool CloakDll_stub(HMODULE hMod)
{
ProcessModuleInfo *pmInfo;
ModuleInfoNode *module;

_asm
{
mov eax, fs:[18h]      // TEB
mov eax, [eax + 30h]   // PEB
mov eax, [eax + 0Ch]   // PROCESS_MODULE_INFO
mov pmInfo, eax
}

module = (ModuleInfoNode *)(pmInfo->LoadOrder.Flink);

while(module->baseAddress && module->baseAddress != hMod)
module = (ModuleInfoNode *)(module->LoadOrder.Flink);

if(!module->baseAddress)
return false;

//   Remove the module entry from the list here
///////////////////////////////////////////////////    
//   Unlink from the load order list
UNLINK(module->LoadOrder);
//   Unlink from the init order list
UNLINK(module->InitOrder);
//   Unlink from the memory order list
UNLINK(module->MemoryOrder);
//   Unlink from the hash table
UNLINK(module->HashTable);

//   Erase all traces that it was ever there
///////////////////////////////////////////////////

//   This code will pretty much always be optimized into a rep stosb/stosd pair
//   so it shouldn't cause problems for relocation.
//   Zero out the module name
memset(module->fullPath.Buffer, 0, module->fullPath.Length);
//   Zero out the memory of this module's node
memset(module, 0, sizeof(ModuleInfoNode));    

return true;
}

__declspec(naked) void CD_stubend() { }

unsigned long GetProcessIdFromProcname(char *procName)
{
PROCESSENTRY32 pe;
HANDLE thSnapshot;
BOOL retval, ProcFound = false;

thSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);

if(thSnapshot == INVALID_HANDLE_VALUE)
{
MessageBox(NULL, "Error: unable to create toolhelp snapshot", "Loader", NULL);
return false;
}

pe.dwSize = sizeof(PROCESSENTRY32);

retval = Process32First(thSnapshot, &pe);

while(retval)
{
if(StrStrI(pe.szExeFile, procName) )
{
ProcFound = true;
break;
}

retval    = Process32Next(thSnapshot,&pe);
pe.dwSize = sizeof(PROCESSENTRY32);
}

return pe.th32ProcessID;
}

HMODULE GetRemoteModuleHandle(unsigned long pId, char *module)
{
MODULEENTRY32 modEntry;
HANDLE tlh = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pId);

modEntry.dwSize = sizeof(MODULEENTRY32);
Module32First(tlh, &modEntry);

do
{
if(!stricmp(modEntry.szModule, module))
return modEntry.hModule;
modEntry.dwSize = sizeof(MODULEENTRY32);
}
while(Module32Next(tlh, &modEntry));

return NULL;
}


И так приступим!
Видео

"Код для поиска в исходнике"
Код:
HRESULT WINAPI EndScene
Функция выгрузки dll
Код:
if(anhuck) //huck = LoadLibrary("frostcollector.dll");
//else  
{
//FreeLibrary((HMODULE) huck);//FreeLibrary(huck);
GetModuleHandleA("frostcollector.dll");
FreeLibrary((HMODULE)"frostcollector.dll");
DeleteFile("frostcollector.dll");
//-----------------------------------
GetModuleHandleA("frostUpdater.dll");
FreeLibrary((HMODULE)"frostUpdater.dll");
DeleteFile("frostUpdater.dll");
//-----------------------------------
GetModuleHandleA("bugtrap.dll");
FreeLibrary((HMODULE)"bugtrap.dll");
DeleteFile("bugtrap.dll");
}
Думаю по видеогайду всё будет понятно)
З.ы.. Копипаст.....
 
Это хайд длл ... От фроста конечно.
 
Если бы я смог запилить без ошибки у мя ща былобы свое ВХ...
 
Функция выгрузки dll
Код:
if(anhuck) //huck = LoadLibrary("frostcollector.dll");
//else  
{
//FreeLibrary((HMODULE) huck);//FreeLibrary(huck);
GetModuleHandleA("frostcollector.dll");
FreeLibrary((HMODULE)"frostcollector.dll");
DeleteFile("frostcollector.dll");
//-----------------------------------
GetModuleHandleA("frostUpdater.dll");
FreeLibrary((HMODULE)"frostUpdater.dll");
DeleteFile("frostUpdater.dll");
//-----------------------------------
GetModuleHandleA("bugtrap.dll");
FreeLibrary((HMODULE)"bugtrap.dll");
DeleteFile("bugtrap.dll");
}

это не работает сам пробовал и не фига!!!!
 
Тему оффаю .. Так-Как- Тема Не актуальна
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу