Pitronic Опубликовано 2 мая, 2021 Поделиться Опубликовано 2 мая, 2021 Вопрос простой но не знаю как это сделать. Под спойлером скрипт. с комментариями. Задача обозначена в скрипте. Игра Saints Row 2.v 1.2 от Буки. Мне это надо не только для этой игры, но и для шаблона если ещё где встретится. Спойлер { Game : SR2_pc.exe Version: Date : 2021-05-02 Author : Pitronic This script does blah blah blah } [ENABLE] aobscanmodule(_good_mode_,SR2_pc.exe,D8 * * * * * * * F6 * * 75 * B0 * * 83 * * * * * * 0F 9D) alloc(newmem,$1000) label(code) label(return) newmem: // [edx+00001120] здесь максимальное значение здоровья гг, но тип 4 байта. code: fcomp dword ptr [edx+00001124] // здесь здорове гг, но тип float. jmp return // задача, записать максимальное здоровье гг, в фактический адрес здоровья гг. _good_mode_: jmp newmem db 90 return: registersymbol(_good_mode_) [DISABLE] _good_mode_: fcomp dword ptr [edx+00001124] unregistersymbol(_good_mode_) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: SR2_pc.exe.text+584661 SR2_pc.exe.text+584647: C1 E1 04 - shl ecx,04 SR2_pc.exe.text+58464A: 8B 89 64 9C 14 02 - mov ecx,[ecx+SR2_pc.exe+1D49C64] SR2_pc.exe.text+584650: 85 C9 - test ecx,ecx SR2_pc.exe.text+584652: 74 05 - je SR2_pc.exe.text+584659 SR2_pc.exe.text+584654: 39 41 44 - cmp [ecx+44],eax SR2_pc.exe.text+584657: 74 02 - je SR2_pc.exe.text+58465B SR2_pc.exe.text+584659: 33 C9 - xor ecx,ecx SR2_pc.exe.text+58465B: 3B CA - cmp ecx,edx SR2_pc.exe.text+58465D: 75 0F - jne SR2_pc.exe.text+58466E SR2_pc.exe.text+58465F: D9 EE - fldz // ---------- INJECTING HERE ---------- SR2_pc.exe.text+584661: D8 9A 24 11 00 00 - fcomp dword ptr [edx+00001124] // ---------- DONE INJECTING ---------- SR2_pc.exe.text+584667: DF E0 - fnstsw ax SR2_pc.exe.text+584669: F6 C4 01 - test ah,01 SR2_pc.exe.text+58466C: 75 03 - jne SR2_pc.exe.text+584671 SR2_pc.exe.text+58466E: B0 01 - mov al,01 SR2_pc.exe.text+584670: C3 - ret SR2_pc.exe.text+584671: 83 BA 8C 0F 00 00 00 - cmp dword ptr [edx+00000F8C],00 SR2_pc.exe.text+584678: 0F 9D C0 - setge al SR2_pc.exe.text+58467B: C3 - ret SR2_pc.exe.text+58467C: CC - int 3 SR2_pc.exe.text+58467D: CC - int 3 } Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 мая, 2021 Поделиться Опубликовано 2 мая, 2021 34 минуты назад, Pitronic сказал: // задача, записать максимальное здоровье гг, в фактический адрес здоровья гг. Спойлер newmem: fild [edx+00001120] загружаем максимальное значение здоровья гг 4 байта одновременно перевожим во float Fstp [edx+00001124] выгружаем в нужный адрес. одновремеено выталкивая значения (т.е. в верхушке стека 0 (смотри fldz) code: fcomp dword ptr [edx+00001124] // здесь здорове гг, но тип float. jmp return 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 мая, 2021 Поделиться Опубликовано 2 мая, 2021 это все есть на форуме Ссылка на комментарий Поделиться на другие сайты Поделиться
Pitronic Опубликовано 2 мая, 2021 Автор Поделиться Опубликовано 2 мая, 2021 10 минут назад, Garik66 сказал: одновременно перевожим во float Спасибо попробую Ссылка на комментарий Поделиться на другие сайты Поделиться
Pitronic Опубликовано 2 мая, 2021 Автор Поделиться Опубликовано 2 мая, 2021 9 минут назад, Garik66 сказал: это все есть на форуме Может и есть ноя не видел, не где. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 мая, 2021 Поделиться Опубликовано 2 мая, 2021 14 минут назад, Pitronic сказал: Может и есть ноя не видел, не где. Первая попавшая Ссылка на комментарий Поделиться на другие сайты Поделиться
Pitronic Опубликовано 2 мая, 2021 Автор Поделиться Опубликовано 2 мая, 2021 (изменено) Не работает Спойлер На скриншоте видно что это максимальное значение в адресе proverka в 4 байтах показывает правилно а во float не правильно. вот мой скрипт Спойлер { Game : SR2_pc.exe Version: Date : 2021-05-02 Author : Pitronic This script does blah blah blah } [ENABLE] aobscanmodule(_heallth_deloper_gg_,SR2_pc.exe,D8 9A 24 11 00 00 DF E0 F6 C4 01 75 03) // should be unique alloc(newmem,$1000) label(code) label(return) label(proverka) registersymbol(_heallth_deloper_gg_) registersymbol(proverka) newmem: //cmp [edx+111C],#0 //jne code fld [edx+00001120] fstp [proverka] code: fcomp dword ptr [edx+00001124] jmp return proverka: dd 0 _heallth_deloper_gg_: jmp newmem nop return: [DISABLE] _heallth_deloper_gg_: db D8 9A 24 11 00 00 unregistersymbol(_heallth_deloper_gg_) unregistersymbol(proverka) dealloc(newmem) { // ORIGINAL CODE - INJECTION POINT: SR2_pc.exe.text+584661 SR2_pc.exe.text+584647: C1 E1 04 - shl ecx,04 SR2_pc.exe.text+58464A: 8B 89 64 9C 14 02 - mov ecx,[ecx+SR2_pc.exe+1D49C64] SR2_pc.exe.text+584650: 85 C9 - test ecx,ecx SR2_pc.exe.text+584652: 74 05 - je SR2_pc.exe.text+584659 SR2_pc.exe.text+584654: 39 41 44 - cmp [ecx+44],eax SR2_pc.exe.text+584657: 74 02 - je SR2_pc.exe.text+58465B SR2_pc.exe.text+584659: 33 C9 - xor ecx,ecx SR2_pc.exe.text+58465B: 3B CA - cmp ecx,edx SR2_pc.exe.text+58465D: 75 0F - jne SR2_pc.exe.text+58466E SR2_pc.exe.text+58465F: D9 EE - fldz // ---------- INJECTING HERE ---------- SR2_pc.exe.text+584661: D8 9A 24 11 00 00 - fcomp dword ptr [edx+00001124] // ---------- DONE INJECTING ---------- SR2_pc.exe.text+584667: DF E0 - fnstsw ax SR2_pc.exe.text+584669: F6 C4 01 - test ah,01 SR2_pc.exe.text+58466C: 75 03 - jne SR2_pc.exe.text+584671 SR2_pc.exe.text+58466E: B0 01 - mov al,01 SR2_pc.exe.text+584670: C3 - ret SR2_pc.exe.text+584671: 83 BA 8C 0F 00 00 00 - cmp dword ptr [edx+00000F8C],00 SR2_pc.exe.text+584678: 0F 9D C0 - setge al SR2_pc.exe.text+58467B: C3 - ret SR2_pc.exe.text+58467C: CC - int 3 SR2_pc.exe.text+58467D: CC - int 3 } Изменено 2 мая, 2021 пользователем Pitronic исправление грам ошибок Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 мая, 2021 Поделиться Опубликовано 2 мая, 2021 3 минуты назад, Pitronic сказал: Не работает а повнимательнее 4 минуты назад, Pitronic сказал: fld [edx+00001120] 57 минут назад, Garik66 сказал: fild [edx+00001120] Ссылка на комментарий Поделиться на другие сайты Поделиться
Pitronic Опубликовано 2 мая, 2021 Автор Поделиться Опубликовано 2 мая, 2021 35 минут назад, Garik66 сказал: fild [edx+00001120] а понял филд а не флд Работает! Тему можно закрыть. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения