-
Постов
218 -
Зарегистрирован
-
Посещение
-
Победитель дней
17
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные Partizan
-
-
Почему не попробовать переписать инструкцию add [rax+08],edx как mov [rax+08],#10.
Какая версия игры?
- 1
-
В 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
-
Ну так возьми тем же хекс редактором и сравни два файла.
Один поправленный прогой а второй нет.
-
просто смени расширение на bin
-
Попробуй программку FixCheckSum
Какую игру ломаешь?
-
55 минут назад, kenshin сказал:
Ребят, выложите пожалуйста эмуль с отладчиком
И правда ссылка битая. Хорошо что у меня остался он на диске.
virustotal 4 из 61 ругаются на изменённый упаковщик upx
-
12 часов назад, BadBoy сказал:
Ещё хотел узнать, вы в конце скрипта, в колонке [DISABLE] прописали команду unregistersymbol(*), таким образом вы удалили два ранее созданных registersymbol(_item) и registersymbol(Items)?
Да. Также можно и delloc(*) и всё остальное.
6 часов назад, Xipho сказал:В данном случае int3 и jmp return в секции newmem не имеют смысла, поскольку выход из инъекции произойдет по ret. Их можно даже не прописывать в newmem.
Это СЕ так создал скрипт а я не обратил внимание.
-
У тебя в скрипте 2 раза прописано
registersymbol(_Items)
Есть alloc(_pitem,8) но нету delloc(_pitem,8)
И как по мне метка exit: мусор
Я переделал твой скрипт так как привык делать я.
Спойлер[ENABLE] aobscanmodule(Items,Anno5.exe,CC CC CC CC CC CC 8B 41 ? C3 CC CC CC CC CC CC CC CC CC CC CC CC 48 89 ? ? ? 53 48 83 EC ? 48 8B ? 48 8D) alloc(newmem,$1000,Items) label(return) label(_item) registersymbol(_item) registersymbol(Items) newmem: mov [_item],rcx mov eax,[rcx+0C] ret int 3 jmp return _item: db 00 Items+06: jmp newmem return: [DISABLE] Items+06: db 8B 41 0C C3 CC unregistersymbol(*) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: Anno5.CGUIEventScriptingSlot::GetContext+9780 Anno5.CGUIEventScriptingSlot::GetContext+976D: E8 8E 6E 6E 00 - call Anno5.exe+76F4A0 Anno5.CGUIEventScriptingSlot::GetContext+9772: 48 89 73 20 - mov [rbx+20],rsi Anno5.CGUIEventScriptingSlot::GetContext+9776: B0 01 - mov al,01 Anno5.CGUIEventScriptingSlot::GetContext+9778: EB CB - jmp Anno5.CGUIEventScriptingSlot::GetContext+9745 Anno5.CGUIEventScriptingSlot::GetContext+977A: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+977B: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+977C: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+977D: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+977E: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+977F: CC - int 3 // ---------- INJECTING HERE ---------- Anno5.CGUIEventScriptingSlot::GetContext+9780: 8B 41 0C - mov eax,[rcx+0C] // ---------- DONE INJECTING ---------- Anno5.CGUIEventScriptingSlot::GetContext+9783: C3 - ret Anno5.CGUIEventScriptingSlot::GetContext+9784: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+9785: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+9786: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+9787: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+9788: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+9789: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+978A: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+978B: CC - int 3 Anno5.CGUIEventScriptingSlot::GetContext+978C: CC - int 3 }
В таблицу добавляешь адрес [_item]+0C
- 1
-
А что ты пишешь в таблице в указатель Item?
СпойлерВерсия игры какая?
-
Но я не так выходил на жизни.
Показал бы коротенько как ты это делаешь.
-
Почему я могу редактировать свои сообщения только N-ное кол-во времени. Почему не сделать эту возможность постоянной.
Вдруг я через неделю обнаружил ошибку в скрипте который выкладывал и хочу исправить косяк.
-
Косяк с скриптом.Поспешил. ecx+14 это оказалось ранг
Спойлер[ENABLE] aobscanmodule(HP,cf3.exe,2C 8B 10 89 11 8B 50 04) alloc(newmem,$1000) label(return) registersymbol(HP) newmem: cmp [esp+0C],4E//фильтр от всего кроме игрока и врагов jne short @F cmp [ecx+18],03//непосредственно фильтр на игрока jne short @F mov edx,(float)1000 mov [ecx+14],(float)16//Ранг игрока 16 максимум @@: mov [ecx],edx mov edx,[eax+04] jmp return HP+03: jmp newmem return: [DISABLE] HP+03: db 89 11 8B 50 04 unregistersymbol(*) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: cf3.exe+199D95 cf3.exe+199D75: E8 76 F0 FF FF - call cf3.exe+198DF0 cf3.exe+199D7A: 8B F8 - mov edi,eax cf3.exe+199D7C: 83 C4 0C - add esp,0C cf3.exe+199D7F: 85 FF - test edi,edi cf3.exe+199D81: 75 6E - jne cf3.exe+199DF1 cf3.exe+199D83: 8B 4C 24 10 - mov ecx,[esp+10] cf3.exe+199D87: 83 46 08 F8 - add dword ptr [esi+08],-08 cf3.exe+199D8B: 80 66 05 F7 - and byte ptr [esi+05],-09 cf3.exe+199D8F: 8B 44 24 2C - mov eax,[esp+2C] cf3.exe+199D93: 8B 10 - mov edx,[eax] // ---------- INJECTING HERE ---------- cf3.exe+199D95: 89 11 - mov [ecx],edx // ---------- DONE INJECTING ---------- cf3.exe+199D97: 8B 50 04 - mov edx,[eax+04] cf3.exe+199D9A: 89 51 04 - mov [ecx+04],edx cf3.exe+199D9D: B9 04 00 00 00 - mov ecx,00000004 cf3.exe+199DA2: 39 48 04 - cmp [eax+04],ecx cf3.exe+199DA5: 0F 8C 8C 00 00 00 - jl cf3.exe+199E37 cf3.exe+199DAB: 8B 00 - mov eax,[eax] cf3.exe+199DAD: F6 40 05 03 - test byte ptr [eax+05],03 cf3.exe+199DB1: 0F 84 80 00 00 00 - je cf3.exe+199E37 cf3.exe+199DB7: 84 4B 05 - test [ebx+05],cl cf3.exe+199DBA: 74 7B - je cf3.exe+199E37 }
-
Как же оказалось всё просто. И что я раньше тупил? С этими жизнями.
Спойлер[ENABLE] aobscanmodule(HP,cf3.exe,2C 8B 10 89 11 8B 50 04) alloc(newmem,$1000) label(return) registersymbol(HP) newmem: cmp [esp+0C],4E//фильтр от всего кроме игрока и врагов jne short @F cmp [ecx+14],3F800000//непосредственно фильтр на игрока jne short @F mov edx,(float)10 @@: mov [ecx],edx mov edx,[eax+04] jmp return HP+03: jmp newmem return: [DISABLE] HP+03: db 89 11 8B 50 04 unregistersymbol(*) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: cf3.exe+199D95 cf3.exe+199D75: E8 76 F0 FF FF - call cf3.exe+198DF0 cf3.exe+199D7A: 8B F8 - mov edi,eax cf3.exe+199D7C: 83 C4 0C - add esp,0C cf3.exe+199D7F: 85 FF - test edi,edi cf3.exe+199D81: 75 6E - jne cf3.exe+199DF1 cf3.exe+199D83: 8B 4C 24 10 - mov ecx,[esp+10] cf3.exe+199D87: 83 46 08 F8 - add dword ptr [esi+08],-08 cf3.exe+199D8B: 80 66 05 F7 - and byte ptr [esi+05],-09 cf3.exe+199D8F: 8B 44 24 2C - mov eax,[esp+2C] cf3.exe+199D93: 8B 10 - mov edx,[eax] // ---------- INJECTING HERE ---------- cf3.exe+199D95: 89 11 - mov [ecx],edx // ---------- DONE INJECTING ---------- cf3.exe+199D97: 8B 50 04 - mov edx,[eax+04] cf3.exe+199D9A: 89 51 04 - mov [ecx+04],edx cf3.exe+199D9D: B9 04 00 00 00 - mov ecx,00000004 cf3.exe+199DA2: 39 48 04 - cmp [eax+04],ecx cf3.exe+199DA5: 0F 8C 8C 00 00 00 - jl cf3.exe+199E37 cf3.exe+199DAB: 8B 00 - mov eax,[eax] cf3.exe+199DAD: F6 40 05 03 - test byte ptr [eax+05],03 cf3.exe+199DB1: 0F 84 80 00 00 00 - je cf3.exe+199E37 cf3.exe+199DB7: 84 4B 05 - test [ebx+05],cl cf3.exe+199DBA: 74 7B - je cf3.exe+199E37 }
Спойлер -
Посмотрел я её. Версия 39 GOG
Не чего там в стеке крутить не надо.
Просто трейсиш с условием и поднимаешься вверх. Смотришь за регистрами.
В условие трейса ставишь то что выдаёт сработавшая инструкция на адресе.
На жизни и патроны получилось так сделать.
найти все вариации в смещений "ebp-38"?
ищи выше по коду что пишет в ebp-38
UPDATE: Способом который я описывал выше получилось только на оружие сделать.
Остальное пришлось сравнивать по стеку.
- 1
-
Какая игра?
-
Предметы хранятся как объекты.
-
Положу это сюда. Может кому пригодится.
Спойлер[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) }
- 1
-
Всё нормально ищется. Ищи координаты. Как найдёшь в их структуре уже ищи значения.
При наборе скорости если значение координаты увеличивается то ищи значение как увеличилось
если при наборе скорости координата идёт в минус то и значение отсеивай как уменьшилось.
Когда стоишь отсеивай как диапазон от -1 до +1.
Так найдешь значения отвечающие за ускорение. На каждой координате оно своё.
- 2
-
А чем не устраивает идущий в комплекте с СЕ туториал?
Шаг 8 Многоуровневые указатели.
- 1
-
Точно не помню. Но вроде это флаг. 1/0
-
Попробовал с стима скачать демку и да с VEH дебаггером вылетает но если поставить в режим ядра то всё ок.
- 1
-
-
На этой Just Cause 2 Complete Edition v. 1.0.0.2 [GOG] ни какой анти-отладки нету. Всё хорошо присоединяется.
-
Точно не помню но. К этой игре по-моему нормально цеплялся толи отладчик в режиме ядра или который в СЕ последний.
[Europa Universalis 4], с подробными фото. Нашел инструкцию, а что писать в коде?
in Вопросы по созданию читов в одиночных играх
Опубликовано
В онлайне. Разве что на серверной части.