Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для Autochapa
0 / 0 / 0
Регистрация: 28.11.2015
Сообщений: 47

Что это на самом деле *(dwordArray + 201) ?

04.02.2020, 18:53. Показов 2648. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C
1
*(dwordArray + 201) = *(dwordArray + 200) + v29;
не могу понять что это a[201] = a[200] + v29 ??
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.02.2020, 18:53
Ответы с готовыми решениями:

Оператор \ выражение - что же это такое на самом деле?
Какого ... выражение называют оператором?

Что такое string на самом деле?
Всем привет! Столкнулся с проблемой и никак не могу разобраться. Мне необходимо из строки string str получить unsignet char* для...

Что такое ссылка на самом деле?
Здравствуйте. Насколько я понимаю, ссылка - это переменная, которая на самом деле является указателем на адрес другой переменной, но с...

36
Злостный нарушитель
 Аватар для Verevkin
10861 / 5806 / 1282
Регистрация: 12.03.2015
Сообщений: 26,811
04.02.2020, 20:02
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Autochapa Посмотреть сообщение
спасибо!
У тебя бабки-то есть? Я б за $5k не взялся...
0
04.02.2020, 21:05

Не по теме:

Цитата Сообщение от Verevkin Посмотреть сообщение
Я б за $5k не взялся...
Ну не все же так зажрались :)

0
Злостный нарушитель
 Аватар для Verevkin
10861 / 5806 / 1282
Регистрация: 12.03.2015
Сообщений: 26,811
04.02.2020, 21:22
Цитата Сообщение от zayats80888 Посмотреть сообщение
Ну не все же так зажрались
Не, я не индус, просто. $5k для меня деньги, но мне зарплаты хватает, шоп ваще не напрягаться. Нахрена мне головняк, пусть даже и за бабло?
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
04.02.2020, 21:45
Цитата Сообщение от zayats80888 Посмотреть сообщение
Ну не все же так зажрались
Учитывая, что:
Цитата Сообщение от Autochapa Посмотреть сообщение
это IDAшный псевдокод
исходник утрачен, алгоритм никто не помнит
ТС-у нужна не таблетка, А нормальный реверс-инжиниринг.

Иногда, когда есть какой-то адский говнокод, его быстрее переписать заново, чем дебажить. Дизассемблерный выхлоп с этой точки зрения - еще хуже. Т.е. в любом случае по деньгам будет сравнимо с "написать заново". А по времени может быть и дольше. Т.е., возможно, $5K - это еще дешево.
1
 Аватар для Autochapa
0 / 0 / 0
Регистрация: 28.11.2015
Сообщений: 47
05.02.2020, 00:39  [ТС]
все рассуждения о 5К выглядят абсурдней того текста
вы просто его не понимаете
может попадется знаток, которому труда не составит разобрать

C
1
v11 = *(_WORD *)(v9 + v8[21]);
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
05.02.2020, 01:55
Цитата Сообщение от Autochapa Посмотреть сообщение
вы просто его не понимаете
Да куда уж нам.
Цитата Сообщение от Autochapa Посмотреть сообщение
может попадется знаток, которому труда не составит разобрать
Тех, кому труда не составит, просто не существует в природе, потому, что это кропотливая, нудная работа, требующая, к тому же, достаточно высокой квалификации. В природе есть те кто смогут, но они не захотят с этим связываться, ну если только за приличные деньги. А "юноши с горящими глазами", готовые работать за доширак просто сфэйлят.
0
 Аватар для Autochapa
0 / 0 / 0
Регистрация: 28.11.2015
Сообщений: 47
05.02.2020, 10:29  [ТС]
да я не просил весь код лопатить - меня попросили выложить я выложил, для контекста понимания.
некоторые нюансы кода С в паре мест и все нужно понять

остальное я и так разберу, так как я понимаю что код должен делать

Добавлено через 37 секунд
C
1
v11 = *(_WORD *)(v9 + v8[21]);
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
05.02.2020, 11:22
Verevkin,
Цитата Сообщение от Verevkin Посмотреть сообщение
Здесь типизация указателя, а потом - его разыменование.
сначала указатель делают _WORD * , а потом разыменовывают ? Зачем такое нужно вообще?
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
05.02.2020, 12:08
Цитата Сообщение от Autochapa Посмотреть сообщение
v11=WORD[DWORD[21]+v9] ??
Не совсем.
v8[21]+v9 - дают адрес. Программа, очевидно, 32-битная.
Потом мы берем этот адрес и получаем по нему значение типа WORD.
Скорее всего v8[21] - это поле структуры. Поле-указатель.
V9 - это смещение этого указателя, индекс.
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct V8
{
//.............. много полей
 
     WORD * v821;
};
 
