HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 31.12.2016, 12:14
monobogdan
Познающий
Регистрация: 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

Объявление данной переменной:

Для плюсов

Код:





Код:
char scmName[8];


Для 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 но и не портя оригинальный сюжет.
 
Ответить с цитированием

  #2  
Старый 31.12.2016, 12:46
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

Так почти любой файл можно подменить, смотри в собейт. А еще можно похукать функцию, которая обращается к этой переменной и считать название файла из другого адреса, другого размера.
 
Ответить с цитированием

  #3  
Старый 31.12.2016, 15:27
monobogdan
Познающий
Регистрация: 26.12.2016
Сообщений: 64
С нами: 4936162

Репутация: 0
По умолчанию

Цитата:
Сообщение от SR_team  

Так почти любой файл можно подменить, смотри в собейт. А еще можно похукать функцию, которая обращается к этой переменной и считать название файла из другого адреса, другого размера.
Функция: loadScm.

Незнаю как её похукать, вставить весь асм из idb?
 
Ответить с цитированием

  #4  
Старый 31.12.2016, 16:07
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

Цитата:
Сообщение от monobogdan  

Функция: loadScm.
Незнаю как её похукать, вставить весь асм из idb?
На самом деле можно просто вставить вызов твоего кода. Но можно и проще - в функции изменить адрес чтения названия файла
 
Ответить с цитированием

  #5  
Старый 31.12.2016, 16:10
monobogdan
Познающий
Регистрация: 26.12.2016
Сообщений: 64
С нами: 4936162

Репутация: 0
По умолчанию

Цитата:
Сообщение от SR_team  

На самом деле можно просто вставить вызов твоего кода. Но можно и проще - в функции изменить адрес чтения названия файла
Можно и так.

Но тот пример что я привел самый простой.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Внести депозит

Введите сумму USDT:

Принимается только USDT TRC20. Fake/Flash USDT не засчитывается.

×

Вывести депозит

Сумма USDT:

Ваш USDT TRC20 кошелек:

Заявка будет отправлена администратору. Комиссия форума: 2%.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...
×

ESCROW ADMIN PANEL

Загрузка...
Загрузка...