Antonshka Опубликовано 11 марта, 2019 Автор Поделиться Опубликовано 11 марта, 2019 local x = 0 while x ~= 2684354560 do -- 2684354560 = A0000000 x = x + 1 end print(x) ~ 58 секунд до напечатания "x". Луа не подходит. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 11 марта, 2019 Поделиться Опубликовано 11 марта, 2019 5 минут назад, Antonshka сказал: ~ 58 секунд до напечатания "x". Луа не подходит. Языки с динамической типизацией сразу надо отбросить, на Python это занимало около 1-2 минут. Ссылка на комментарий Поделиться на другие сайты Поделиться
Antonshka Опубликовано 11 марта, 2019 Автор Поделиться Опубликовано 11 марта, 2019 Итог тестирования многопоточности: 19 скриптов АА, в каждом свой отдельный поток (createthread(name)) - поиск для (float)152.4550018 = ~3 секунды. 1 скрипт АА с одним потоком - результат почти тот же. 19 скриптов дали прирост, но не большой. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 марта, 2019 Поделиться Опубликовано 11 марта, 2019 6 минут назад, Antonshka сказал: 19 скриптов дали прирост, но не большой. Вот более быстрый поиск, но ограничение только для целых значений частоты вращения ((float)1,.........,(float)100,.............,(Float)1000 и т.д.) Спойлер { Game : Tutorial-i386.exe Version: Date : 2019-03-09 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(INJECT,Tutorial-i386.exe,81 BB 80 04 00 00 E8 03 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) label(adres) registersymbol(adres) label(Value_EAX) registersymbol(Value_EAX) label(Value) label(Podbor) registersymbol(Value) registersymbol(INJECT) newmem: cmp [Value_EAX],0 jne code push eax push ebx push ecx mov ecx,[Value] mov ebx,ecx imul eax,ebx,6B Podbor: imul ebx,eax,B05C6C43 cmp ebx,ecx je @f add eax,10000000 jmp Podbor @@: mov [adres],eax mov [Value_EAX],ebx pop ecx pop ebx pop eax code: cmp [ebx+00000480],000003E8 jmp return adres: dd 0 Value_EAX: dd 0 Value: dd 0 INJECT: jmp newmem db 90 90 90 90 90 return: [DISABLE] INJECT: db 81 BB 80 04 00 00 E8 03 00 00 unregistersymbol(Value) unregistersymbol(Value_EAX) unregistersymbol(adres) unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "Tutorial-i386.exe"+24073 "Tutorial-i386.exe"+24061: C9 - leave "Tutorial-i386.exe"+24062: C3 - ret "Tutorial-i386.exe"+24063: 00 00 - add [eax],al "Tutorial-i386.exe"+24065: 00 00 - add [eax],al "Tutorial-i386.exe"+24067: 00 00 - add [eax],al "Tutorial-i386.exe"+24069: 00 00 - add [eax],al "Tutorial-i386.exe"+2406B: 00 00 - add [eax],al "Tutorial-i386.exe"+2406D: 00 00 - add [eax],al "Tutorial-i386.exe"+2406F: 00 53 89 - add [ebx-77],dl "Tutorial-i386.exe"+24072: C3 - ret // ---------- INJECTING HERE ---------- "Tutorial-i386.exe"+24073: 81 BB 80 04 00 00 E8 03 00 00 - cmp [ebx+00000480],000003E8 // ---------- DONE INJECTING ---------- "Tutorial-i386.exe"+2407D: 75 2C - jne Tutorial-i386.exe+240AB "Tutorial-i386.exe"+2407F: 8B 83 68 04 00 00 - mov eax,[ebx+00000468] "Tutorial-i386.exe"+24085: B2 01 - mov dl,01 "Tutorial-i386.exe"+24087: 8B 8B 68 04 00 00 - mov ecx,[ebx+00000468] "Tutorial-i386.exe"+2408D: 8B 09 - mov ecx,[ecx] "Tutorial-i386.exe"+2408F: FF 91 20 02 00 00 - call dword ptr [ecx+00000220] "Tutorial-i386.exe"+24095: 8B 83 78 04 00 00 - mov eax,[ebx+00000478] "Tutorial-i386.exe"+2409B: B2 00 - mov dl,00 "Tutorial-i386.exe"+2409D: 8B 8B 78 04 00 00 - mov ecx,[ebx+00000478] "Tutorial-i386.exe"+240A3: 8B 09 - mov ecx,[ecx] } 9 минут назад, Antonshka сказал: тестирования Потесть у себя на скорость пжлста. Ссылка на комментарий Поделиться на другие сайты Поделиться
Antonshka Опубликовано 11 марта, 2019 Автор Поделиться Опубликовано 11 марта, 2019 18 минут назад, Garik66 сказал: Вот более быстрый поиск, но ограничение только для целых значений частоты вращения ((float)1,.........,(float)100,.............,(Float)1000 и т.д.) Показать контент { Game : Tutorial-i386.exe Version: Date : 2019-03-09 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(INJECT,Tutorial-i386.exe,81 BB 80 04 00 00 E8 03 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) label(adres) registersymbol(adres) label(Value_EAX) registersymbol(Value_EAX) label(Value) label(Podbor) registersymbol(Value) registersymbol(INJECT) newmem: cmp [Value_EAX],0 jne code push eax push ebx push ecx mov ecx,[Value] mov ebx,ecx imul eax,ebx,6B Podbor: imul ebx,eax,B05C6C43 cmp ebx,ecx je @f add eax,10000000 jmp Podbor @@: mov [adres],eax mov [Value_EAX],ebx pop ecx pop ebx pop eax code: cmp [ebx+00000480],000003E8 jmp return adres: dd 0 Value_EAX: dd 0 Value: dd 0 INJECT: jmp newmem db 90 90 90 90 90 return: [DISABLE] INJECT: db 81 BB 80 04 00 00 E8 03 00 00 unregistersymbol(Value) unregistersymbol(Value_EAX) unregistersymbol(adres) unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "Tutorial-i386.exe"+24073 "Tutorial-i386.exe"+24061: C9 - leave "Tutorial-i386.exe"+24062: C3 - ret "Tutorial-i386.exe"+24063: 00 00 - add [eax],al "Tutorial-i386.exe"+24065: 00 00 - add [eax],al "Tutorial-i386.exe"+24067: 00 00 - add [eax],al "Tutorial-i386.exe"+24069: 00 00 - add [eax],al "Tutorial-i386.exe"+2406B: 00 00 - add [eax],al "Tutorial-i386.exe"+2406D: 00 00 - add [eax],al "Tutorial-i386.exe"+2406F: 00 53 89 - add [ebx-77],dl "Tutorial-i386.exe"+24072: C3 - ret // ---------- INJECTING HERE ---------- "Tutorial-i386.exe"+24073: 81 BB 80 04 00 00 E8 03 00 00 - cmp [ebx+00000480],000003E8 // ---------- DONE INJECTING ---------- "Tutorial-i386.exe"+2407D: 75 2C - jne Tutorial-i386.exe+240AB "Tutorial-i386.exe"+2407F: 8B 83 68 04 00 00 - mov eax,[ebx+00000468] "Tutorial-i386.exe"+24085: B2 01 - mov dl,01 "Tutorial-i386.exe"+24087: 8B 8B 68 04 00 00 - mov ecx,[ebx+00000468] "Tutorial-i386.exe"+2408D: 8B 09 - mov ecx,[ecx] "Tutorial-i386.exe"+2408F: FF 91 20 02 00 00 - call dword ptr [ecx+00000220] "Tutorial-i386.exe"+24095: 8B 83 78 04 00 00 - mov eax,[ebx+00000478] "Tutorial-i386.exe"+2409B: B2 00 - mov dl,00 "Tutorial-i386.exe"+2409D: 8B 8B 78 04 00 00 - mov ecx,[ebx+00000478] "Tutorial-i386.exe"+240A3: 8B 09 - mov ecx,[ecx] } Потесть у себя на скорость пжлста. Работает быстро, исправно. Для настройки автомобиля правда не подойдет, там важны десятые/сотые доли. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 11 марта, 2019 Поделиться Опубликовано 11 марта, 2019 Только что, Antonshka сказал: там важны десятые/сотые доли. Жаль. но, если покопать дальше можно, то от него (от этого скрипта) оттолкнуться. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 12 марта, 2019 Поделиться Опубликовано 12 марта, 2019 Когда данные уже расшифровываются и получается так, что они известны, то в любом случае можно ничего не подбирать. Можно пробовать подменять оригинальные значения любыми способами там, где с ними происходит чтение. Если оринтируемся на константы и знаем, какие с чем связаны, то можно составить список(или словарь с ключами констант) с данными констант и подменяемых значений. А если нужно, то еще и возвращаемых оригинальных, чтобы отменить изменения. По этому списку подменять результат расшифровки. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 марта, 2019 Поделиться Опубликовано 12 марта, 2019 9 часов назад, MasterGH сказал: Можно пробовать подменять оригинальные значения любыми способами там, где с ними происходит чтение. Это уже обсуждалось, вот здесь ТС ответил, почему его это не устраивает Ссылка на комментарий Поделиться на другие сайты Поделиться
Antonshka Опубликовано 12 марта, 2019 Автор Поделиться Опубликовано 12 марта, 2019 (изменено) С форума СЕ. Автор - ParkourPenguin (float)188.4955597 = 433C7EDD // original value 433C7EDD * DA9A406B mod 2^32 = BCF2465F // encrypt value BCF2465F * B05C6C43 mod 2^32 = 433C7EDD // decrypt value Ключ B05C6C43 для расшифровки известен изначально из инструкции. Используя этот ключ и брутфорс метод, автор получил ключ DA9A406B для зашифровки любого нового значения. Брутфорс метод автора Спойлер xor ecx,ecx mov edx,ecx mov eax,[encryptKey] -- B05C6C43 @@: inc ecx add edx,eax cmp edx,1 jne short @b mov [decryptKey],ecx --DA9A406B Недостаток такого метода, опять же занимающий некоторое время брутфорс. Изменено 12 марта, 2019 пользователем Antonshka Ссылка на комментарий Поделиться на другие сайты Поделиться
Antonshka Опубликовано 12 марта, 2019 Автор Поделиться Опубликовано 12 марта, 2019 (изменено) Коленвал Спойлер Загрузил бы таблицу и exe, но не знаю как. Изменено 12 марта, 2019 пользователем Antonshka 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 12 марта, 2019 Поделиться Опубликовано 12 марта, 2019 2 часа назад, Antonshka сказал: Недостаток такого метода, опять же занимающий некоторое время брутфорс. Если бы я делал, то я бы сделал две функции и скрипт CE 1) функция. которая собирает словарь в текстовый файл с константами и оригинальной расшифровкой (на CE Lua в режиме отладки) 2) функция в инжектируемой dll, которая грузит словарь из файла в память и принимает аргументы константу и оригинальное расшифровываемое значение, а возвращает модифицированное. 3) CE скрипт с инжектом dll-ки и вызовом функции из пункта2 (с подменой по словарю оригинальных значений) И все... и никакого брутфорса. Пункты 1 - полу-универсальный , 2-универсальный, а 3 - меняется. Подойдет< скорее всего, или может подойти для любых типов шифрований в играх, где есть расшифровка в процессе игры. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 12 марта, 2019 Поделиться Опубликовано 12 марта, 2019 4 часа назад, Antonshka сказал: Недостаток такого метода, опять же занимающий некоторое время брутфорс. А если переписать код, для того, чтобы все вычисления производились на видеокарте? Код не сложный, пара математических операций. В итоге вычисление будут быстрее раз в 20 производиться. Опять же, в этом есть смысл, если проект собирается быть долгоживущим, иначе , результат не окупит затраты на написание кода. Так же можно сделать минибазу, чтобы разбить поиск на блоки, а не перебирать все значения. Я подобное делал в GTA 5, для поиска значений работающих со скриптами и этот способ показал отличную эффективность и производительность. Задача была похожая. newGlobalPageBase = this->read<DWORD64, PBYTE*>(Global_struct + ((index >> 18 & 0x3F) << 3)) if (newGlobalPageBase != 0) { return (newGlobalPageBase + ((index & 0x3FFFF) << 3)); } 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 марта, 2019 Поделиться Опубликовано 12 марта, 2019 4 часа назад, Antonshka сказал: Недостаток такого метода, опять же занимающий некоторое время брутфорс. Скрипт: Спойлер { Game : Tutorial-i386.exe Version: Date : 2019-03-09 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(INJECT,Tutorial-i386.exe,81 BB 80 04 00 00 E8 03 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) label(Value_Shifr) registersymbol(Value_Shifr) label(Value) registersymbol(Value) label(Value_Prover) registersymbol(Value_Prover) label(Flag) registersymbol(Flag) registersymbol(INJECT) newmem: push eax cmp [Flag],1 jne @f imul eax,[Value],DA9A406B mov [Value_Shifr],eax jmp code @@: cmp [Flag],2 jne code imul eax,[Value_Shifr],B05C6C43 mov [Value_Prover],eax code: pop eax cmp [ebx+00000480],000003E8 jmp return Value: dd 0 Value_Shifr: dd 0 Value_Prover: dd 0 Flag: dd 0 INJECT: jmp newmem db 90 90 90 90 90 return: [DISABLE] INJECT: db 81 BB 80 04 00 00 E8 03 00 00 unregistersymbol(Value) unregistersymbol(Value_Prover) unregistersymbol(Value_Shifr) unregistersymbol(Flag) unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "Tutorial-i386.exe"+24073 "Tutorial-i386.exe"+24061: C9 - leave "Tutorial-i386.exe"+24062: C3 - ret "Tutorial-i386.exe"+24063: 00 00 - add [eax],al "Tutorial-i386.exe"+24065: 00 00 - add [eax],al "Tutorial-i386.exe"+24067: 00 00 - add [eax],al "Tutorial-i386.exe"+24069: 00 00 - add [eax],al "Tutorial-i386.exe"+2406B: 00 00 - add [eax],al "Tutorial-i386.exe"+2406D: 00 00 - add [eax],al "Tutorial-i386.exe"+2406F: 00 53 89 - add [ebx-77],dl "Tutorial-i386.exe"+24072: C3 - ret // ---------- INJECTING HERE ---------- "Tutorial-i386.exe"+24073: 81 BB 80 04 00 00 E8 03 00 00 - cmp [ebx+00000480],000003E8 // ---------- DONE INJECTING ---------- "Tutorial-i386.exe"+2407D: 75 2C - jne Tutorial-i386.exe+240AB "Tutorial-i386.exe"+2407F: 8B 83 68 04 00 00 - mov eax,[ebx+00000468] "Tutorial-i386.exe"+24085: B2 01 - mov dl,01 "Tutorial-i386.exe"+24087: 8B 8B 68 04 00 00 - mov ecx,[ebx+00000468] "Tutorial-i386.exe"+2408D: 8B 09 - mov ecx,[ecx] "Tutorial-i386.exe"+2408F: FF 91 20 02 00 00 - call dword ptr [ecx+00000220] "Tutorial-i386.exe"+24095: 8B 83 78 04 00 00 - mov eax,[ebx+00000478] "Tutorial-i386.exe"+2409B: B2 00 - mov dl,00 "Tutorial-i386.exe"+2409D: 8B 8B 78 04 00 00 - mov ecx,[ebx+00000478] "Tutorial-i386.exe"+240A3: 8B 09 - mov ecx,[ecx] } Видео: табличка Tutorial-i386090319.CT 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 12 марта, 2019 Поделиться Опубликовано 12 марта, 2019 Забыл в видео сказать, что констант всего 4: 1A9A406B, 5A9A406B, 9A9A406B, DA9A406B. Можно использовать любую. И также забыл показать скрипт с помощью которого я находил эти константы. Спойлер { Game : Tutorial-i386.exe Version: Date : 2019-03-09 Author : Garik66 This script does blah blah blah } [ENABLE] aobscanmodule(INJECT,Tutorial-i386.exe,81 BB 80 04 00 00 E8 03 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) label(adres) registersymbol(adres) label(Value_EAX) registersymbol(Value_EAX) label(Value) label(Podbor) registersymbol(Value) registersymbol(INJECT) newmem: push eax push ebx push ecx mov ecx,0 Podbor: cmp [Value_EAX],FFFFFFFF je code imul eax,[Value_EAX],42DE71C4 //42C80000//100 тоже 4; 42DE71C4 // 111.2221985 скрипт дал 4 константы imul ebx,eax,B05C6C43 cmp ebx,42DE71C4 je @f inc [Value_EAX] jmp Podbor @@: mov ebx,[Value_EAX] mov [adres+ecx*4],ebx inc ecx inc [Value_EAX] jmp Podbor code: pop ecx pop ebx pop eax cmp [ebx+00000480],000003E8 jmp return Value_EAX: dd 0 Value: dd 0 adres: dd 0 INJECT: jmp newmem db 90 90 90 90 90 return: [DISABLE] INJECT: db 81 BB 80 04 00 00 E8 03 00 00 unregistersymbol(Value) unregistersymbol(Value_EAX) unregistersymbol(adres) unregistersymbol(INJECT) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: "Tutorial-i386.exe"+24073 "Tutorial-i386.exe"+24061: C9 - leave "Tutorial-i386.exe"+24062: C3 - ret "Tutorial-i386.exe"+24063: 00 00 - add [eax],al "Tutorial-i386.exe"+24065: 00 00 - add [eax],al "Tutorial-i386.exe"+24067: 00 00 - add [eax],al "Tutorial-i386.exe"+24069: 00 00 - add [eax],al "Tutorial-i386.exe"+2406B: 00 00 - add [eax],al "Tutorial-i386.exe"+2406D: 00 00 - add [eax],al "Tutorial-i386.exe"+2406F: 00 53 89 - add [ebx-77],dl "Tutorial-i386.exe"+24072: C3 - ret // ---------- INJECTING HERE ---------- "Tutorial-i386.exe"+24073: 81 BB 80 04 00 00 E8 03 00 00 - cmp [ebx+00000480],000003E8 // ---------- DONE INJECTING ---------- "Tutorial-i386.exe"+2407D: 75 2C - jne Tutorial-i386.exe+240AB "Tutorial-i386.exe"+2407F: 8B 83 68 04 00 00 - mov eax,[ebx+00000468] "Tutorial-i386.exe"+24085: B2 01 - mov dl,01 "Tutorial-i386.exe"+24087: 8B 8B 68 04 00 00 - mov ecx,[ebx+00000468] "Tutorial-i386.exe"+2408D: 8B 09 - mov ecx,[ecx] "Tutorial-i386.exe"+2408F: FF 91 20 02 00 00 - call dword ptr [ecx+00000220] "Tutorial-i386.exe"+24095: 8B 83 78 04 00 00 - mov eax,[ebx+00000478] "Tutorial-i386.exe"+2409B: B2 00 - mov dl,00 "Tutorial-i386.exe"+2409D: 8B 8B 78 04 00 00 - mov ecx,[ebx+00000478] "Tutorial-i386.exe"+240A3: 8B 09 - mov ecx,[ecx] } Спойлер 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Antonshka Опубликовано 13 марта, 2019 Автор Поделиться Опубликовано 13 марта, 2019 11 часов назад, MasterGH сказал: Если бы я делал, то я бы сделал две функции и скрипт CE 10 часов назад, partoftheworlD сказал: А если переписать код, для того, чтобы все вычисления производились на видеокарте? Код не сложный, пара математических операций. @MasterGH, @partoftheworlD, интересные идеи. @Garik66, отличный скрипт получился. Как я понял он использует метод пользователя ParkourPenguin? 433C7EDD * DA9A406B mod 2^32 = BCF2465F // encrypt value BCF2465F * B05C6C43 mod 2^32 = 433C7EDD // decrypt value Спасибо за видео @Garik66, интересно было посмотреть. По поводу 14 часов назад, Antonshka сказал: Недостаток такого метода, опять же занимающий некоторое время брутфорс. , я имел ввиду брутфорс для получения DA9A406B. Нужно протестировать много адресов в памяти, перед тем как понять нужны ли они для конечного инструмента или нет. В конечном инструменте будут использованы готовые ключи типа DA9A406B, для быстрой зашифровки. Но для "Коленвала", задача которого есть быстрое понимание назначения текущего значения в памяти по отношению к автомобилю - брутфорс получение DA9A406B для каждого нового B05C6C43 обременительно. Потому так написал. В "Коленвал" наверно нужно встроить опцию получения ключей зашифровки типа DA9A406B, для определенных ключей расшифровки типа B05C6C43. Затем добавить полученные ключи в конечный инструмент. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 марта, 2019 Поделиться Опубликовано 13 марта, 2019 1 минуту назад, Antonshka сказал: для каждого нового B05C6C43 обременительно Я спрашивал, ты сказал, что это константа. Или думаешь они будет меняться? 2 минуты назад, Antonshka сказал: Как я понял он использует метод пользователя ParkourPenguin? Я не знаю. Я просто предполагал изначально, что зашифровка тоже будет в виде либо деления либо умножения с отбрасыванием старшей части. самый первый мой скрипт - юзал деление, но дальше оно не пошло. далее я уже смотрел умножение - такое же как и при дешифровке. 5 минут назад, Antonshka сказал: для каждого нового B05C6C43 обременительно И с другой стороны. это же тоже не сложно добавить в скрипт, юзая флаги 1. добавить проверку равна ли константа расшифровки B05C6C43 2. сделать разовый подбор константы зашифровки. Ссылка на комментарий Поделиться на другие сайты Поделиться
Antonshka Опубликовано 13 марта, 2019 Автор Поделиться Опубликовано 13 марта, 2019 12 минут назад, Garik66 сказал: Я спрашивал, ты сказал, что это константа. B05C6C43 Это константа. Но я немного о другом. Я планирую сделать два приложения. Первое приложение для быстрого тестирования значений в памяти, для понимания их назначений.. Вот как оно должно работать - первый адрес, ставим бряк на чтение, получаем ключ типа B05C6C43, придумываем любое новое значение float, используя брутфорс получаем float в зашифрованном виде, записываем его вручную в память и смотрим что изменилось в поведении автомобиля, решаем нужен ли этот адрес для другого второго приложения. Далее идем на второй адрес, ставим опять бряк, берем новый ключ типа B05C6C43, float, брусфорс, наше решение, и так далее, третий адрес, четвертый, тестируем, отбираем. Во втором приложении будут использоваться только отобранные адреса. Для каждого отобранного адреса будет свой собственный ключ типа DA9A406B для зашифровки, и ключ типа B05C6C43 для расшифровки. Во втором приложении брутфорс не нужен. Первое приложение - для отсева параметров автомобиля от не параметров, и для нахождения ключей B05C6C43 и DA9A406B для каждого параметра. Второе приложение - для настройки отобранных параметров. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 марта, 2019 Поделиться Опубликовано 13 марта, 2019 4 минуты назад, Antonshka сказал: Первое приложение - для отсева параметров автомобиля от не параметров, и для нахождения ключей B05C6C43 и DA9A406B для каждого параметра. Второе приложение - для настройки отобранных параметров. Ну теперь более понятно. Т.е. параметры авто скорее всего все в игре шифруются и константы могут быть другими. А, если разработчики не только IMUL-шифрование юзали? ЗЫ: да и кстати сомневаюсь, что пар зашифровки/дешифровки (при IMUL-шифровании) много может быть. Ссылка на комментарий Поделиться на другие сайты Поделиться
Antonshka Опубликовано 13 марта, 2019 Автор Поделиться Опубликовано 13 марта, 2019 55 минут назад, Garik66 сказал: А, если разработчики не только IMUL-шифрование юзали? ЗЫ: да и кстати сомневаюсь, что пар зашифровки/дешифровки (при IMUL-шифровании) много может быть. Пока что кроме IMUL-шифрование параметров ничего не встречал. Вот еще адрес с шифрованным значение 90D8369C, его ключ imul 6FA85A41. Расшифрованное значение 4478B59C (float)994.8376465. Ключ для его зашифровки 9144B5C1. И так все "imul" адреса которые проверял. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 13 марта, 2019 Поделиться Опубликовано 13 марта, 2019 1 минуту назад, Antonshka сказал: IMUL-шифрование Ну что ж - хорошо поработали ИМХО. Спасибо ещё раз за интересную задачку. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения