Форум программистов, компьютерный форум CyberForum.ru

[IDA PRO] Интересное выражение - C++

Восстановить пароль Регистрация
 
Fusix
0 / 0 / 0
Регистрация: 08.10.2010
Сообщений: 133
11.07.2012, 22:50     [IDA PRO] Интересное выражение #1
Реверсил драйвер. Наткнулся на выражение:
C++
1
2
3
   
v1 = &Irp1->Tail.Overlay.UnkUnion.CurrentStackLocation[-1];
*v1 = 12;
Собственно как его понимать? Что значит [-1]? (CurrentStackLocation - cтруктура)
И чему второе присваивает?
Спрашиваю, т.к. нет возможности проверить на практике. Имеется только код.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2012, 22:50     [IDA PRO] Интересное выражение
Посмотрите здесь:

Люди а што у вас есть интересное написать на Visual C++ 6.0 Visual C++
C++ Интересное поведение нестатической функции класса, возвращающей свою статическую переменную
ИНТЕРЕСНОЕ)) C++
Visual C++ Интересное поведение CListCtrl::InsertItem()
C++ Интересное поведение cin.getline();
Интересное о vector и map. C++
C++ Интересное задание (Определить стоимость проезда на трамвае)
C++ Интересное задание (Сколько ячеек памяти выделится под переменные?)
C++ Очень интересное определение функции
C++ Придумайте, пожалуйста, задание с классами - только интересное
C++ Интересное заполнение массива через директиву #define
Вызов функции из Dll (анализа IDA) C++ COM

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nick Alte
Эксперт С++
1594 / 986 / 117
Регистрация: 27.09.2009
Сообщений: 1,901
Завершенные тесты: 1
12.07.2012, 11:18     [IDA PRO] Интересное выражение #2
Декомпилятор в иде, конечно, хороший, но нельзя ожидать от него всегда корректных результатов. Я бы посоветовал внимательно приглядеться к ассемблерному коду, который сложили в такую причудливую конструкцию и попробовать определить его смысл самостоятельно.
По поводу второго вопроса: судя по всему, v1 - указатель на целочисленный тип, в который заносится адрес некоего элемента из Tail.Overlay, в этот элемент во второй строчке запись и происходит.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,314
12.07.2012, 17:59     [IDA PRO] Интересное выражение #3
Судя по коду,
CurrentStackLocation - это некий массив. Берется "элемент", имеющий тот же тип, что и элементы массива, и непосредственно "предшествующий" началу этого массива.
talis
 Аватар для talis
789 / 541 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.07.2012, 16:50     [IDA PRO] Интересное выражение #4
Смущает дословный перевод CurrentStackLocation - "текущее положение в стеке". Выглядит как будто берётся адрес текущего положения в стеке (esp?) и идёт обращение к элементу в стеке ниже текущего. Если сделать предположение (только предположение!), что CurrentStackLocation - это адрес первого "незанятого" элемента стека, то CurrentStackLocation[ -1 ] - это верхушка стэка. Но странное тогда у него мировоззрение, у декомпилятора. Абстракционизм, сюрреализм...

Добавлено через 22 секунды
Откуда он вообще взял это имя - CurrentStackLocation?
Yandex
Объявления
17.07.2012, 16:50     [IDA PRO] Интересное выражение
Ответ Создать тему
Опции темы

Текущее время: 21:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru