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

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

04.02.2020, 18:53. Показов 2897. Ответов 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
10921 / 5849 / 1289
Регистрация: 12.03.2015
Сообщений: 26,957
04.02.2020, 20:02
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Autochapa Посмотреть сообщение
спасибо!
У тебя бабки-то есть? Я б за $5k не взялся...
0
04.02.2020, 21:05

Не по теме:

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

0
Злостный нарушитель
 Аватар для Verevkin
10921 / 5849 / 1289
Регистрация: 12.03.2015
Сообщений: 26,957
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
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
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
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
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
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
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
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru