Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2011, 14:51   #1
logitech12
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 44
По умолчанию Скрытие dll

Всем добрый день! Мне нужно скрыть dll, чтобы её нигде не было видно и она не палилась сторонними программами.
поскольку я больше по части Delphi, а тут пришлось иметь дело с с++ то прошу вашей помощи
вот код dll



Код:
#include <windows.h>
#include <fstream>
#include <stdio.h>
using namespace std;

#include "main.h"
#include "d3d9.h"

//Globals
ofstream ofile;	
char dlldir[320];

bool WINAPI DllMain(HMODULE hDll, DWORD dwReason, PVOID pvReserved)
{
	if(dwReason == DLL_PROCESS_ATTACH)
	{
		DisableThreadLibraryCalls(hDll);

		GetModuleFileName(hDll, dlldir, 512);
		for(int i = strlen(dlldir); i > 0; i--) { if(dlldir[i] == '\\') { dlldir[i+1] = 0; break; } }
		ofile.open(GetDirectoryFile("ttnlog.txt"), ios::app);

		add_log("\n---------------------\nTatniumD3D Started...\n---------------------");

		HMODULE hMod = LoadLibrary("d3d9.dll");		
	
		oDirect3DCreate9 = (tDirect3DCreate9)DetourFunc(
			(BYTE*)GetProcAddress(hMod, "Direct3DCreate9"),
			(BYTE*)hkDirect3DCreate9, 
			5);

		return true;
	}

	else if(dwReason == DLL_PROCESS_DETACH)
	{
		add_log("---------------------\nTatniumD3D Exiting...\n---------------------\n");
		if(ofile) { ofile.close(); }
	}

    return false;
}

char *GetDirectoryFile(char *filename)
{
	static char path[320];
	strcpy(path, dlldir);
	strcat(path, filename);
	return path;
}

void *DetourFunc(BYTE *src, const BYTE *dst, const int len)
{
	BYTE *jmp = (BYTE*)malloc(len+5);
	DWORD dwback;

	VirtualProtect(src, len, PAGE_READWRITE, &dwback);

	memcpy(jmp, src, len);	jmp += len;
	
	jmp[0] = 0xE9;
	*(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5;

	src[0] = 0xE9;
	*(DWORD*)(src+1) = (DWORD)(dst - src) - 5;

	VirtualProtect(src, len, dwback, &dwback);

	return (jmp-len);
}

bool RetourFunc(BYTE *src, BYTE *restore, const int len)
{
	DWORD dwback;
		
	if(!VirtualProtect(src, len, PAGE_READWRITE, &dwback))	{ return false; }
	if(!memcpy(src, restore, len))							{ return false; }

	restore[0] = 0xE9;
	*(DWORD*)(restore+1) = (DWORD)(src - restore) - 5;

	if(!VirtualProtect(src, len, dwback, &dwback))			{ return false; }
	
	return true;
}	

void __cdecl add_log (const char *fmt, ...)
{
	if(ofile != NULL)
	{
		if(!fmt) { return; }

		va_list va_alist;
		char logbuf[256] = {0};

		va_start (va_alist, fmt);
		_vsnprintf (logbuf+strlen(logbuf), sizeof(logbuf) - strlen(logbuf), fmt, va_alist);
		va_end (va_alist);

		ofile << logbuf << endl;
	}
}


нашел на просторах интернета код для скрытия программы

Код:
#include
#include

BOOL (WINAPI *RegisterServiceProcess)(DWORD dwProcessId,DWORD dwType);

int main(){

HINSTANCE hKernel;
int i=1;
//Пытаемся получить идентификатор загруженной библиотеки
hKernel=LoadLibrary("KERNEL32.DLL");

if(hKernel){
//Идентификатор загруженной библиотеки был успешно получен
cout<<"Success load library kernel32.dll"<< endl;
RegisterServiceProcess=(int(__stdcall*)(DWORD,DWORD))GetProcAddress(hKernel,"RegisterServiceProcess");
if(RegisterServiceProcess){
//Указатель на функцию RegisterServiceProcess был
//успешно получен.
cout<<"Success to have address of the specified exported dynamic-link library (DLL) function"<< endl;
if(RegisterServiceProcess(GetCurrentProcessId(),i))
cout<<"Success registers the process as a service process"<< endl;
//Процесс был успешно зарегестрирован как сервис
}else{
//Указатель на функцию RegisterServiceProcess не
//был успешно получен.
cout<<"Failed to have address of the specified exported dynamic-link library (DLL) function"<< endl;
cin>>i;
return 0;
}
}else{
//Идентификатор загруженной библиотеки не был получен
cout<<"Failed load library kernel32.dll"<< endl;
cin>>i;
return 0;
}
cout<<"Registers the process as a service process:1"<< endl;
cout<<"Unregisters the process as a service process:0"<< endl;
cin>>i;
if (RegisterServiceProcess(GetCurrentProcessId(),i)){
cout<<"Success"<< endl;
}else{
cout<<"Failed"<< endl;
}
cin>>i;
return 0;
}

Буду очень признателен, если подскажете куда его вставить.
logitech12 вне форума Ответить с цитированием
Старый 08.06.2011, 14:56   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
RegisterServiceProcess
Во-первых это не сокрытие, во-вторых она не на всех ОС работает.
Сокрыть никак не получится. Все равно можно функциями низкого уровня посмотреть кто и что делает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.06.2011, 15:00   #3
logitech12
Пользователь
 
Регистрация: 07.04.2011
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Во-первых это не сокрытие, во-вторых она не на всех ОС работает.
Сокрыть никак не получится. Все равно можно функциями низкого уровня посмотреть кто и что делает.
намертво скрывать необязательно
мне лишь интересны варианты
logitech12 вне форума Ответить с цитированием
Старый 08.06.2011, 15:31   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну допустим есть в реестре ветка (APP_DLLs кажись), которая может запускать ДЛЛ вместе с входом в винду... Или через rundll32, но я точно не помню как.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пытаюсь понять код user32.dll и gdi32.dll Beermonza Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 43 13.07.2010 15:09
Ошибка при выхове функций Bass.dll из другой DLL SalasAndriy Общие вопросы Delphi 7 21.10.2009 23:36
Скрытие <> Яр|/||< (^_^) Общие вопросы Delphi 6 20.10.2009 17:17
Скрытие игры Олег86 Операционные системы общие вопросы 2 30.01.2009 15:35
скрытие программы filin2323 Общие вопросы Delphi 2 04.05.2008 19:38