Newner Опубликовано 24 октября, 2022 Поделиться Опубликовано 24 октября, 2022 Игра 2004 года, как найти значение скорости, чтобы сделать примитивное резкое увеличение скорости. Как не пробовал искать значения скорости, никогда не получается находить. Хотя в том же киберпанке за минут 5 все ищется. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 24 октября, 2022 Поделиться Опубликовано 24 октября, 2022 Расскажи, как пробовал Ссылка на комментарий Поделиться на другие сайты Поделиться
Newner Опубликовано 24 октября, 2022 Автор Поделиться Опубликовано 24 октября, 2022 (изменено) 9 минут назад, Xipho сказал: Расскажи, как пробовал Банально, искал по байтам, флотам. Везде пробовал и напрямую писать значения со спидометра и с неизвестного значения по классике - больше/меньше/не изменилось. Там есть поинты, поинты 4 байта сразу ищутся, пробовал искать по маске отталкиваясь от поинтов, но тоже тухло. Изменено 24 октября, 2022 пользователем Newner Ссылка на комментарий Поделиться на другие сайты Поделиться
Antonshka Опубликовано 24 октября, 2022 Поделиться Опубликовано 24 октября, 2022 Обычно большинство параметров техники хранится в памяти игры рядом с частотами вращения колес. Когда колесо раскручивается вперед, частота его вращения в памяти во float будет увеличиваться и будет больше нуля. Тоже самое наоборот. Чтобы понять какие параметры/адреса техники на что влияют, можно сделать такой трюк, - найти технику с изначально большой скоростью, - скопировать блок памяти с параметрами в блокнот, - загрузить другую технику, с изначально малой скоростью, - записать сохраненные байты из блокнота в память, на тот же начальный адрес, можно найти какой-нибудь адрес как ориентир, - если техника после этого поедет быстрее, значит повезло, можно теперь брать блоки меньшими порциями, чтобы выйти на такие параметры/адреса которые реально влияют на скорость. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Newner Опубликовано 24 октября, 2022 Автор Поделиться Опубликовано 24 октября, 2022 2 часа назад, Antonshka сказал: Обычно большинство параметров техники хранится в памяти игры рядом с частотами вращения колес. Когда колесо раскручивается вперед, частота его вращения в памяти во float будет увеличиваться и будет больше нуля. Тоже самое наоборот. Чтобы понять какие параметры/адреса техники на что влияют, можно сделать такой трюк, - найти технику с изначально большой скоростью, - скопировать блок памяти с параметрами в блокнот, - загрузить другую технику, с изначально малой скоростью, - записать сохраненные байты из блокнота в память, на тот же начальный адрес, можно найти какой-нибудь адрес как ориентир, - если техника после этого поедет быстрее, значит повезло, можно теперь брать блоки меньшими порциями, чтобы выйти на такие параметры/адреса которые реально влияют на скорость. Спасибо, затестим. Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 26 октября, 2022 Поделиться Опубликовано 26 октября, 2022 Всё нормально ищется. Ищи координаты. Как найдёшь в их структуре уже ищи значения. При наборе скорости если значение координаты увеличивается то ищи значение как увеличилось если при наборе скорости координата идёт в минус то и значение отсеивай как уменьшилось. Когда стоишь отсеивай как диапазон от -1 до +1. Так найдешь значения отвечающие за ускорение. На каждой координате оно своё. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 26 октября, 2022 Поделиться Опубликовано 26 октября, 2022 (изменено) Положу это сюда. Может кому пригодится. Спойлер [ENABLE] {$lua} function SpeedHack1() boost = 1.5 if (readBytes('[coord_X_Y]') ~= nil) then writeFloat ('[coord_X_Y]+18', readFloat('[coord_X_Y]+18')*boost) writeFloat ('[coord_X_Y]+20', readFloat('[coord_X_Y]+20')*boost) end end createHotkey(SpeedHack1, VK_UP) function SpeedHack2() boost = 0.1 if (readBytes('[coord_X_Y]') ~= nil) then writeFloat ('[coord_X_Y]+18', readFloat('[coord_X_Y]+18')*boost) writeFloat ('[coord_X_Y]+20', readFloat('[coord_X_Y]+20')*boost) end end createHotkey(SpeedHack2, VK_DOWN) {$asm} aobscanmodule(SpeedXY,MTX.exe,D9 ? ? D9 ? ? ? D8 ? ? D9 ? ? D9 ? ? ? ? ? D9 ? D8) alloc(newmem,$1000) label(return) label(coord_X_Y) registersymbol(coord_X_Y) registersymbol(SpeedXY) newmem: mov [coord_X_Y],esi fstp dword ptr [esi+20] fld dword ptr [esp+14] jmp return coord_X_Y: db 00 SpeedXY: jmp newmem nop 2 return: [DISABLE] SpeedXY: db D9 5E 20 D9 44 24 14 unregistersymbol(*) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: MTX.exe+BB15C MTX.exe+BB13C: D9 C9 - fxch st(1) MTX.exe+BB13E: D8 4E 34 - fmul dword ptr [esi+34] MTX.exe+BB141: D9 5C 24 14 - fstp dword ptr [esp+14] MTX.exe+BB145: D8 46 18 - fadd dword ptr [esi+18] MTX.exe+BB148: D9 5E 18 - fstp dword ptr [esi+18] MTX.exe+BB14B: D9 44 24 0C - fld dword ptr [esp+0C] MTX.exe+BB14F: D8 46 1C - fadd dword ptr [esi+1C] MTX.exe+BB152: D9 5E 1C - fstp dword ptr [esi+1C] MTX.exe+BB155: D9 44 24 10 - fld dword ptr [esp+10] MTX.exe+BB159: D8 46 20 - fadd dword ptr [esi+20] // ---------- INJECTING HERE ---------- MTX.exe+BB15C: D9 5E 20 - fstp dword ptr [esi+20] // ---------- DONE INJECTING ---------- MTX.exe+BB15F: D9 44 24 14 - fld dword ptr [esp+14] MTX.exe+BB163: D8 46 24 - fadd dword ptr [esi+24] MTX.exe+BB166: D9 5E 24 - fstp dword ptr [esi+24] MTX.exe+BB169: D9 86 C0 04 00 00 - fld dword ptr [esi+000004C0] MTX.exe+BB16F: D9 C0 - fld st(0) MTX.exe+BB171: D8 4E 58 - fmul dword ptr [esi+58] MTX.exe+BB174: D9 C1 - fld st(1) MTX.exe+BB176: D8 4E 5C - fmul dword ptr [esi+5C] MTX.exe+BB179: D9 5C 24 0C - fstp dword ptr [esp+0C] MTX.exe+BB17D: D9 C1 - fld st(1) } Изменено 26 октября, 2022 пользователем Partizan Добавил скрипт 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Antonshka Опубликовано 26 октября, 2022 Поделиться Опубликовано 26 октября, 2022 15 минут назад, Partizan сказал: Положу это сюда. Может кому пригодится. В скрипте нужно еще учитывать углы поворота транспорта. Для лучшего эффекта. Иначе при движении по дуге и при использовании спидхака транспорт будет уезжать с дороги. Это насколько я помню. 2 Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 9 ноября, 2022 Поделиться Опубликовано 9 ноября, 2022 (изменено) В 26.10.2022 в 21:00, Antonshka сказал: В скрипте нужно еще учитывать углы поворота транспорта. Для лучшего эффекта. Иначе при движении по дуге и при использовании спидхака транспорт будет уезжать с дороги. Это насколько я помню. Конечно нужно. Но способ рабочий. Причём не только для этой игры но и для тех игр где можно найти velocity. Как пример. Спойлер [ENABLE] {$lua} function SpeedHack1() boost = 1.5 if (readBytes('[_date_01]') ~= nil) then writeFloat ('[_date_01]', readFloat('[_date_01]')*boost) writeFloat ('[_date_01]+04', readFloat('[_date_01]+04')*boost) end end createHotkey(SpeedHack1, VK_XBUTTON1) function SpeedHack2() boost = 0.5 if (readBytes('[_date_01]') ~= nil) then writeFloat ('[_date_01]', readFloat('[_date_01]')*boost) writeFloat ('[_date_01]+04', readFloat('[_date_01]+04')*boost) end end createHotkey(SpeedHack2, VK_XBUTTON2) {$asm} aobscanmodule(Boost,GTA5.exe,F3 ? ? ? F3 ? ? ? ? F3 ? ? ? F3 ? ? ? F3 ? ? ? ? ? ? ? 44 39) alloc(newmem,$1000,Boost) label(return) label(_date_01) registersymbol(_date_01) registersymbol(Boost) newmem: mov [_date_01],rax mulss xmm0,[rax] mulss xmm6,[rax+08] jmp return _date_01: dq 00 Boost: jmp newmem nop 4 return: [DISABLE] Boost: db F3 0F 59 00 F3 0F 59 70 08 unregistersymbol(*) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: GTA5.exe+A54169 GTA5.exe+A54140: 0F 84 05 01 00 00 - je GTA5.exe+A5424B GTA5.exe+A54146: 48 8B 07 - mov rax,[rdi] GTA5.exe+A54149: 0F 28 77 70 - movaps xmm6,[rdi+70] GTA5.exe+A5414D: 48 8B CF - mov rcx,rdi GTA5.exe+A54150: FF 90 70 03 00 00 - call qword ptr [rax+00000370] GTA5.exe+A54156: 0F 28 FE - movaps xmm7,xmm6 GTA5.exe+A54159: 0F 28 C6 - movaps xmm0,xmm6 GTA5.exe+A5415C: 0F C6 FE 55 - shufps xmm7,xmm6,55 GTA5.exe+A54160: 0F C6 F6 AA - shufps xmm6,xmm6,-56 GTA5.exe+A54164: F3 0F 59 78 04 - mulss xmm7,[rax+04] // ---------- INJECTING HERE ---------- GTA5.exe+A54169: F3 0F 59 00 - mulss xmm0,[rax] // ---------- DONE INJECTING ---------- GTA5.exe+A5416D: F3 0F 59 70 08 - mulss xmm6,[rax+08] GTA5.exe+A54172: F3 0F 58 F8 - addss xmm7,xmm0 GTA5.exe+A54176: F3 0F 58 FE - addss xmm7,xmm6 GTA5.exe+A5417A: F3 0F 59 3D DA 3E FB 00 - mulss xmm7,[GTA5.exe+1A0805C] GTA5.exe+A54182: 44 39 BD 98 00 00 00 - cmp [rbp+00000098],r15d GTA5.exe+A54189: 0F 84 89 00 00 00 - je GTA5.exe+A54218 GTA5.exe+A5418F: 48 8B CF - mov rcx,rdi GTA5.exe+A54192: E8 E1 74 4C 00 - call GTA5.exe+F1B678 GTA5.exe+A54197: 84 C0 - test al,al GTA5.exe+A54199: 74 7D - je GTA5.exe+A54218 } V. 1.0.2699/1.63 Изменено 9 ноября, 2022 пользователем Partizan Ссылка на комментарий Поделиться на другие сайты Поделиться
Antonshka Опубликовано 10 ноября, 2022 Поделиться Опубликовано 10 ноября, 2022 Я про домножение velocity узнал из трейнера флинга, кажется 🙊. Помню как включал эту опцию и изучал место инъекции. У него, насколько я помню, ускорение было такое же резкое как и у тебя. Но как по мне, лучше дать самому потоку плавно домножать velocity. Так смотрится более естественно. А горячие клавиши поставить на флаги. Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 12 ноября, 2022 Поделиться Опубликовано 12 ноября, 2022 В 10.11.2022 в 07:43, Antonshka сказал: Но как по мне, лучше дать самому потоку плавно домножать velocity. Согласень так лучше смотрелось бы. Вопрос реализации. Показал бы как хоть на той же МТХ. А про горячие кнопки....???? Смысл? Ссылка на комментарий Поделиться на другие сайты Поделиться
Antonshka Опубликовано 12 ноября, 2022 Поделиться Опубликовано 12 ноября, 2022 56 минут назад, Partizan сказал: Согласень так лучше смотрелось бы. Вопрос реализации. Показал бы как хоть на той же МТХ. А про горячие кнопки....???? Смысл? Да, это для плавности. Домножение должно осуществляться в самой игровой функции, самим игровым потоком. Через FPU или SSE. А горячие клавиши луа лишь устанавливают или сбрасывают флаги для такого осуществления. Можно также обойтись без луа клавиш. Вместо них для тех же целей можно вызывать из игровой функции GetAsyncKeyState. А про то как использовать и углы поворота, - я подзабыл. Кажется синус и косинус Yaw умноженные на Velocity. Ссылка на комментарий Поделиться на другие сайты Поделиться
Partizan Опубликовано 12 ноября, 2022 Поделиться Опубликовано 12 ноября, 2022 (изменено) 19 часов назад, Antonshka сказал: Да, это для плавности. Домножение должно осуществляться в самой игровой функции, самим игровым потоком. Через FPU или SSE. Я поток не создавал. Использовал созданый игрой. А чем плохо умножение Float через xmm/ Спойлер xmmm Я бы сказал у xmm даже есть приимущество по сравнению с FPU процессором Можно в 1 регистр записать сразу 4 значения. Я не гнушаюсь и FPU. Спойлер Спойлер [ENABLE] aobscanmodule(MoveSpeed,cf3.exe,D9 00 D9 1B D9 40 04 D9 5B 04 D9 40 08 D9 5B 08 EB C4 56 E8 80) aobscanmodule(MoveSpeed_02,cf3.exe,D9 00 D9 1B D9 40 04 D9 5B 04 D9 40 08 D9 5B 08 EB C4 56 E8 80) alloc(newmem,$1000) alloc(newmem_02,$1000) label(return) label(return_02) label(imul_value) registersymbol(imul_value) registersymbol(MoveSpeed) registersymbol(MoveSpeed_02) newmem: fld dword ptr [eax] cmp [esp+38],80000000 jne short @F fmul [imul_value] @@: fstp dword ptr [ebx] fld dword ptr [eax+04] jmp return newmem_02: fld dword ptr [eax+08] cmp [esp+38],80000000 jne short @F fmul [imul_value] @@: fstp dword ptr [ebx+08] jmp return_02 imul_value: dd (float)2 MoveSpeed: jmp newmem nop 2 return: MoveSpeed_02+0A: jmp newmem_02 nop return_02: [DISABLE] MoveSpeed: db D9 00 D9 1B D9 40 04 MoveSpeed_02+0A: db D9 40 08 D9 5B 08 unregistersymbol(*) dealloc(*) { // ORIGINAL CODE - INJECTION POINT: cf3.exe+3EB828 cf3.exe+3EB811: E8 EA 21 FD FF - call cf3.exe+3BDA00 cf3.exe+3EB816: 83 C4 0C - add esp,0C cf3.exe+3EB819: 5F - pop edi cf3.exe+3EB81A: 5D - pop ebp cf3.exe+3EB81B: 5B - pop ebx cf3.exe+3EB81C: B8 01 00 00 00 - mov eax,00000001 cf3.exe+3EB821: 5E - pop esi cf3.exe+3EB822: 59 - pop ecx cf3.exe+3EB823: C3 - ret cf3.exe+3EB824: 8B 44 24 10 - mov eax,[esp+10] // ---------- INJECTING HERE ---------- cf3.exe+3EB828: D9 00 - fld dword ptr [eax] // ---------- DONE INJECTING ---------- cf3.exe+3EB82A: D9 1B - fstp dword ptr [ebx] cf3.exe+3EB82C: D9 40 04 - fld dword ptr [eax+04] cf3.exe+3EB82F: D9 5B 04 - fstp dword ptr [ebx+04] cf3.exe+3EB832: D9 40 08 - fld dword ptr [eax+08] cf3.exe+3EB835: D9 5B 08 - fstp dword ptr [ebx+08] cf3.exe+3EB838: EB C4 - jmp cf3.exe+3EB7FE cf3.exe+3EB83A: 56 - push esi cf3.exe+3EB83B: E8 80 FA FF FF - call cf3.exe+3EB2C0 cf3.exe+3EB840: 83 C4 04 - add esp,04 cf3.exe+3EB843: 5E - pop esi } Изменено 12 ноября, 2022 пользователем Partizan Ссылка на комментарий Поделиться на другие сайты Поделиться
Antonshka Опубликовано 13 ноября, 2022 Поделиться Опубликовано 13 ноября, 2022 (изменено) А, понятно. У тебя постоянное домножение. Мне больше нравится эффект нитро, - машина ускоряется.пока зажата клавиша. Если к этому прикрутить еще и принудительные: динамическое изменение FOV, увеличение значения тахометра, увеличение частот вращения задних колес, так чтобы дым пошел, небольшое приподнятие передка машины через углы поворота, чуть-чуть тряски камеры, через DirectSound звук закиси азота, - было бы забавно. Кстати, у тебя скрипт можно объединить в один. Так как у тебя инструкции рядом. Я в своем время также как и ты для каждой инструкции писал отдельный скрипт, потом мне это надоело. Спойлер cf3.exe+3EB828: D9 00 - fld dword ptr [eax] cf3.exe+3EB82A: D9 1B - fstp dword ptr [ebx] cf3.exe+3EB82C: D9 40 04 - fld dword ptr [eax+04] cf3.exe+3EB82F: D9 5B 04 - fstp dword ptr [ebx+04] cf3.exe+3EB832: D9 40 08 - fld dword ptr [eax+08] cf3.exe+3EB835: D9 5B 08 - fstp dword ptr [ebx+08] Изменено 13 ноября, 2022 пользователем Antonshka Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения