Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Dll Injection[Наш 1ый инжектор]

-

Общение разработчиков

- Программирование для Point Blank, общение и обсуждение разработок

Ответ
 
Опции темы
Старый 24.01.2013, 19:00   #1
 Разведчик
Аватар для FindYouBrain
 
FindYouBrain никому не известный тип
Регистрация: 24.01.2013
Сообщений: 19
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Dll Injection[Наш 1ый инжектор]

Наш 1-ый инжектор.


Предположим что мы хотим добавить какую то новую возможность в клиент от какой либо онлайн игры(в нашем случае это Point Blank), но не можем поскольку у нас нету исходного кода, и мы слишком ленивые чтобы добавить её при помощи изменения уже готово исполняемого файла. И Кажется ,что - у нас нету никакой возможности этого сделать.

Порывшись в MSDN мы можем обнаружить что у нас есть возможность редактировать исполняемый файл прямо в памяти - используя WriteProcessMemory и ReadProcessMemory. Это уже хоть что-то, но это не очень удобно в случае если нам надо вставить туда достаточно большой кусок кода и причём желательно на Java.

К счастью программисты из MusDie всё уже придумали за нас - дали нам возможность создавать треды в удалённом процессе при помощи CreateRemoteThread, а также дав нам функцию LoadLibrary(и FreeLibrary), принимающую всего 1 параметр(ровно столько должна принимать функция треда).


Итак - наш план действий:

1.Открыть или создать нужный процесс.
2.Выделить в нём кусочек памяти который будет содержать имя нашей Dll. *
3.Записать в этот кусочек памяти имя.
4.Создать удалённый тред в процессе с точкой старта равной LoadLibrary, 5.и в качестве параметра передать ей аддресс имени нашей библиотеки.
6.Дождаться завершения нашего треда.
7.Создать удалённый тред в процессе с точкой старта равной FreeLibrary, и 8.в качестве параметра передать ей аддресс имени нашей библиотеки.

* - Мы не можем оставить его в своей памяти, поскольку тогда чужой процесс не сможет его прочитать.

Вот,что копировать

Код:
#include <winsock2.h>
#pragma comment ( lib , "kernel32.lib" )
#pragma comment ( lib , "user32.lib" )
#pragma comment ( lib , "advapi32.lib" )
#pragma comment ( lib , "ws2_32.lib" )
//стандартный заголовок

/*Функция создания процесса
 * Cmd - строка содержащая название приложения которое надо запустить и параметры коммандной строки (Например: l2.exe -log)
 * Suspended - Если тру, тред процесса будет при создании процесса остановлен.
 * pi - Информация о процессе */

BOOL ProcessCreate(LPCSTR Cmd, BOOL Suspended, PROCESS_INFORMATION& pi)
{
	STARTUPINFO si;
	ZeroMemory(&si, sizeof(STARTUPINFO));
    si.cb = sizeof(STARTUPINFO);

    ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));

	if(!CreateProcessA(NULL, (LPSTR)Cmd, NULL, NULL, FALSE, (Suspended)?CREATE_SUSPENDED:0, NULL, NULL, &si, &pi))return TRUE;
	return TRUE;
}

/*Функция для выделения памяти в чужом процессе
 * Process - хэндл процесса
 * Size - сколько требуется выделить памяти */
LPVOID ProcessMemoryAlloc(HANDLE Process, UINT Size)
{
	return VirtualAllocEx(Process,NULL,Size,MEM_COMMIT,PAGE_READWRITE);
}

/*Функция для освобождения памяти
 * Process - хэндл процесса
 * Addr - адресс */
VOID ProcessMemoryFree(HANDLE Process, LPVOID Addr)
{
	VirtualFreeEx(Process, Addr, 0, MEM_DECOMMIT);
}

/*Функция для записи в память процесса
 * Process - хэндл процесса
 * Addr - адресс в памяте процесса
 * Data - указатель на данные для записи
 * Length - количество байт для записи */
BOOL ProcessWrite(HANDLE Process, LPVOID Addr, LPCVOID Data, UINT Length)
{
	DWORD written;
	if(!WriteProcessMemory(Process, Addr, Data, Length, &written))return FALSE;
	return written == Length;
}

/*Функция создающая удалённый трэд (ака CreateRemoteThread)
 * Process - хэндл процесса
 * ThreadProc - адресс точки входа треда в памяти процесса
 * Param - параметр который будет передан трэду
 * Result - место куда будет помещён результат выполнения трэда */
BOOL ProcessExecute(HANDLE Process, LPTHREAD_START_ROUTINE ThreadProc, LPVOID Param, LPDWORD Result)
{
	DWORD ThreadId; 
	HANDLE hThread = CreateRemoteThread(Process,NULL,0,ThreadProc, Param, 0, &ThreadId);
	WaitForSingleObject(hThread, INFINITE);
	GetExitCodeThread(hThread, Result);
	return TRUE;
}

