- 20.06.2022
- 23 845
- 218
- 36
- Награды
- 10
- Пол
- Муж.
Репутация:
- Автор темы
- Администратор
- Модератор
- Команда форума
- #1
Опираясь на статью я разобрался как же все таки получать эти данные, ведь статья больше обобщенная.
У нас есть функция которая декриптит ответ от сервера посредством AES \uE2BC.\uE001, посмотрев как фукнция работает изнутри, можно заметить что она использует только static fields, и статические функции, так что класс в котором она вызывается можно не искать а просто в rcx запихать 0
Так же нам нужна декомпрессия, потому что зашифрованный запрос приходит закомпрессированный ZLIB, и в фукнции \uE2BC.\uE007 можно увидеть как в игре она декомпрессируется и выплевывает нашу расшифрованную строку.
Нам потребуется функция E001 и статик функция DecompressNonAlloc, а так же что бы наша E001 приняла наши данные, нужно сформировать mono_array.
С декриптом покончено, но что бы декриптить что то, это что то надо получить. А без правильно сформированного запроса мы не получим данные, которые надо декриптить.
запрос идет на ссылку
Проанализировав хедеры запроса продебажив UnityWebRequests.SetRequestHeader я нашел 5 необходимых хедеров.
так же в теле запроса должен быть JSON, с аккаунт айдишником
PHPSESSID можно получить вызвав \uE2C3.get_PhpSessionId, функция статическая, так что проблем с ней не возникнет.
accountId можно получить из самого игрока, ObservedPlayerView + 0x50, это unity_string*
на этом все.
У нас есть функция которая декриптит ответ от сервера посредством AES \uE2BC.\uE001, посмотрев как фукнция работает изнутри, можно заметить что она использует только static fields, и статические функции, так что класс в котором она вызывается можно не искать а просто в rcx запихать 0
Так же нам нужна декомпрессия, потому что зашифрованный запрос приходит закомпрессированный ZLIB, и в фукнции \uE2BC.\uE007 можно увидеть как в игре она декомпрессируется и выплевывает нашу расшифрованную строку.
Нам потребуется функция E001 и статик функция DecompressNonAlloc, а так же что бы наша E001 приняла наши данные, нужно сформировать mono_array.
C++:
unity_string get_decrypted_responce( char* data, int length )
{
auto mono_array_new = reinterpret_cast< __int64( * )( uintptr_t domain, uintptr_t byteclass, __int64 size ) >( mono_base + 0xB3E50 ); //B3E50
auto mono_domain = *( uintptr_t* ) ( mono_base + 0x499C78 );
auto mono_byte_class = *( uintptr_t* ) ( mono_base + 0x4A21B0 );
auto mono_array_addr_with_size = reinterpret_cast< uintptr_t ( * )( uintptr_t, int, __int64 ) > ( mono_base + 0xB39E0 );
auto decompress_no_alloc = reinterpret_cast< uintptr_t ( * )( uintptr_t array_address, int size, uintptr_t null ) >( decompress_zlib_address );
auto uE001 = reinterpret_cast< uintptr_t ( * )( uintptr_t cipherText, uintptr_t, unity_string* ) >( decrypt_address );
auto Crypted_array = mono_array_new ( mono_domain, mono_byte_class, length );//создаем array
LI_FN ( memcpy ).get ( )( ( void* ) mono_array_addr_with_size ( Crypted_array, sizeof ( uint8_t ), 0 ), data, length );
unity_string crypt = unity_string(xorstr_(L"aes"));
uintptr_t result = uE001 ( 0, Crypted_array, &crypt );
uintptr_t result_text = decompress_no_alloc ( result, data, 0 );
return (unity_string)result_text;
}
С декриптом покончено, но что бы декриптить что то, это что то надо получить. А без правильно сформированного запроса мы не получим данные, которые надо декриптить.
запрос идет на ссылку
Проанализировав хедеры запроса продебажив UnityWebRequests.SetRequestHeader я нашел 5 необходимых хедеров.
Код:
User-Agent: UnityPlayer/2019.4.39f1 (UnityWebRequest/1.0, libcurl/7.80.0-DEV)
Content-Type: application/json
App-Version: EFT Client 0.14.6.0.29862
GClient-RequestId: 24 (не особо важен но я без него иногда получал не валид ответ)
Cookie: PHPSESSID=вашphpsessid
так же в теле запроса должен быть JSON, с аккаунт айдишником
JSON:
{"accountId":"айди"}
PHPSESSID можно получить вызвав \uE2C3.get_PhpSessionId, функция статическая, так что проблем с ней не возникнет.
accountId можно получить из самого игрока, ObservedPlayerView + 0x50, это unity_string*
на этом все.
Последние темы в этом разделе:
- [Udemy] Paul Chin - Гейм Хакинг: Основы взлома игр с Cheat Engine (2021)
- [Infinite Skills] Реверс-инжиниринг и разработка эксплойтов. Часть 1
- Скрипт Лоадер [Key,UID,Auth - System]
- Скрипт Hwid Checker + анимации + ключ к Hwid + сброс Hwid
- Скрипт Hwid Checker + ключ привязка к Hwid + отправка в телеграм
- Скрипт Hwid Checker
- Приватный Курс по реверс-инжирингу - Курс от colby57
- Курс по реверс-инжирингу - Создание читов для игр
- Как создать chams в Unity
- Как работает ESP в читах