[Piercing Blow] PointBlank\PiercingBlow. CreateMutex - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Point Blank (Piercing Blow)

Point Blank (Piercing Blow)
Общие вопросы по написанию эмулятора. General questions on developing emulator. При поддержке: Lucera 2 - разработка Java Interlude

Ответ
Опции темы
Непрочитано 07.11.2016, 15:58   #1
Аватар для Awiion

Автор темы (Топик Стартер) PointBlank\PiercingBlow. CreateMutex

Всем привет,
Хочу показать, как избавиться от проверки PointBlank\PiercingBlow (CreateMutex)


________________________________

1. Понадобится PETools.
2. Понадобится Ida Pro\Free.
3. Понадобится Клиент игры.
_________________________
Инструкция:
Свернуть ↑Развернуть ↓

____________________________________
Теперь нужно написать, инжект кода.
Пример приведу на с#, дальше сами хоть с++.

Клац:
Свернуть ↑Развернуть ↓




Ну вот и все, теперь сколько душе угодно запустится клиентов.
Кому не нужен логин и пароль, Arguments за комментировать.
__________________
Разработка Emu: PiercingBlow 90%, APB Reloaded 100%.
Самый действенный инструмент для самообучения - грабли.
Awiion вне форума Отправить сообщение для Awiion с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 07.11.2016, 17:50   #2
Аватар для bola
Пользователь

По умолчанию Re: PointBlank\PiercingBlow. CreateMutex

first of all thank you so much for spreading this knowledge.
for a moment i still have a issue with piercing blow, with dumped code or original .exe file
i cannot find the call for a mutex or a jnz instruction, in dump even i can find access to string


again, tyvm for this thread

obs: xigncode already bypassed



bola вне форума Ответить с цитированием
Непрочитано 08.11.2016, 07:51   #3
Аватар для n3k0nation
Antihero

По умолчанию Re: PointBlank\PiercingBlow. CreateMutex

Можно во много раз проще, без проблем с патчингом под изменение кода в клиенте. Достаточно убить глобальные мьютексы во всем клиенте, ибо они используются только для контроля запуска вторичных инстансов. Это можно сделать, например, так:
Код:
DWORD WINAPI SetupKernel(PVOID) {
	PVOID lib;
	while((lib = GetModuleHandleW(L"kernel32.dll")) == nullptr) {
		Sleep(10);
	}

	pHookCreateMutex = new Hook(wstring(L"kernel32.dll"), string("CreateMutexA"), &hCreateMutex);
	pHookCreateMutex->SetFlushCache(true);
	adrCreateMutex = reinterpret_cast<DWORD>(pHookCreateMutex->GetFunctionAddress());
	pHookCreateMutex->Apply();
	return 0;
}
Код:
HANDLE WINAPI hCreateMutex(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCSTR lpName) {
	const char* filter = "Global";
	if(strncmp(lpName, filter, strlen(filter)) != 0) {
		//try call original kernel function from virtual dll stub (minwin kernel)
		typedef HANDLE (*TCreateMutexA)(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR);
		TCreateMutexA oCreateMutex = (TCreateMutexA)GetProcAddress(GetModuleHandleA("api-ms-win-core-synch-l1-1-0.dll"), "CreateMutexA");
		return oCreateMutex;
	}

	return nullptr;
}
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 09.11.2016, 18:29   #4
Аватар для bola
Пользователь

По умолчанию Re: PointBlank\PiercingBlow. CreateMutex

Цитата:
Сообщение от n3k0nation Посмотреть сообщение
Можно во много раз проще, без проблем с патчингом под изменение кода в клиенте. Достаточно убить глобальные мьютексы во всем клиенте, ибо они используются только для контроля запуска вторичных инстансов. Это можно сделать, например, так:
Код:
DWORD WINAPI SetupKernel(PVOID) {
	PVOID lib;
	while((lib = GetModuleHandleW(L"kernel32.dll")) == nullptr) {
		Sleep(10);
	}

	pHookCreateMutex = new Hook(wstring(L"kernel32.dll"), string("CreateMutexA"), &hCreateMutex);
	pHookCreateMutex->SetFlushCache(true);
	adrCreateMutex = reinterpret_cast<DWORD>(pHookCreateMutex->GetFunctionAddress());
	pHookCreateMutex->Apply();
	return 0;
}
Код:
HANDLE WINAPI hCreateMutex(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCSTR lpName) {
	const char* filter = "Global";
	if(strncmp(lpName, filter, strlen(filter)) != 0) {
		//try call original kernel function from virtual dll stub (minwin kernel)
		typedef HANDLE (*TCreateMutexA)(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR);
		TCreateMutexA oCreateMutex = (TCreateMutexA)GetProcAddress(GetModuleHandleA("api-ms-win-core-synch-l1-1-0.dll"), "CreateMutexA");
		return oCreateMutex;
	}

	return nullptr;
}