/* Удалённая загрузка длльки
 * Process - хэндл процесса
 * DllPath - путь до длл
 * Length - длинна пути до длл, если равна 0 - функция сама воспользуется lstrlen и определит длинну */
HMODULE ProcessLoadLibrary(HANDLE Process,LPCSTR DllPath,UINT Length)
{	
	if(!Length)Length = lstrlen(DllPath) + 1;

	LPTHREAD_START_ROUTINE LoadLibraryAddr = (LPTHREAD_START_ROUTINE)GetProcAddress(LoadLibrary("kernel32.dll"),"LoadLibraryA");
	LPVOID MemAddr = ProcessMemoryAlloc(Process,Length);
	
	if(!MemAddr)return NULL;
	if(!ProcessWrite(Process, MemAddr, (LPCVOID)DllPath, Length))return NULL;

	DWORD Result;
	if(!ProcessExecute(Process, LoadLibraryAddr, MemAddr, &Result))return NULL;

	ProcessMemoryFree(Process, MemAddr);
	return (HMODULE)Result;
}

BOOL ProcessFreeLibrary(HANDLE Process,LPCSTR DllPath,UINT Length)
{	
	if(!Length)Length = lstrlen(DllPath) + 1;

	LPTHREAD_START_ROUTINE FreeLibraryAddr = (LPTHREAD_START_ROUTINE)GetProcAddress(LoadLibrary("kernel32.dll"),"FreeLibraryA");
	LPVOID MemAddr = ProcessMemoryAlloc(Process,Length);
	
	if(!MemAddr)return NULL;
	if(!ProcessWrite(Process, MemAddr, (LPCVOID)DllPath, Length))return FALSE;

	DWORD Result;
	if(!ProcessExecute(Process, FreeLibraryAddr, MemAddr, &Result))return FALSE;

	ProcessMemoryFree(Process, MemAddr);
	return TRUE;
}

char Program[] = "notepad.exe";
char Library[] = "D:\\fcc\\bin\\lib0.dll"; 
/*В данном случае приходится использовать абсолютный путь - поскольку notepad "не видит" lib.dll по относительному пути */

void Injector()
{
	PROCESS_INFORMATION pi;
	if(!ProcessCreate(Program, TRUE, pi))
	{
		MessageBox(0,"Cannot create process!","Error!",0);
		return;
	}
	if(!ProcessLoadLibrary(pi.hProcess,Library,0))
	{
		MessageBox(0,"Cannot load library!","Error!",0);
		return;
	}
	ProcessFreeLibrary(pi.hProcess,Library,0);
	ResumeThread(pi.hThread);
}


And Library Code :
Код:
#include <winsock2.h>
#pragma comment ( lib , "kernel32.lib" )
#pragma comment ( lib , "user32.lib" )
#pragma comment ( lib , "advapi32.lib" )
#pragma comment ( lib , "ws2_32.lib" )

HANDLE hThread;
DWORD ThreadId;

DWORD WINAPI ThreadProc(LPVOID p)
{
	MessageBox(0, "Injected =)", 0, 0);
	return TRUE;
}

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
	if(fdwReason == DLL_PROCESS_ATTACH)
	{
		hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, NULL, 0, &ThreadId);
		DisableThreadLibraryCalls(hinstDLL);
	}
	return TRUE;
}



Зачем я создавал новый тред в dll ? - По не понятным мне причинам из созданного нами треда .dll нельзя использовать никакие функции user32.dll.


Предупреждаю.Инжектор рабочий ,но палится Frost'ом,для этого нам нужно хукать Frost(как я делаю),и делать скрытые внедерения.

Последний раз редактировалось FindYouBrain; 24.01.2013 в 19:06.
  Ответить с цитированием
Старый 24.01.2013, 19:15   #2
 Разведчик
Аватар для diniska
 
diniska вызывает надежду
Регистрация: 15.10.2010
Сообщений: 6
Популярность: -49
Сказал(а) спасибо: 0
Поблагодарили 8 раз(а) в 3 сообщениях
 
По умолчанию Re: Dll Injection[Наш 1ый инжектор]

1 UP)
Красава ща попытаюся сделать )
  Ответить с цитированием
Старый 24.01.2013, 19:43   #3
 Разведчик
Аватар для microlab(1)
 
microlab(1) скоро будет известенmicrolab(1) скоро будет известенmicrolab(1) скоро будет известенmicrolab(1) скоро будет известенmicrolab(1) скоро будет известен
Регистрация: 06.09.2012
Сообщений: 23
Популярность: 488
Сказал(а) спасибо: 10
Поблагодарили 11 раз(а) в 10 сообщениях
 
По умолчанию Re: Dll Injection[Наш 1ый инжектор]

Не понятно это что длл а какже тогда инжектить ??
  Ответить с цитированием
