 |

31.12.2016, 12:14
|
|
Познающий
Регистрация: 26.12.2016
Сообщений: 64
С нами:
4936162
Репутация:
0
|
|
Возникла у меня необходимость подгрузить мой SCM вместо стандартного.
Данное решение предназначено для GTA Vice City, но если изменить смещение то можно будет применять во всех играх на RenderWare(GTA III, GTA VC, GTA SA).
Как же это осуществить?
Есть специальная переменная которая аллокэйтится при старте игры(после видео но до меню).
Имеет она тип массива байтов.
Массив байтов? Таакс, PCHAR отлично сойдет.
Стоит отметить то что имя вашего scm должно иметь точно такую же длину как и у оригинала(main.scm), иначе игра крашнется с sigsegv(так как для этой переменной выделенно 8 байтов в памяти).
Смещение данной переменной(для версии 1.0): 0x06886AC
Объявление данной переменной:
Для плюсов
Код:
Для Delphi
Код:
Код:
var
scmName: array[0..8] of Char;
Чтобы изменить значение данного участка памяти, мы можем воспользоватся функцией WinApi CopyMemory:
Код:
Код:
var
MyNewString: PChar;
...
MyNewString := 'test.scm';
CopyMemory(Pointer($006886AC), MyNewString, sizeof(MyNewString));
Теперь игра будет подгружать test.scm вместо main.scm, что даст вам возможность модифицировать сюжет, и не только без CLEO но и не портя оригинальный сюжет.
|
|
|

31.12.2016, 12:46
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Так почти любой файл можно подменить, смотри в собейт. А еще можно похукать функцию, которая обращается к этой переменной и считать название файла из другого адреса, другого размера.
|
|
|

31.12.2016, 15:27
|
|
Познающий
Регистрация: 26.12.2016
Сообщений: 64
С нами:
4936162
Репутация:
0
|
|
Сообщение от SR_team
Так почти любой файл можно подменить, смотри в собейт. А еще можно похукать функцию, которая обращается к этой переменной и считать название файла из другого адреса, другого размера.
Функция: loadScm.
Незнаю как её похукать, вставить весь асм из idb?
|
|
|

31.12.2016, 16:07
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от monobogdan
Функция: loadScm.
Незнаю как её похукать, вставить весь асм из idb?
На самом деле можно просто вставить вызов твоего кода. Но можно и проще - в функции изменить адрес чтения названия файла
|
|
|

31.12.2016, 16:10
|
|
Познающий
Регистрация: 26.12.2016
Сообщений: 64
С нами:
4936162
Репутация:
0
|
|
Сообщение от SR_team
На самом деле можно просто вставить вызов твоего кода. Но можно и проще - в функции изменить адрес чтения названия файла
Можно и так.
Но тот пример что я привел самый простой.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|