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

Создаем internal мультихак, на примере CryEngine3 SDK [ReClass]


JustHack

4 316 просмотров

1.thumb.png.5eebdd2c57b7d173efcb983c1dc80bcd.png

 

Продолжаем создавать наш 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 noFlash() 
{
  while(true)
  {
    SSystemGlobalEnvironment* pEnv = (SSystemGlobalEnvironment*)(*(DWORD*)(0x18C23DC));
    if(!pEnv)continue; 
    I3DEngine* p3DEngine = pEnv->p3DEngine; 
    if(!p3DEngine)continue;
    p3DEngine->SetPostEffectParam("Flashbang_Time", 0, true); 
  } 
}

 

 

В точке входа создаем поток

CreateThread(0, 0, (LPTHREAD_START_ROUTINE)noFlash, 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

 

 

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

 

Спойлер

 

 

Продолжение следует...

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

0 Комментариев


Рекомендуемые комментарии

Комментариев нет

Гость
Эта запись блога заблокирована для комментирования.
×
×
  • Создать...

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

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