can i have a better explanation about this code usage, sorry i'm not a c++ Expert, even a c++ coder, i'm just a Java coder and know a bit of c#
bola вне форума Ответить с цитированием
Непрочитано 09.11.2016, 20:18   #5
Аватар для Awiion

Автор темы (Топик Стартер) Re: PointBlank\PiercingBlow. CreateMutex

bola,
Create a DLL, then inject into the process
(ddraw) startup.
__________________
Разработка Emu: PiercingBlow 90%, APB Reloaded 100%.
Самый действенный инструмент для самообучения - грабли.
Awiion вне форума Отправить сообщение для Awiion с помощью Skype™ Ответить с цитированием
Непрочитано 09.11.2016, 20:49   #6
Аватар для bola
Пользователь

По умолчанию Re: PointBlank\PiercingBlow. CreateMutex

Цитата:
Сообщение от bola Посмотреть сообщение
can i have a better explanation about this code usage, sorry i'm not a c++ Expert, even a c++ coder, i'm just a Java coder and know a bit of c#
Awiion i have created a DLL already, but as example, pHookCreateMutex is undefined,

new Hook ???

many things are unknown for me

and here comes the song...
Hello Darkness my Old friend
bola вне форума Ответить с цитированием
Непрочитано 20.11.2016, 06:04   #7
Пользователь

По умолчанию Re: PointBlank\PiercingBlow. CreateMutex

Цитата:
Сообщение от n3k0nation Посмотреть сообщение
Можно во много раз проще, без проблем с патчингом под изменение кода в клиенте. Достаточно убить глобальные мьютексы во всем клиенте, ибо они используются только для контроля запуска вторичных инстансов. Это можно сделать, например, так:
Код:
DWORD WINAPI SetupKernel(PVOID) {
	PVOID lib;
	while((lib = GetModuleHandleW(L"kernel32.dll")) == nullptr) {
		Sleep(10);
	}

	pHookCreateMutex = new Hook(wstring(L"kernel32.dll"), string("CreateMutexA"), &hCreateMutex);
	pHookCreateMutex->SetFlushCache(true);
	adrCreateMutex = reinterpret_cast<DWORD>(pHookCreateMutex->GetFunctionAddress());
	pHookCreateMutex->Apply();
	return 0;
}
Код:
HANDLE WINAPI hCreateMutex(LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner, LPCSTR lpName) {
	const char* filter = "Global";
	if(strncmp(lpName, filter, strlen(filter)) != 0) {
		//try call original kernel function from virtual dll stub (minwin kernel)
		typedef HANDLE (*TCreateMutexA)(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR);
		TCreateMutexA oCreateMutex = (TCreateMutexA)GetProcAddress(GetModuleHandleA("api-ms-win-core-synch-l1-1-0.dll"), "CreateMutexA");
		return oCreateMutex;
	}

	return nullptr;
}
Thank you!

(XignCode && CreateMutexA Patched)

Anykia вне форума Отправить сообщение для Anykia с помощью Skype™ Ответить с цитированием
Непрочитано 20.11.2016, 06:19   #8
Аватар для bola
Пользователь

По умолчанию Re: PointBlank\PiercingBlow. CreateMutex

Цитата:
Сообщение от Anykia Посмотреть сообщение
Thank you!

(XignCode && CreateMutexA Patched)

How the hell have you done this
bola вне форума Ответить с цитированием
Непрочитано 20.11.2016, 08:09   #9
Аватар для n3k0nation
Antihero

По умолчанию Re: PointBlank\PiercingBlow. CreateMutex

bola, i share only code snippet. Your can use any code with splice hook implement.
I compile my dll for point blank (wo host/port change and etc, only mutex processing), take it and dont worry My dll have public export function: EmptyExport, u can add it into game PE as imported dll.

P.S: my dll needs minwin windows update (started from Windows Vista) and of course ms redistributable.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 20.11.2016, 08:47   #10
Аватар для bola
Пользователь

По умолчанию Re: PointBlank\PiercingBlow. CreateMutex

Цитата:
Сообщение от n3k0nation Посмотреть сообщение
bola, i share only code snippet. Your can use any code with splice hook implement.
I compile my dll for point blank (wo host/port change and etc, only mutex processing), take it and dont worry My dll have public export function: EmptyExport, u can add it into game PE as imported dll.

P.S: my dll needs minwin windows update (started from Windows Vista) and of course ms redistributable.
Please God bless you, tyvm
bola вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PointBlank Server ArxNetwork Рынок / Marketplace 9 15.05.2016 22:35
PointBlank серверный пакет SM_ROOM_PLAYER_ENTER slawa560 Программирование / Programming 1 10.11.2014 12:10
[Куплю] Пакеты PointBlank grizly Рынок / Marketplace 0 01.06.2014 10:28


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 15:38. Часовой пояс GMT +3.

Вверх