Четверг, 28.03.2024, 12:04
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с памятью игры, exe
Работа с памятью игры, exe
Den_spbДата: Суббота, 26.03.2011, 00:23 | Сообщение # 151
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Продвинутые вещи делаешь, молодец smile
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. Этот стиль появляется у всех актёров, хотя у них нет этого оружия.

 
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с памятью игры, exe
Поиск: