Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   Point Blank (Piercing Blow) (https://forum.zone-game.info/forumdisplay.php?f=204)
-   -   [Piercing Blow] PointBlank\PiercingBlow. CreateMutex (https://forum.zone-game.info/showthread.php?t=41657)

Awiion 07.11.2016 15:58

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

http://rgho.st/64cgb28qC/image.png
________________________________

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

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

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




Ну вот и все, теперь сколько душе угодно запустится клиентов.
Кому не нужен логин и пароль, Arguments за комментировать.

bola 07.11.2016 17:50

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

http://i.imgur.com/7N6JIFZ.png

http://i.imgur.com/cEDd9Li.png

n3k0nation 08.11.2016 07:51

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;
}


bola 09.11.2016 18:29

Re: PointBlank\PiercingBlow. CreateMutex
 
Цитата:

Сообщение от n3k0nation (Сообщение 420606)
Можно во много раз проще, без проблем с патчингом под изменение кода в клиенте. Достаточно убить глобальные мьютексы во всем клиенте, ибо они используются только для контроля запуска вторичных инстансов. Это можно сделать, например, так:
Код:

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#

Awiion 09.11.2016 20:18

Re: PointBlank\PiercingBlow. CreateMutex
 
bola,
Create a DLL, then inject into the process
(ddraw) startup.

bola 09.11.2016 20:49

Re: PointBlank\PiercingBlow. CreateMutex
 
Цитата:

Сообщение от bola (Сообщение 420670)
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

Anykia 20.11.2016 06:04

Re: PointBlank\PiercingBlow. CreateMutex
 
Цитата:

Сообщение от n3k0nation (Сообщение 420606)
Можно во много раз проще, без проблем с патчингом под изменение кода в клиенте. Достаточно убить глобальные мьютексы во всем клиенте, ибо они используются только для контроля запуска вторичных инстансов. Это можно сделать, например, так:
Код:

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)

http://i.imgur.com/y9edY4t.jpg

bola 20.11.2016 06:19

Re: PointBlank\PiercingBlow. CreateMutex
 
Цитата:

Сообщение от Anykia (Сообщение 421027)
Thank you!

(XignCode && CreateMutexA Patched)

http://i.imgur.com/y9edY4t.jpg

How the hell have you done this

n3k0nation 20.11.2016 08:09

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.

bola 20.11.2016 08:47

Re: PointBlank\PiercingBlow. CreateMutex
 
Цитата:

Сообщение от n3k0nation (Сообщение 421031)
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

bmzproject 26.12.2016 14:48

Re: PointBlank\PiercingBlow. CreateMutex
 
help me pintblank.exe I do not, please help me.
I have a file on you?

bola 26.12.2016 16:27

Re: PointBlank\PiercingBlow. CreateMutex
 
Цитата:

Сообщение от bmzproject (Сообщение 422217)
help me pintblank.exe I do not, please help me.
I have a file on you?

use createmutex method from nakonation, with Native Entry Point Injection from EasyHook source code doc

Код:

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;
}

you have to create a DLL with method that will be injected, the method above, and then a .exe file that will inject this DLL into Process, both examples are inside EasyHook documents

bmzproject 28.12.2016 20:26

Re: PointBlank\PiercingBlow. CreateMutex
 
http://messiah.m0nster.io/pb-dmutex.dll Is this right?
Injection start pointblank.exe ?


Цитата:

Сообщение от bola (Сообщение 422222)
use createmutex method from nakonation, with Native Entry Point Injection from EasyHook source code doc

Код:

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;
}

you have to create a DLL with method that will be injected, the method above, and then a .exe file that will inject this DLL into Process, both examples are inside EasyHook documents


PROGRAMMATOR 29.12.2016 11:38

Re: PointBlank\PiercingBlow. CreateMutex
 
Цитата:

Сообщение от bmzproject (Сообщение 422348)
Injection start pointblank.exe

Open pb.exe in CFF Explorer

http://image.zone-game.info/images/2016/12/29/foJiN.png

bmzproject 29.12.2016 18:34

Re: PointBlank\PiercingBlow. CreateMutex
 
PointBlank not work
Help me client PointBlank
[/I]
Цитата:

Сообщение от PROGRAMMATOR (Сообщение 422373)


Exile03 29.12.2016 18:42

Re: PointBlank\PiercingBlow. CreateMutex
 
i add same you talk PROGRAMMATOR but when i run client new .exe hook
he stop work
http://i.imgur.com/ZsLD9sU.png

PROGRAMMATOR 29.12.2016 21:05

Re: PointBlank\PiercingBlow. CreateMutex
 
Вложений: 1
Exile03, replace XIGNCODE\x3.xem

Exile03 29.12.2016 21:41

Re: PointBlank\PiercingBlow. CreateMutex
 
continue same error man i insert this file and run again crash

http://i.imgur.com/lYqDo5F.png

n3k0nation 29.12.2016 21:50

Re: PointBlank\PiercingBlow. CreateMutex
 
Exile03, try it and dont forget install ms redistributable 2012.

Exile03 29.12.2016 22:59

Re: PointBlank\PiercingBlow. CreateMutex
 
but this system programmator make work for all version i'm trying on client ongame
old interface

BallDev 15.03.2017 21:57

Re: PointBlank\PiercingBlow. CreateMutex
 
help me please.
Client Point Blank TAM version 38
https://i.imgur.com/Ir48lo6.jpg

0xByte 23.11.2019 06:30

Re: PointBlank\PiercingBlow. CreateMutex
 
Цитата:

Сообщение от bmzproject (Сообщение 422348)
http://messiah.m0nster.io/pb-dmutex.dll Is this right?
Injection start pointblank.exe ?

Link dead. :(

0xByte 28.11.2019 07:03

Re: PointBlank\PiercingBlow. CreateMutex
 
New link pls


Текущее время: 06:44. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot