Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2011, 21:20   #1
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
Вопрос Как присвоить адрес массиву?

есть код:
есть адрес 0x0782A14;

Код:
int  WeaponType[37];
WeaponType у этого массива свой адрес, мне-же нужно читать этим же массивом, по другому адресу (0x0782A14), как присвоить адрес?
VintProg вне форума Ответить с цитированием
Старый 27.10.2011, 21:40   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Что значит, "читать этим массивом"?
Если нужно сделать так, чтобы WeaponType обращался к памяти начиная с адреса 0x0782A14, то как-то так:
Код:
int* WeaponType;
WeaponType = reinterpret_cast<int*>(0x0782A14);
Не поясните поподробнее базовую задачу - откуда этот адрес вообще взялся такой нетипизированный?
Abstraction вне форума Ответить с цитированием
Старый 27.10.2011, 22:07   #3
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Это в GTA , я пишу плагины...
VintProg вне форума Ответить с цитированием
Старый 28.10.2011, 00:32   #4
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Или так int *pAddr = (int*)0x0782A14;
coNsept вне форума Ответить с цитированием
Старый 28.10.2011, 00:38   #5
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Цитата:
Не поясните поподробнее базовую задачу - откуда этот адрес вообще взялся такой нетипизированный?
Исходников видимо нема, вот и ползает по дизассемблеру.
coNsept вне форума Ответить с цитированием
Старый 28.10.2011, 13:06   #6
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Угу... Модостроители ждут =)
VintProg вне форума Ответить с цитированием
Старый 28.10.2011, 13:09   #7
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

А вы уверены, что этот адрес вас к чему-то приведет? Ведь у программы свое адресное пространство. (Я в этом плохо разбираюсь, честно говоря)
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 28.10.2011, 13:13   #8
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Syuf,
Плагин - это обычно как раз то, что запускается в адресном пространстве базовой программы, насколько мне известно.
Abstraction вне форума Ответить с цитированием
Старый 28.10.2011, 13:13   #9
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Смотрим вот сюда:

Код:
.text:005D5710                                         ; CWeaponInfo *__cdecl GetWeaponInfoByIndex(int weaponIndex)
.text:005D5710                                         GetWeaponInfoByIndex proc near          ; CODE XREF: _endCutscene+278p
.text:005D5710                                                                                 ; _endCutscene+2A8p
.text:005D5710                                                                                 ; _endCutscene+2BCp
.text:005D5710                                                                                 ; sub_429910+2Cp ...
.text:005D5710
.text:005D5710                                         weaponIndex     = dword ptr  4
.text:005D5710
.text:005D5710 000 8B 4C 24 04                                         mov     ecx, [esp+weaponIndex]
.text:005D5714 000 8D 04 49                                            lea     eax, [ecx+ecx*2]
.text:005D5717 000 C1 E0 05                                            shl     eax, 5
.text:005D571A 000 8D 04 88                                            lea     eax, [eax+ecx*4]
.text:005D571D 000 05 14 2A 78 00                                      add     eax, offset WeaponType
.text:005D5722 000 C3                                                  retn
.text:005D5722                                         GetWeaponInfoByIndex endp

Адрес массива структур:
.bss:00782A14 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??+ WeaponType CWeaponInfo 25h dup(<?>)

Результат отреверисрованой работы:

Код:
CWeaponInfo* GetWeaponInfoByIndex(int index){
  CWeaponInfo* WeaponType; 
  WeaponType = (CWeaponInfo*)0x0782A14;
  return  &(WeaponType)[index];
};
VintProg вне форума Ответить с цитированием
Старый 28.10.2011, 13:22   #10
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Код:
CWeaponInfo* GetWeaponInfoByIndex(int index){
  CWeaponInfo* WeaponType; 
  WeaponType = (CWeaponInfo*)0x0782A14;
  return  &(WeaponType)[index];
};
==
Код:
CWeaponInfo* GetWeaponInfoByIndex(int index){
    return (CWeaponInfo*)0x0782A14 + index;
}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу присвоить адрес? VintProg Общие вопросы C/C++ 11 17.06.2011 05:55
как присвоить все три значения вектору В и вывести его как массив столбец при вызове функции Tomoa Microsoft Office Excel 8 08.03.2010 20:42
Как передать адрес метода из dll в приложение и присвоить его событию OnClick? puga555 Общие вопросы Delphi 1 22.12.2009 17:04
как сделать прогу по одномерному массиву student2009 Паскаль, Turbo Pascal, PascalABC.NET 14 02.06.2009 10:20
как узнать ip адрес зная mac адрес Roman Работа с сетью в Delphi 9 25.06.2007 12:39