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

C++

Войти
Регистрация
Восстановить пароль
 
Fusix
0 / 0 / 0
Регистрация: 08.10.2010
Сообщений: 133
#1

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

11.07.2012, 22:50. Просмотров 958. Ответов 3
Метки нет (Все метки)

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

Как перевести это математическое выражение в выражение понятное для компилятора? - C++ Builder
вот пример: a=5*atan(x)-(1/4)*acos(x); b=(x+3*abs(x-y)+pow(x,2))/(abs(x-y)*z+pow(x,2));

Интересное поведение CListCtrl::InsertItem() - Visual C++
Приветствую! решиль в свое CListCtrl реализовать Drag-and-Drop. Всё получилось хорошо, в плане распознавания - какой элемент схватили...

Люди а што у вас есть интересное написать на Visual C++ 6.0 - Visual C++
Не так важна оплата как просто занятса чемто интересным.. :help: башню рвёт нечем заннятса.. ну канешно если вас не смущает мой плохой...

ИНТЕРЕСНОЕ)) - C++
Cантехнік Петро був найнятий, щоб прокласти трубу водопостачання між двома точками міста. Мапу міста можна представити у вигляді...

Интересное о vector и map. - C++
Здравствуйте! 1. В процессе работы с векторами обнаружил интересный момент, представим что у нас есть какой-то вектор и созданные нами...

Интересное поведение cin.getline(); - C++
Доброго времени суток! Я не устаю терроризировать форум своими тупыми вопросами, но для этого он и создан. На этот раз у меня проблема с...

3
Nick Alte
Эксперт С++
1639 / 1011 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
12.07.2012, 11:18 #2
Декомпилятор в иде, конечно, хороший, но нельзя ожидать от него всегда корректных результатов. Я бы посоветовал внимательно приглядеться к ассемблерному коду, который сложили в такую причудливую конструкцию и попробовать определить его смысл самостоятельно.
По поводу второго вопроса: судя по всему, v1 - указатель на целочисленный тип, в который заносится адрес некоего элемента из Tail.Overlay, в этот элемент во второй строчке запись и происходит.
1
CheshireCat
Эксперт С++
2893 / 1242 / 78
Регистрация: 27.05.2008
Сообщений: 3,389
12.07.2012, 17:59 #3
Судя по коду,
CurrentStackLocation - это некий массив. Берется "элемент", имеющий тот же тип, что и элементы массива, и непосредственно "предшествующий" началу этого массива.
1
talis
791 / 543 / 37
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
17.07.2012, 16:50 #4
Смущает дословный перевод CurrentStackLocation - "текущее положение в стеке". Выглядит как будто берётся адрес текущего положения в стеке (esp?) и идёт обращение к элементу в стеке ниже текущего. Если сделать предположение (только предположение!), что CurrentStackLocation - это адрес первого "незанятого" элемента стека, то CurrentStackLocation[ -1 ] - это верхушка стэка. Но странное тогда у него мировоззрение, у декомпилятора. Абстракционизм, сюрреализм...

Добавлено через 22 секунды
Откуда он вообще взял это имя - CurrentStackLocation?
0
17.07.2012, 16:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2012, 16:50
Привет! Вот еще темы с ответами:

Очень интересное определение функции - C++
Доброго времени суток! сейчас собираю небольшую библиотечку - и наткнулся на очень интересный кусок кода: strtol (nptr, endptr, base) ...

Придумайте, пожалуйста, задание с классами - только интересное - C++
Вот стало скучно хочу что-то написать придумайте задание только что-то интиресное знаю классы!

Интересное заполнение массива через директиву #define - C++
Увидел такую штуку: static const unsigned char BitsSetTable256 = { #define B2(n) n, n+1, n+1, n+2 #define B4(n) B2(n),...

Интересное задание (Определить стоимость проезда на трамвае) - C++
Определить стоимость проезда на трамвае. Университетское задание для первокурсников, можно сказать первое задание по программированию....


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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