• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Значения Элементов Структуры Динамически

  • Автор темы Marty
  • Дата начала
M

Marty

Есть структура с большим количеством элементов (150-170 штук), как динамически присвоить значения элементам?
уже пол-дня рою гугл, не могу найти. Видимо нужны какие-то дополнительные инструменты использовать. не могу разобраться помогите
 
Q

qqwertty

как динамически присвоить значения элементам?
А что это в вашем понимании значит?

Ну если я предполагаю то, что вам нужно, то на С можно манипулировать адресами и заполнять структуру, не обращаясь по именам к полям. Но так делать не очень рекомендуется - перестроите структуру, все переписывать, ошибетесь в цифорке - ....... Не знаю что будет, но мало приятного. В С++ так ваще лучше никогда не делать, уже не помню с чем связано.

ИМХО, проще реорганизовать вашу структуру. 170 полей - это слишком.
 
M

Marty

Вы можите написать код как реализовать "то на С можно манипулировать адресами и заполнять структуру, не обращаясь по именам к полям. "
Спасибо
 
Q

qqwertty

Вы можите написать код как реализовать

C++:
#include<stdio.h>
#include<conio.h>

struct Struct
{
int a1;
int a2;
double a3;
};

int main(void)
{
//можно так
struct Struct A = {4,8,7.6};
//а можно и так, но лучше не надо
*(int *)&A = 10;
//как ко второму полю обратиться я не помню, так как хаки не запоминаю, ибо это чаще только вредит
printf("%d %d %lf\n", A.a1, A.a2, A.a3);
return 0;
}

ДОБАВЛЕНО: Хотя нет) вспомнил: *(int *)((int)&A + 4) = 10;

И еще: про выравнивание надо тоже не забывать, вобщем искренне не советую вторым способом пользоваться :)
 
M

Marty

так выходит только используя имя элемента (A.a1) можно к нему обратиться...а динамически перебрать все нельзя?

Добавлено: понятно...*(int *)((int)&A + 4) = 10;....осталось теперь только разобраться с тем что такое 4 и 10)))
Спасибо
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!