//....
 
// V8 * v8; - где-то
 
v11 = v8->v821[v9];
Добавлено через 10 минут
Даже не совсем так.
Вот
C++
1
v11 = v8->v821[v9 / sizeof(WORD)];
Потому что v9 в коде кратно sizeof(WORD). Т.е. 0 2 4 6 и т.д.
1
 Аватар для Autochapa
0 / 0 / 0
Регистрация: 28.11.2015
Сообщений: 47
05.02.2020, 12:16  [ТС]
вот тот же код в ином режиме
C
1
v11 = *(v9 + v8[21]);
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
05.02.2020, 12:26
Цитата Сообщение от DrOffset Посмотреть сообщение
Тут надо за этим кодом видеть "паттерны", т.е. типичные "приемы", которые делает компилятор.
компилятор еще может же перед трансляцией в ассемблерный код оптимизировать сишный код. (source-to-source)
вчера вычитал
0
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
05.02.2020, 14:16
Цитата Сообщение от DrOffset Посмотреть сообщение
Скорее всего v8[21] - это поле структуры. Поле-указатель.
Cкорее, v8 - это указатель на указатель, т.е. на какую-то динамически выделенную таблицу.
C++
1
2
3
4
5
6
WORD **v8;
v8 = new *WORD[что-то];
for(...)
    v8[i]=new WORD[...];
....
v11 = v8[21][v9];  // v11 = *(_WORD *)(v9 + v8[21]);
1
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
05.02.2020, 14:30
Цитата Сообщение от avgoor Посмотреть сообщение
v8 - это указатель на указатель, т.е. на какую-то динамически выделенную таблицу.
В пользу того, что это структура, говорит фиксированное смещение.
Однако я не настаиваю. Оно вполне могло быть и в коде. Мало ли как люди пишут.
1
 Аватар для avgoor
1550 / 877 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
05.02.2020, 14:32
Цитата Сообщение от DrOffset Посмотреть сообщение
Однако я не настаиваю.
Я тоже. Вчера наискосок посмотрел.
0
 Аватар для Autochapa
0 / 0 / 0
Регистрация: 28.11.2015
Сообщений: 47
05.02.2020, 14:37  [ТС]
может v11 = *v10 поможет понять что это ?

v11 достается либо с адреса [v10] либо с [v9+v8[21]], где v8 = dwordArray; v9 = 2 * (Offst - dwordArray[395]);

т.е. фактически это v11 = *(2 * (Offst - dwordArray[395])+dwordArray[21]);



C
1
2
3
4
5
    v8 = dwordArray;
    v9 = 2 * (Offst - dwordArray[395]);
    v10 = v8 + 2 * Offst + 92;
 
    if ( v5 < v8[395] ) v11 = *v10; else v11 = *(v9 + v8[21]);
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
05.02.2020, 15:56
Цитата Сообщение от Autochapa Посмотреть сообщение
.е. фактически это v11 = *(2 * (Offst - dwordArray[395])+dwordArray[21]);
То, что вы преобразовали одну форму записи в другую - ничего не дает.
Т.е. с точки зрения понятности запись *(dwordArray + 395) от записи dwordArray[395] ничем не отличается.
Тоже самое касается подстановки выражений вместо переменных.

Код, который вы привели получает значение из некой структуры данных. Это равноценно может быть как массив указателей, как написал avgoor, так и структура с полями-указателями, как написал я. В машинном коде эти две вещи выглядят одинаково.

Раскапывать это глубже, не очень хочется, если честно.
1
 Аватар для Autochapa
0 / 0 / 0
Регистрация: 28.11.2015
Сообщений: 47
05.02.2020, 16:03  [ТС]
что же, спасибо! исчерпывающе!
это согласуется с моими данными
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.02.2020, 16:03
Помогаю со студенческими работами здесь

что же на самом деле делает strcpy?
вот такой пример #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main () { string buff; buff += &quot;what...

Передача массива в функцию - что на самом деле предается?
Имя массива это константный указатель. Когда мы передаем его в функциюvoid f1(int *iArray) f1 это происходит как pass by reference. В...

Подскажите как заставить программу видеть то, что есть на самом деле
Я написал программу, которая работает с русским текстом. И когда я сравниваю в if'e элемент и букву, то условие не выполняется(то есть я...

На самом деле #define'а нету.
На самом деле #define нету. Вот например если мы напишем в c++ #define yes 1 #define no 0 то на самом деле мы получим int yes=1; ...

Число double 0.1 на самом деле не 0.1
Кто сталкивался с таким глюком, почему если я задаю double x=0.1; в дебаггере я его вижу как 0.10000000000000001 ? я знал что float...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru