Перейти к содержанию
JustHack

Создаем мультихак, на примере игры Warface [2 часть]

Рекомендуемые сообщения

Продолжаем создавать наш noflash хак. В этой части, мы восстановим классы и напишем код. Открываем Reclass x32 и создаем новый класс.

Спойлер

20.jpg.dae2269918a175287cbd62a98a9ebdf7.jpg

 

Далее, переименовываем название класса в SSystemGlobalEnvironment. Сейчас наш класс очень мал. Нарастите класс до смещения 0x90, используя панель модификации.

Спойлер

21.jpg.a2fefcba887509477e8484ee4fc5fa95.jpg

 

Переходим на смещение 0x88, жмем по зеленой стрелке, выбираем тип - Указатель.

Спойлер

22.jpg.983443ce3768e20ab3a2c28ad8486661.jpg

 

Переименовываем указатель в p3DEngine. Ниже строчкой, переименовываем класс в I3DEngine. Спускаемся еще на строчку ниже и указываем тип VTable.

Спойлер

23.jpg.9a393037e15a6c4c62fb41d3881531e7.jpg

 

Открываем и видим, что функций всего 9, а нам нужно 143. Смещение 572 / 4 т.к. 32 битный процесс. Если бы был 64 битный, то делили бы на 8. 143 это и есть наша функция SetPostEffectParam()

Спойлер

15.thumb.jpg.8025c714b8e9589b5ce7853b8e6a96ba.jpg

 

Наращиваем количество функций, как делали с классом. Переходим на 143 функцию, двойной клик, вписываем саму функцию. И очищаем лишнее в классе. Далее жмем "генерировать" класс.

Спойлер

24.thumb.jpg.4933e68be12b88d40873bf72e6fc9006.jpg

 

Получаем готовый код класса, копируем в удобное место.

Спойлер

25.thumb.jpg.38a415a2895f1120f7a5605cbfa7b559.jpg

 

Открываем Visual Studio, создаем пустой проект, тип проекта "Библиотека DLL". Добавляем исходный файл main.cpp и заголовочный файл classes.h . В main.cpp подключаем 

#include <windows.h>
#include "classes.h"

Прописываем нашу функцию

void no_flash(){
  SSystemGlobalEnvironment* pEnv = (SSystemGlobalEnvironment*)(*(DWORD*)(0x18C23DC));
  while (true){
	if (!pEnv)continue;
        I3DEngine* p3DEngine = pEnv->p3DEngine;
    
	if (!p3DEngine)continue;
	p3DEngine->SetPostEffectParam("Flashbang_Time", 0, true);
  }
}

 

В точке входа пишем

CreateThread(0, 0, (LPTHREAD_START_ROUTINE)no_flash, 0, 0, 0);

Открываем файл classes.h и вставляем туда сгенерированный код из ReClass. В итоге файл classes.h будет выглядеть вот так

Спойлер

class SSystemGlobalEnvironment;
class I3DEngine;

class SSystemGlobalEnvironment
{
public:
char _0x0000[136];
	I3DEngine* p3DEngine; //0x0088 

};//Size=0x008C

