Работа с памятью игры, exe
|
|
Den_spb | Дата: Суббота, 26.03.2011, 00:23 | Сообщение # 151 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Продвинутые вещи делаешь, молодец Quote (DK22Pac) 05DF: write_memory 0x4D7468 size 2 value 0xXX virtual_protect 1 //mov ecx, eax ; где-то не могу найти как это будет в hex Зачем искать? Просто открой вкладку IDA Hex View-A - на ней стандартный код exe будет отображён в hex-формате. По адресу находишь нужные байты и вписываешь их значения в опкод перезаписи памяти. Quote (DK22Pac) 05DF: write_memory 0x4D7468 size 1 value 0xEB virtual_protect 1 //jmp 05DF: write_memory 0x4D7469 size 1 value 0x10 virtual_protect 1 //+0x10 Можно свернуть в одну команду: 05DF: write_memory 0x4D7468 size 2 value 0x10EB virtual_protect 1 //jmp По идее, после восстановления старых значений по всем трём байтам, функция должна работать как обычно.
|
|
| |
d88 | Дата: Суббота, 02.04.2011, 16:21 | Сообщение # 152 |
Группа: Проверенные
Сообщений: 113
Статус: Offline
| Мне нужны адреса оружий что прописать в этот код 0A8C: write_memory 13155060 size 4 value 361 virtual_protect 0
|
|
| |
Den_spb | Дата: Суббота, 02.04.2011, 20:26 | Сообщение # 153 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Не понял. Где ты взял этот опкод? Что он делает и чего ты хочешь добиться?
|
|
| |
DK22Pac | Дата: Суббота, 02.04.2011, 21:40 | Сообщение # 154 |
$player_actor
Группа: Проверенные
Сообщений: 559
Статус: Offline
| Den_spb, может мне переписать уже измененную функцию в скрипт? Добавлено (02.04.2011, 21:40) --------------------------------------------- Вот, пока что без перевода в hex. Смещения для jz и jnz узнаю через лейбл_оффсет, ещё надо будет как-то узнать смещение адресса для опкода call. Ещё надо будет где-то это смещение узнавать? Code :function hex push ebx mov ebx, ecx cmp byte ptr [ebx+314h], 0 fldz jz short loc_4D73E2 fstp st pop ebx retn end :label2 //loc_4D73E2 hex cmp byte ptr [ebx+123h], 1Ah jnz short loc_4D7420 lea eax, [ebx+14h] fld dword ptr [eax+4] fmul dword ptr [ebx+118h] fld dword ptr [eax] fmul dword ptr [ebx+114h] faddp st(1), st fld dword ptr [eax+8] fmul dword ptr [ebx+11Ch] faddp st(1), st fcomp flt_5F8438 fnstsw ax and ah, 5 cmp ah, 1 jnz short loc_4D7420 fstp st pop ebx retn end :label3 //loc_4D7420 hex fld dword ptr [ebx+2D8h] fst st(1) fmul st, st fld dword ptr [ebx+2D4h] fstp st(2) mov ecx, ebx fld st(1) fmul st, st faddp st(1), st fsqrt fstp st fstp st call SetStoredState__4CPedFv ; CPed::SetStoredState((void)) mov dword ptr [ebx+224h], 23h mov eax, [ebx+4Ch] push dword_5F8444 push 94h push 0 push eax call BlendAnimation__12CAnimManagerFP7RpClump12AssocGroupId11AnimationIdf ; CAnimManager::BlendAnimation((RpClump *,AssocGroupId,AnimationId,float)) retn end
Сообщение отредактировал DK22Pac - Суббота, 02.04.2011, 21:40 |
|
| |
Den_spb | Дата: Суббота, 02.04.2011, 21:41 | Сообщение # 155 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (DK22Pac) Den_spb, может мне переписать уже измененную функцию в скрипт? Не знаю, будет ли эффект. Quote (DK22Pac) Смещения для jz и jnz узнаю через лейбл_оффсет, ещё надо будет как-то узнать смещение адресса для опкода call. Ещё надо будет где-то это смещение узнавать? Насколько мне известно, смещения указываются только в командах переходов и в команде call.
|
|
| |
d88 | Дата: Воскресенье, 03.04.2011, 17:21 | Сообщение # 156 |
Группа: Проверенные
Сообщений: 113
Статус: Offline
| Quote (Den_spb) Не понял. Где ты взял этот опкод? Что он делает и чего ты хочешь добиться? Его когда-то Alien дал, с его помощью можно заменить модель огнемёта. 13155060 - видимо адрес огнемёта 361 - ID модели. Хочу также для осталных оружий.
|
|
| |
Den_spb | Дата: Воскресенье, 03.04.2011, 20:57 | Сообщение # 157 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Вообще-то адрес 13155060 (0xC8BAF4) предназначен для хранения значений длиной в 1 байт, а не 4:Code .data:00C8BAF4 db ? ; Но если ты уже испытывал эту команду и она работает так, как ты описал, то можешь поэкспериментировать с соседними адресами: ... 13155052, 13155056, 13155060, 13155064, 13155068 ...
|
|
| |
d88 | Дата: Воскресенье, 03.04.2011, 22:20 | Сообщение # 158 |
Группа: Проверенные
Сообщений: 113
Статус: Offline
| Quote (Den_spb) она работает так, как ты описал Отлично работает, я заменял модель огнемёта, а если вместо ID поставить -1, то он вообще становится невидимым. Но теперь мне надо также для некоторых НЕогнестрельных оружий, наверняка их адреса не рядом с этим, придётся много пробовать. А ты не знаешь, как Alien получил этот адрес, может есть список и он как-то вычисляется?
|
|
| |
Den_spb | Дата: Воскресенье, 03.04.2011, 23:15 | Сообщение # 159 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Quote (d88) А ты не знаешь, как Alien получил этот адрес, Не знаю.
|
|
| |
izerli | Дата: Понедельник, 11.04.2011, 21:59 | Сообщение # 160 |
Группа: Проверенные
Сообщений: 90
Статус: Offline
| Den_spb, здравствуйте, а вы не подскажите как можно через память заставить машины игнорировать светофоры? я так представляю что нужно внушить игре что все светофоры зеленые, но при этом чтобы они работали в обычном режиме. опкод 00AE: unknown_set_car 71@ to_ignore_traffic_lights 2 не подходит, водилы как наркоманы начинают ездить...
|
|
| |
Den_spb | Дата: Понедельник, 11.04.2011, 23:59 | Сообщение # 161 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Добрый день. Нужно пропатчить процедуру CTrafficLights_ShouldCarStopForTrafficLight (адрес 0x49D610) так, чтобы она всегда возвращала 0 (машине не следует останавливаться перед светофором). Код: Code {$CLEO} 0A8C: write_memory 0x49DA9E size 2 value 0xC032 virtual_protect 1 0A8C: write_memory 0x49D784 size 2 value 0xC032 virtual_protect 1 0A8C: write_memory 0x49D7A7 size 2 value 0xC032 virtual_protect 1 0A8C: write_memory 0x49D8FA size 2 value 0xC032 virtual_protect 1 0A8C: write_memory 0x49D91D size 2 value 0xC032 virtual_protect 1 0A8C: write_memory 0x49DA7B size 2 value 0xC032 virtual_protect 1 0A93:
|
|
| |
izerli | Дата: Вторник, 12.04.2011, 11:58 | Сообщение # 162 |
Группа: Проверенные
Сообщений: 90
Статус: Offline
| Den_spb, спасибо огромное!
|
|
| |
d88 | Дата: Четверг, 21.04.2011, 19:11 | Сообщение # 163 |
Группа: Проверенные
Сообщений: 113
Статус: Offline
| [url=http://gtamodding.ru/w/index.php?title=%D0%90%D0%B4%D1%80%D0%B5%D1%81%D0%B0_%D0%9F%D0%B0%D0%BC%D1%8F%D1%82%D0%B8_(SA)#WEAPON.DAT]Здесь[/url] есть такие указатели Code +0x1C = [dword] AssocGroupId. Некоторые анимационные группы и их идентификаторы: 0 - 'default' 11 - 'python' 12 - 'pythonbad' 13 - 'colt45' 14 - 'colt_cop' 15 - 'colt45pro' 16 - 'sawnoff' 17 - 'sawnoffpro' 18 - 'silenced' 19 - 'shotgun' 20 - 'shotgunbad' 21 - 'buddy' 22 - 'buddybad' 23 - 'uzi' 24 - 'uzibad' 25 - 'rifle' 26 - 'riflebad' 27 - 'sniper' 28 - 'grenade' 29 - 'flame' 30 - 'rocket' 31 - 'spraycan' 32 - 'goggles' 33 - 'melee_1' 34 - 'melee_2' 35 - 'melee_3' 36 - 'melee_4' 37 - 'bbbat_1' 38 - 'gclub_1' 39 - 'knife_1' 40 - 'sword_1' 41 - 'dildo_1' 42 - 'flowers_1' 43 - 'csaw_1' Я пробовал их использовать Code 0@ = 11 //индекс оружия 0@ *= 112 //размер структуры 0@ += 13150904 //поинтер на массив структур 0@ += 28 //смещение в структуре 0A8C: write_memory 0@ size 4 value 37 virtual_protect 0 01B2: give_actor $PLAYER_ACTOR weapon 11 ammo 1 Но не работает.
|
|
| |
Den_spb | Дата: Четверг, 21.04.2011, 19:40 | Сообщение # 164 |
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
| Запись значения осуществлена правильно. В статье написано, что к индексу оружия надо ещё прибавлять смещение, соответствующее навыку оружия, но в твоём примере, если я правильно понял, смещение соответствует нулю.
|
|
| |
d88 | Дата: Пятница, 22.04.2011, 09:01 | Сообщение # 165 |
Группа: Проверенные
Сообщений: 113
Статус: Offline
| Quote (Den_spb) если я правильно понял, смещение соответствует нулю. Да, поэтому я просто убрал строку 0@ += 0. Так что мне с этим делать? Кстати, я ещё пробовал изменять стили по этим данным Code +0x6E = [byte] ComboID 4 - "Руки" 8 - "Бита" 9 - "Нож" 10 - "GOLFCLUB" 11 - "Катана" 12 - "Бензопила" 13 - "Дилдо" 14 - "Цветы" Но тогда 2 проблемы 1. Этот стиль становится не только у указанного оружия, но и вообще при отсутствии оружия 2. Этот стиль появляется у всех актёров, хотя у них нет этого оружия.
|
|
| |