Старый 24.01.2013, 19:44   #4
 Разведчик
Аватар для FindYouBrain
 
FindYouBrain никому не известный тип
Регистрация: 24.01.2013
Сообщений: 19
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Dll Injection[Наш 1ый инжектор]

Цитата:
Сообщение от microlab(1)Посмотреть сообщение
Не понятно это что длл а какже тогда инжектить ??

ТЫ инжектишь эту dll,она выделяет кусок памяти для нашей dll,потом инжектишь свою dll.

Последний раз редактировалось FindYouBrain; 24.01.2013 в 19:49.
  Ответить с цитированием
Старый 24.01.2013, 19:55   #5
 Разведчик
Аватар для microlab(1)
 
microlab(1) скоро будет известенmicrolab(1) скоро будет известенmicrolab(1) скоро будет известенmicrolab(1) скоро будет известенmicrolab(1) скоро будет известен
Регистрация: 06.09.2012
Сообщений: 23
Популярность: 488
Сказал(а) спасибо: 10
Поблагодарили 11 раз(а) в 10 сообщениях
 
По умолчанию Re: Dll Injection[Наш 1ый инжектор]

Цитата:
Сообщение от FindYouBrainПосмотреть сообщение
ТЫ инжектишь эту dll,она выделяет кусок памяти для нашей dll,потом инжектишь свою dll.

А не проще сразу заинжектить свою дл и не мучатся
инжекторов слава богу хватает смысл тогда от этой длл
  Ответить с цитированием
Старый 24.01.2013, 19:57   #6
 Разведчик
Аватар для FindYouBrain
 
FindYouBrain никому не известный тип
Регистрация: 24.01.2013
Сообщений: 19
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Dll Injection[Наш 1ый инжектор]

Я просто выложил код,для ознакомления.
  Ответить с цитированием
Старый 26.01.2013, 01:43   #7
Читер-спонсор
 Пехотинец
Аватар для DED_MA3AY
 
DED_MA3AY гордость нацииDED_MA3AY гордость нацииDED_MA3AY гордость нацииDED_MA3AY гордость нацииDED_MA3AY гордость нацииDED_MA3AY гордость нацииDED_MA3AY гордость нацииDED_MA3AY гордость нацииDED_MA3AY гордость нацииDED_MA3AY гордость нацииDED_MA3AY гордость нации
Регистрация: 26.05.2010
Сообщений: 89
Популярность: 3087
Сказал(а) спасибо: 3
Поблагодарили 666 раз(а) в 268 сообщениях
Отправить сообщение для DED_MA3AY с помощью Skype™
 
По умолчанию Re: Dll Injection[Наш 1ый инжектор]

Цитата:
Сообщение от FindYouBrainПосмотреть сообщение
Я просто выложил код,для ознакомления.

а смысл если данным способ инжекта ФРОСТ палит на ура и уже давно
  Ответить с цитированием
Старый 26.01.2013, 10:10   #8
 Разведчик
Аватар для FindYouBrain
 
FindYouBrain никому не известный тип
Регистрация: 24.01.2013
Сообщений: 19
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Dll Injection[Наш 1ый инжектор]

Цитата:
Сообщение от DED_MA3AYПосмотреть сообщение
а смысл если данным способ инжекта ФРОСТ палит на ура и уже давно

Вадим,с низу же написано,что для пб не подходит
А под примером,я предоставил игру Point Blank,только из-за того,что ничего в голову не лезло.
  Ответить с цитированием
Старый 26.01.2013, 10:47   #9
Заблокирован
 Рыцарь-капитан
Аватар для warl0ck
 
warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(warl0ck сломал счётчик популярности :(
Регистрация: 29.01.2010
Сообщений: 547
Популярность: 41279
Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
 
По умолчанию Re: Dll Injection[Наш 1ый инжектор]

Цитата:
Сообщение от FindYouBrainПосмотреть сообщение
Вадим,с низу же написано,что для пб не подходит
А под примером,я предоставил игру Point Blank,только из-за того,что ничего в голову не лезло.

char Program[] = "notepad.exe";
  Ответить с цитированием
Старый 26.01.2013, 11:37   #10
 Разведчик
Аватар для FindYouBrain
 
FindYouBrain никому не известный тип
Регистрация: 24.01.2013
Сообщений: 19
Популярность: 10
Сказал(а) спасибо: 3
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Re: Dll Injection[Наш 1ый инжектор]

Цитата:
Сообщение от warl0ckПосмотреть сообщение
char Program[] = "notepad.exe";

  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Помогите!] SQL Injection iguano Вопросы, просьбы, обсуждение 11 10.11.2012 15:50
[Помогите!] SQL injection carl1993 Общение и обсуждение, архив Lineage 2 3 19.05.2012 12:59
SQL injection с ЛК KillerTT Общение и обсуждение, архив Lineage 2 0 04.07.2011 00:32

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 16:54.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net