class I3DEngine
{
public:
	virtual void Function0(); //
	virtual void Function1(); //
	virtual void Function2(); //
	virtual void Function3(); //
	virtual void Function4(); //
	virtual void Function5(); //
	virtual void Function6(); //
	virtual void Function7(); //
	virtual void Function8(); //
	virtual void Function9(); //
	virtual void Function10(); //
	virtual void Function11(); //
	virtual void Function12(); //
	virtual void Function13(); //
	virtual void Function14(); //
	virtual void Function15(); //
	virtual void Function16(); //
	virtual void Function17(); //
	virtual void Function18(); //
	virtual void Function19(); //
	virtual void Function20(); //
	virtual void Function21(); //
	virtual void Function22(); //
	virtual void Function23(); //
	virtual void Function24(); //
	virtual void Function25(); //
	virtual void Function26(); //
	virtual void Function27(); //
	virtual void Function28(); //
	virtual void Function29(); //
	virtual void Function30(); //
	virtual void Function31(); //
	virtual void Function32(); //
	virtual void Function33(); //
	virtual void Function34(); //
	virtual void Function35(); //
	virtual void Function36(); //
	virtual void Function37(); //
	virtual void Function38(); //
	virtual void Function39(); //
	virtual void Function40(); //
	virtual void Function41(); //
	virtual void Function42(); //
	virtual void Function43(); //
	virtual void Function44(); //
	virtual void Function45(); //
	virtual void Function46(); //
	virtual void Function47(); //
	virtual void Function48(); //
	virtual void Function49(); //
	virtual void Function50(); //
	virtual void Function51(); //
	virtual void Function52(); //
	virtual void Function53(); //
	virtual void Function54(); //
	virtual void Function55(); //
	virtual void Function56(); //
	virtual void Function57(); //
	virtual void Function58(); //
	virtual void Function59(); //
	virtual void Function60(); //
	virtual void Function61(); //
	virtual void Function62(); //
	virtual void Function63(); //
	virtual void Function64(); //
	virtual void Function65(); //
	virtual void Function66(); //
	virtual void Function67(); //
	virtual void Function68(); //
	virtual void Function69(); //
	virtual void Function70(); //
	virtual void Function71(); //
	virtual void Function72(); //
	virtual void Function73(); //
	virtual void Function74(); //
	virtual void Function75(); //
	virtual void Function76(); //
	virtual void Function77(); //
	virtual void Function78(); //
	virtual void Function79(); //
	virtual void Function80(); //
	virtual void Function81(); //
	virtual void Function82(); //
	virtual void Function83(); //
	virtual void Function84(); //
	virtual void Function85(); //
	virtual void Function86(); //
	virtual void Function87(); //
	virtual void Function88(); //
	virtual void Function89(); //
	virtual void Function90(); //
	virtual void Function91(); //
	virtual void Function92(); //
	virtual void Function93(); //
	virtual void Function94(); //
	virtual void Function95(); //
	virtual void Function96(); //
	virtual void Function97(); //
	virtual void Function98(); //
	virtual void Function99(); //
	virtual void Function100(); //
	virtual void Function101(); //
	virtual void Function102(); //
	virtual void Function103(); //
	virtual void Function104(); //
	virtual void Function105(); //
	virtual void Function106(); //
	virtual void Function107(); //
	virtual void Function108(); //
	virtual void Function109(); //
	virtual void Function110(); //
	virtual void Function111(); //
	virtual void Function112(); //
	virtual void Function113(); //
	virtual void Function114(); //
	virtual void Function115(); //
	virtual void Function116(); //
	virtual void Function117(); //
	virtual void Function118(); //
	virtual void Function119(); //
	virtual void Function120(); //
	virtual void Function121(); //
	virtual void Function122(); //
	virtual void Function123(); //
	virtual void Function124(); //
	virtual void Function125(); //
	virtual void Function126(); //
	virtual void Function127(); //
	virtual void Function128(); //
	virtual void Function129(); //
	virtual void Function130(); //
	virtual void Function131(); //
	virtual void Function132(); //
	virtual void Function133(); //
	virtual void Function134(); //
	virtual void Function135(); //
	virtual void Function136(); //
	virtual void Function137(); //
	virtual void Function138(); //
	virtual void Function139(); //
	virtual void Function140(); //
	virtual void Function141(); //
	virtual void Function142(); //
	virtual void SetPostEffectParam(const char *pParam, float fValue, bool bForceValue=false); //
};//Size=0x0004

 

Собираем проект. Внедряем в игру. Готово.

Спойлер

 

 

Изменено пользователем JustHack
  • Понравилось 1
  • Плюс 5

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
14 минут назад, JustHack сказал:

I3DEngine* p3DEngine = pEnv->p3DEngine; if (!p3DEngine)continue; p3DEngine->SetPostEffectParam("Flashbang_Time", 0, true);

А разве прототип виртуальной функции не нужно описывать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
14 минут назад, partoftheworlD сказал:

прототип виртуальной функции не нужно описывать?

Она описана в classes.h

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 29.06.2018 в 20:43, JustHack сказал:

SSystemGlobalEnvironment* pEnv = (SSystemGlobalEnvironment*)(*(DWORD*)(0x18C23DC));

Можно поплроьнее про этот участок

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, dscripterr сказал:

Можно поплроьнее про этот участок

 

http://bfy.tw/Ixde

  • Понравилось 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

×

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.