Суббота, 20.04.2024, 10:28
Качественные скрипты, моды и дополнения для GTA без регистрации
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с памятью игры, exe
Работа с памятью игры, exe
Den_spbДата: Воскресенье, 02.01.2011, 18:14 | Сообщение # 76
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (walk)
А как понять, что какая-либо функция обращается к структуре?
Предположим, указатель на структуру объекта находится в ecx. Команда записи числа 0x10 по смещению 5 структуры будет выглядеть так:
Code
mov         [ecx+5], 10h
Часто указатели на структуру имеют буквенные обозначения, тогда будет написано что-то вроде этого:
Code
mov         [ecx+CObject.field_5], 10h
Quote (walk)
И можно ли их использовать в своих целях?
Это смещения в какой-то структуре. Записывать/читать можно многие адреса. Для этого используются опкоды read memory и write memory.
 
walkДата: Воскресенье, 02.01.2011, 18:17 | Сообщение # 77
Группа: Проверенные
Сообщений: 96
Статус: Offline
Quote (Den_spb)
Это смещения в какой-то структуре. Записывать/читать можно многие адреса. Для этого используются опкоды read memory и write memory.

Получается так обозначены неизвестные смещения?
 
Den_spbДата: Воскресенье, 02.01.2011, 18:19 | Сообщение # 78
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Получается да. Известные смещения обычно имеют названия.
Кстати, на скрине видно смещение IsWastedBusted. Можно попробовать записать в него 2.
 
walkДата: Воскресенье, 02.01.2011, 18:23 | Сообщение # 79
Группа: Проверенные
Сообщений: 96
Статус: Offline
Quote (Den_spb)
mov [ecx+5], 10h

mov обязательно будет присутствовать

И можно по подробней, что означают эти mov, cmp и т.д.

Ну это наверное последнее на сегодня, я смотрю вас уже порядком достал вопросами smile

Добавлено (02.01.2011, 18:23)
---------------------------------------------

Quote (Den_spb)
Кстати, на скрине видно смещение IsWastedBusted. Можно попробовать записать в него 2.

Неа, пробовал, даже код остался:

Code
:TEST_10
wait 0  
if  
    Player.Defined($player_char)
else_jump @TEST_82  
if  
00E1:   key_pressed 0 14  
else_jump @TEST_82  
05E6: 0@ = actor $player_actor struct  
0@ += 0xCC
05DF: write_memory 0@ size 1 value 2 virtual_protect 0

wait 1000  

:TEST_82
jump @TEST_10
 
Den_spbДата: Воскресенье, 02.01.2011, 18:24 | Сообщение # 80
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (walk)
mov обязательно будет присутствовать
В зависимости от того, как используется значение, будет стоять соответствующая команда. Вот неплохая статья по ассемблеру для новичков: http://sannybuilder.com/forums/viewtopic.php?id=41
Quote
Неа, пробовал, даже код остался
Наверно в смещение записывается 2, когда уже сработал основной процесс, отвечающий за арест игрока.
 
walkДата: Воскресенье, 02.01.2011, 18:25 | Сообщение # 81
Группа: Проверенные
Сообщений: 96
Статус: Offline
Кстати, хорошо былоб еслиб ты взглянул на этот код, мне кажется, что я неправильно обращаюсь к структуре (CPlayer)
 
Den_spbДата: Воскресенье, 02.01.2011, 18:32 | Сообщение # 82
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
По-моему ошибок нет.
 
walkДата: Понедельник, 03.01.2011, 09:38 | Сообщение # 83
Группа: Проверенные
Сообщений: 96
Статус: Offline
Вобщем ещё вопросы:

Как именно работает значения .data и .bss, что может делать команда set_wasted_or_busted_check?

Добавлено (03.01.2011, 07:17)
---------------------------------------------
Ещё вопрос, как обращаться к структурам CCam, CMenuManager и т.д.?

Вобще как я понял, надо в .data искать название структуры, потом прибавлять к этому значению смещение в самой структуре, я так понял? wacko

Добавлено (03.01.2011, 09:38)
---------------------------------------------

Code
        0A8C: write_memory 0xBA67A4 size 4 value 0x000001 virtual_protect 0
         0A8C: write_memory 0xBA68A4 size 4 value 0x290501 virtual_protect 0    
         0AA5: call 0x7469A0 num_params 0 pop 0  //mouse
         while 0AB0:  key_pressed 9     
             wait 0
         end  
         0A8C: write_memory 0xBA67A4 size 4 value 0x000000 virtual_protect 0
         0A8C: write_memory 0xBA68A4 size 4 value 0x000000 virtual_protect 0
         0AA5: call 0x746F70 num_params 0 pop 0  //mouse off

