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

imul шифрование

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

local x = 0
while x ~= 2684354560 do         -- 2684354560 = A0000000
x = x + 1
end
print(x)

~ 58 секунд до напечатания "x". Луа не подходит.

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


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

~ 58 секунд до напечатания "x". Луа не подходит.

Языки с динамической типизацией сразу надо отбросить, на Python это занимало около 1-2 минут.

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


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

Итог тестирования многопоточности:

19 скриптов АА, в каждом свой отдельный поток (createthread(name)) - поиск для (float)152.4550018 = ~3 секунды.

1 скрипт АА с одним потоком - результат почти тот же.

19 скриптов дали прирост, но не большой.

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


Ссылка на сообщение
Поделиться на другие сайты
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 сказал:

тестирования

Потесть у себя на скорость пжлста.

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


Ссылка на сообщение
Поделиться на другие сайты
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]
}

 

 

Потесть у себя на скорость пжлста.

Работает быстро, исправно.

Для настройки автомобиля правда не подойдет, там важны десятые/сотые доли.

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


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

там важны десятые/сотые доли.

Жаль. но, если покопать дальше можно, то от него (от этого скрипта) оттолкнуться.

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


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

Когда данные уже расшифровываются и получается так, что они известны, то в любом случае можно ничего не подбирать.  Можно пробовать подменять оригинальные значения любыми способами там, где с ними происходит чтение.

Если оринтируемся на константы и знаем, какие с чем связаны, то можно составить список(или словарь с ключами констант) с данными  констант и подменяемых значений. А если нужно, то еще и возвращаемых оригинальных, чтобы отменить изменения. По этому списку подменять результат расшифровки.

 

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


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

Можно пробовать подменять оригинальные значения любыми способами там, где с ними происходит чтение.

Это уже обсуждалось, вот здесь ТС ответил, почему его это не устраивает 

 

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


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

С форума СЕ. Автор - 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

 

Недостаток такого метода, опять же занимающий некоторое время брутфорс.

Изменено пользователем Antonshka

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


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

Коленвал

Спойлер

Zahvatjpg_9041435_31316901.jpg

Загрузил бы таблицу и exe, но не знаю как.

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

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


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

Недостаток такого метода, опять же занимающий некоторое время брутфорс.

Если бы я делал, то я бы сделал две функции и скрипт CE

1) функция. которая собирает словарь в текстовый файл с константами и оригинальной расшифровкой (на CE Lua в режиме отладки)

2) функция в инжектируемой dll, которая грузит словарь из файла в память и принимает аргументы константу и оригинальное расшифровываемое значение, а возвращает модифицированное.

3) CE скрипт с инжектом dll-ки и вызовом функции из пункта2 (с подменой по словарю оригинальных значений)

И все... и никакого брутфорса. Пункты 1 -  полу-универсальный , 2-универсальный, а 3 - меняется. Подойдет< скорее всего, или может подойти для любых типов шифрований в играх, где есть расшифровка в процессе игры.

  • Плюс 1

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


Ссылка на сообщение
Поделиться на другие сайты
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

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


Ссылка на сообщение
Поделиться на другие сайты
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

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


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

Забыл в видео сказать, что констант всего 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]
}

 

Спойлер

image.thumb.png.5426f9abe87d77a35d3bd3e953df3e0f.png

 

  • Плюс 2

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


Ссылка на сообщение
Поделиться на другие сайты
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. Затем добавить полученные ключи в конечный инструмент.

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


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

для каждого нового B05C6C43 обременительно

Я спрашивал, ты сказал, что это константа.

Или думаешь они будет меняться?

2 минуты назад, Antonshka сказал:

Как я понял он использует метод пользователя ParkourPenguin?

Я не знаю.
Я просто предполагал изначально, что зашифровка тоже будет в виде либо деления либо умножения с отбрасыванием старшей части.
самый первый мой скрипт - юзал деление, но дальше оно не пошло.
далее я уже смотрел умножение - такое же как и при дешифровке. 

5 минут назад, Antonshka сказал:

для каждого нового B05C6C43 обременительно

И с другой стороны. это же тоже не сложно добавить в скрипт, юзая флаги

1. добавить проверку равна ли константа расшифровки B05C6C43

2. сделать разовый подбор константы зашифровки.

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


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

Я спрашивал, ты сказал, что это константа.

B05C6C43

Это константа. Но я немного о другом.

Я планирую сделать два приложения. Первое приложение для быстрого тестирования значений в памяти, для понимания их назначений.. Вот как оно должно работать - первый адрес, ставим бряк на чтение, получаем ключ типа B05C6C43, придумываем любое новое значение float, используя брутфорс получаем float в зашифрованном виде, записываем его вручную в память и смотрим что изменилось в поведении автомобиля, решаем нужен ли этот адрес для другого второго приложения. Далее идем на второй адрес, ставим опять бряк, берем новый ключ типа B05C6C43, float, брусфорс, наше решение, и так далее, третий адрес, четвертый, тестируем, отбираем.

 

Во втором приложении будут использоваться только отобранные адреса. Для каждого отобранного адреса будет свой собственный ключ типа DA9A406B для зашифровки, и ключ типа B05C6C43 для расшифровки. Во втором приложении брутфорс не нужен.

 

Первое приложение - для отсева параметров автомобиля от не параметров, и для нахождения ключей B05C6C43 и DA9A406B для каждого параметра.

Второе приложение - для настройки отобранных параметров.

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


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

Первое приложение - для отсева параметров автомобиля от не параметров, и для нахождения ключей B05C6C43 и DA9A406B для каждого параметра.

Второе приложение - для настройки отобранных параметров.

Ну теперь более понятно.

Т.е. параметры авто скорее всего все в игре шифруются и константы могут быть другими.
А, если разработчики не только IMUL-шифрование юзали?

ЗЫ: да и кстати сомневаюсь, что пар зашифровки/дешифровки (при  IMUL-шифровании) много может быть.

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


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

А, если разработчики не только IMUL-шифрование юзали?

ЗЫ: да и кстати сомневаюсь, что пар зашифровки/дешифровки (при  IMUL-шифровании) много может быть.

Пока что кроме IMUL-шифрование параметров ничего не встречал.

Вот еще адрес с шифрованным значение 90D8369C, его ключ imul 6FA85A41. Расшифрованное значение 4478B59C (float)994.8376465. Ключ для его зашифровки 9144B5C1.

И так все "imul" адреса которые проверял.

  • Спасибо 1

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


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

IMUL-шифрование

Ну что ж - хорошо поработали ИМХО.

Спасибо ещё раз за интересную задачку.

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


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

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

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

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

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

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

Войти

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

Войти

×

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

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