You are not logged in.
Еще один лимит в скриптинге был устранен: я смог реализовать VirtualProtect через скрипты, поэтому теперь вовсе не требуется патчить exe, для того чтобы менять некоторые адреса - теперь тоже самое можно делать через СКМ.
Сейчас думаю над оптимизацией.
Offline
Вот полностью автономная процедура записи значения с опр. длиной (1, 2, 4 байта) по любому адресу, защищенному Virtual Protect'ом, без использования патча.
Работает на версии 1.0 US
:MemoryProofWrite 3@ == 1 jf @_____novp 4@ = -429863 &0(4@,1i) = 0xA49960 &0(4@,1i) += @_____vpsv 0052: gap 0 virtual_protect_at_address 0@ size 1@ newprotect 4 gap 0 0 0572: 1 gosub @MemoryWrite 0052: gap 0 virtual_protect_at_address 0@ size 1@ newprotect -1 gap 0 0 0572: 1 &0(4@,1i) = 0 end_thread :_____novp gosub @MemoryWrite end_thread :MemoryWrite 3@ = -429864 &0(3@,1i) = 0xA49960 &0(3@,1i) += @_____mwss 0052: gap 0 target_address 0@ size 1@ value 2@ gap 0 0 0A3D: 1 &0(3@,1i) = 0 return :_____vpsv hex 68 F4 3C A4 00 83 3D 84 3C A4 00 FF 75 08 FF 35 F4 3C A4 00 EB 06 FF 35 84 3C A4 00 FF 35 80 3C A4 00 FF 35 7C 3C A4 00 FF 15 2C 80 85 00 C3 end :_____mwss hex 8B 15 7C 3C A4 00 8B 05 84 3C A4 00 83 3D 80 3C A4 00 01 75 03 88 02 C3 83 3D 80 3C A4 00 02 75 04 66 89 02 C3 89 02 C3 end
Это по сути поток, который выполняется однократно. При его создании передаются 4 параметра
create_thread @MemoryProofWrite address XXX size XXX value XXX VirtualProtect XXX
Все параметры те же, что и для процедуры WriteMem в хелпе к саннику.
Пример использования: меняем гравитацию через SCM /c VirtualProtect
create_thread @MemoryProofWrite address 0x00863984 size 4 value 0.002 VirtualProtect 1
Этим самым мы запишем по адресу 0x00863984 число 0.002 (пример из патча). Можно использовать переменные.
Пример 2. Убираем сообщение, которое появляется когда Карл садится в машину в первый раз /без VirtualProtect
create_thread @MemoryProofWrite address 0xC0BC15 size 1 value 1
SCM+исходник для тех, кто не понял
Last edited by Seemann (03-03-2007 10:20)
Offline
Круто ! Теперь надо бы написать процедуру , чтобы определять размер exe ...
Offline
Здесь лежит доработанный поток, позволяющий записывать/читать адреса с Virtual Protect'ом. Там же есть вариант и для обеих версих игры
http://www.gtaforums.com/index.php?show … &p=4078156
Offline
Думаю никому это не надо
Почему же не надо?
Мне было бы очень интересно почитать, и времени свободного, вагон и маленькая тележка.
Offline