Распишите мне пожалуйста, за что отвечают эти параметры, сам не могу найти sad

 
Den_spbДата: Понедельник, 03.01.2011, 14:01 | Сообщение # 84
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (walk)
.data
В exe есть 2 основных типа адресов: data и text. В data-адресах хранятся различные данные, которые читаются и перезаписываются функциями. Эти адреса можно сравнить с глобальными переменными в скриптах. В text-адресах записаны отдельные команды различных функций exe. Т.е. если изменить значение, записанное по какому-то text-адресу, то функция, частью которой является данный адрес, станет работать по новому алгоритму.
Quote (walk)
.bss
Не видел такого.
Quote (walk)
команда set_wasted_or_busted_check
Если не ошибаюсь, она активирует автоматический провал миссии при аресте или смерти игрока (постоянно проверять факт ареста или смерти в миссии не нужно). Вроде описание к ней было в справке СБ или в одной из тем СБ-форума.
Quote (walk)
Ещё вопрос, как обращаться к структурам CCam, CMenuManager и т.д.?
Работа со структурами всегда одинаковая: вычисляется начало структуры (указатель), к указателю прибавляется нужное смещение, затем читается или пишется значение полученного адреса.
Quote (walk)
Распишите мне пожалуйста, за что отвечают эти параметры, сам не могу найти
Переход на нужный адрес: жмёшь G, вводишь адрес. Просмотр функций, обращающихся к адресу - вставляешь текстовый курсор между буквами названия адреса, жмёшь X.
 
walkДата: Понедельник, 03.01.2011, 16:47 | Сообщение # 85
Группа: Проверенные
Сообщений: 96
Статус: Offline
Quote (Den_spb)
Не видел такого.

Вайс сити smile

Quote (Den_spb)
вычисляется начало структуры (указатель)

Как вычислить?
Так это не правильно я понял:
Quote
Вобще как я понял, надо в .data искать название структуры, потом прибавлять к этому значению смещение в самой структуре, я так понял? wacko
?

Добавлено (03.01.2011, 16:47)
---------------------------------------------
Всёравно всё не особо получается, допустим не могу узнать кол-во денег на счету игрока(СА):

http://savepic.org/1173713.jpg

Код:

Code
:Noname_2
wait 0   
if   
     Player.Defined($PLAYER_CHAR)          
jf @Noname_232   
if   
0AB0:   key_pressed 9   
jf @Noname_232   
0A96: 0@ = actor $PLAYER_ACTOR struct   
0@ += 0xB8
0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0   
054C: use_GXT_table 'POOL'   
01E3: text_1number_styled 'NUM' 1@ 5000 ms 1 // ~1~

wait 500

   :Noname_232
   jump @Noname_2

В чём ошибка? sad

Сообщение отредактировал walk - Понедельник, 03.01.2011, 16:48
 
Den_spbДата: Понедельник, 03.01.2011, 18:30 | Сообщение # 86
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (walk)
В чём ошибка?
Начало структуры CPlayer - 0x00B7CD98. Вот так работает:
Code
{$CLEO}
wait 0
:Noname_2  
wait 0    
if    
      Player.Defined($PLAYER_CHAR)           
jf @Noname_232
0@ = 0x0B7CD98    
0@ += 0xB8  
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0    
03F0: enable_text_draw 1  
045A: draw_text_1number 300.0 200.0 GXT 'NUMBER' number 0@  // ~1~  

:Noname_232  
jump @Noname_2
 
walkДата: Понедельник, 03.01.2011, 18:38 | Сообщение # 87
Группа: Проверенные
Сообщений: 96
Статус: Offline
Den_spb, то есть это относится
Code
0A96: 0@ = actor $PLAYER_ACTOR struct
к структре CPlayerPed (ну или что-то в этом роде)?
 
Den_spbДата: Понедельник, 03.01.2011, 18:46 | Сообщение # 88
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
0A96 употребляется для вычисления указателя на структуру педа (и педа игрока в том числе).
А CPlayer - это отдельная структура, в которой хранятся значения свойств, имеющихся только у игрока (деньги и т.п.).
П.С. Код в сообщении 79 тоже надо переделать подобным образом, только в VC адрес CPlayer другой.
 
walkДата: Вторник, 04.01.2011, 10:14 | Сообщение # 89
Группа: Проверенные
Сообщений: 96
Статус: Offline
В вайсити в структуре CCam имеется смещение TargetEntity (float) - за что оно может отвечать ?

Добавлено (04.01.2011, 10:14)
---------------------------------------------
Ещё вопрос, где примерно может содержаться указатель на педа под прицелом(мне для вайсити)?

Сообщение отредактировал walk - Вторник, 04.01.2011, 06:18
 
Den_spbДата: Вторник, 04.01.2011, 15:58 | Сообщение # 90
Создатель сайта
Группа: Администраторы
Сообщений: 1595
Статус: Offline
Quote (walk)
В вайсити в структуре CCam имеется смещение TargetEntity (float) - за что оно может отвечать ?
float обычно используется для каких-то коэффициентов, расстояний, углов, скоростей и т.п.
Quote (walk)
Ещё вопрос, где примерно может содержаться указатель на педа под прицелом(мне для вайсити)?
А есть ли там такой указатель? Ведь треугольник над целью в VC не создаётся.
 
Форум » Игры серии ГТА » Работа с памятью, exe » Работа с памятью игры, exe
Поиск: