 |
|

03.09.2021, 23:49
|
|
Участник форума
Регистрация: 23.08.2021
Сообщений: 212
С нами:
2487976
Репутация:
48
|
|
Можно ли в последней Visual Studio 2019 создавать .sf плагины и .dll(.asi) плагины?
|
|
|

03.09.2021, 23:49
|
|
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами:
4091290
Репутация:
213
|
|
можно
|
|
|

05.09.2021, 12:14
|
|
Участник форума
Регистрация: 08.03.2019
Сообщений: 121
С нами:
3781678
Репутация:
113
|
|
как на плюсах подменить структуру из памяти, на свою?
|
|
|

05.09.2021, 12:49
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами:
4272230
Репутация:
183
|
|
Сообщение от legendabrn
как на плюсах подменить структуру из памяти, на свою?
Так же, как и любое значение из памяти, через reinterpret_cast, наверно.
|
|
|

05.09.2021, 13:01
|
|
Участник форума
Регистрация: 08.03.2019
Сообщений: 121
С нами:
3781678
Репутация:
113
|
|
Сообщение от Musaigen
Так же, как и любое значение из памяти, через reinterpret_cast, наверно.
Код:
Код:
#pragma pack(push, 1)
struct CAR_MOD_INFO
{
int test;
} mTest[24];
#pragma pack(pop)
*reinterpret_cast(0xABCFFF + 0xAB) = *reinterpret_cast(&mTest[1]);
пытался таким способом, безуспешно
|
|
|

05.09.2021, 13:08
|
|
Познавший АНТИЧАТ
Регистрация: 01.04.2018
Сообщений: 1,710
С нами:
4272230
Репутация:
183
|
|
Сообщение от legendabrn
Код:
Код:
#pragma pack(push, 1)
struct CAR_MOD_INFO
{
int test;
} mTest[24];
#pragma pack(pop)
*reinterpret_cast(0xABCFFF + 0xAB) = *reinterpret_cast(&mTest[1]);
пытался таким способом, безуспешно
Попробуй так
Код:
*reinterpret_cast(addr) = &mTest[1];
|
|
|

05.09.2021, 13:09
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Сообщение от legendabrn
Код:
Код:
#pragma pack(push, 1)
struct CAR_MOD_INFO
{
int test;
} mTest[24];
#pragma pack(pop)
*reinterpret_cast(0xABCFFF + 0xAB) = *reinterpret_cast(&mTest[1]);
пытался таким способом, безуспешно
Лучше опиши всю задачу, что тебе надо сделать
|
|
|

05.09.2021, 13:16
|
|
Участник форума
Регистрация: 08.03.2019
Сообщений: 121
С нами:
3781678
Репутация:
113
|
|
Сообщение от Dark_Knight
Лучше опиши всю задачу, что тебе надо сделать
В структуре хранится переменная типа char, но она позволяет хранить значения до 255, я подумал а почему бы не заменить на свою структуру с int и все будет заебумба))
Просмотрев в IDA где используется данная структура, на работоспособность никак не должна повлиять
Сообщение от Musaigen
Попробуй так
Код:
*reinterpret_cast(addr) = &mTest[1];
не работает
|
|
|

05.09.2021, 14:01
|
|
Флудер
Регистрация: 10.08.2017
Сообщений: 2,659
С нами:
4609424
Репутация:
183
|
|
Сообщение от legendabrn
я подумал а почему бы не заменить на свою структуру с int и все будет заебумба))
не будет, оффсеты сместятся
|
|
|

06.09.2021, 11:28
|
|
Познающий
Регистрация: 06.09.2018
Сообщений: 32
С нами:
4045092
Репутация:
23
|
|
Сообщение от legendabrn
В структуре хранится переменная типа char, но она позволяет хранить значения до 255, я подумал а почему бы не заменить на свою структуру с int и все будет заебумба))
Просмотрев в IDA где используется данная структура, на работоспособность никак не должна повлиять
не работает
Проверь защиту страницы памяти по этому адресу.
Если это адрес структуры, то ты не сможешь поменять структуру по нему, т.к выравнивание по границам страниц похерится.
А если это адрес указателя, то ты можешь записать в него адрес начала своей структуры и читать оттуда по 4 байта. Но всё остальное всё равно будет читать оттуда по 1 байту. При этом, если у тебя будет прямой порядок байт (big endian), то когда по этому адресу будут читать 1 байт, то будет читаться старший байт из 4 байтового целочисленного типа. А если little endian, как на большинстве x86, то всё будет ок: младший байт и будет первым.
И еще мне не понятно: нахера тебе для этой структуры выравнивание упаковки в 1 байт, если у тебя там 1 4 байтовый мембер. А по дефолту выравнивание стоит на 8 байт.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|