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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 3.00
rusianvodka
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
#1

Вскрыть exe файл и получить адрес области хранения всех переменных. PE-файлы, Анатомия файла, Загрузчик PE-фай - C++

28.05.2014, 16:14. Просмотров 1302. Ответов 6
Метки нет (Все метки)

Здравствуйте уважаемые дамы и господа, какой час уже сижу но не могу понять и разобраться.
Хочу открыть exe файл и найти область где хранятся все числовые константы объявленных переменных(адрес начала секции и конца).
Например имеется код
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <conio.h>
using namespace std;
void main(){
 
    int g = 1998;
    int b = 2000;
    int l = 5;
    _getch();
}
Скомпилировал, создался exe файл, после открываем его.
Хочу узнать каким образом мне получить место(адрес) с которого начинают хранится все числовые константы переменных в ехе файле, и по какое.
Читал сие статьи :

cs.usu.edu.ru/docs/pe
www.xakep.ru/magazine/xs/057/026/1.asp

Гуглил, пытался понять, но данная тема для меня просто лес. Как понимаю нужно с определённых точек сначала прочесть информацию в объявленные структуры, а после вытащить адрес.
Буду благодарен за подсказки, если покажите код на примере как всё это сделать, будет здорово.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2014, 16:14
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вскрыть exe файл и получить адрес области хранения всех переменных. PE-файлы, Анатомия файла, Загрузчик PE-фай (C++):

Получить адрес файла на компьютере через explorer.exe - PascalABC.NET
В программах, которые открывают и сохраняют файлы, появляется окошко проводника, в котором можно выбрать файл для открытия или место, куда...

Получить адрес текущей директории в которой находиться текущий файл *.exe - C++ WinAPI
Всем привет! Подскажите апишку для получения адреса директории в которой находиться текущий файл *.exe P.S (аналог аргумента argv в...

Вскрыть свою вай фай сеть, не зная пароль - Сети
Здрасте! Вопрос такой, можно ли с помощью роутера вскрыть свою вай фай сеть незная пароль? я люблю халяву, но этот вопрос просто ради...

Файлы CPP, HPP как получить файл exe - C++
Как все это сделать на DEV-C++?

Файлы. Типизированные файлы. Получить файл G, содержащий все компоненты файла F, являющиеся нечетными числами и корнями целых чисел - Turbo Pascal
1.Заданный файл F компонентами которого являются целые числа. Получить файл G содержащий все компоненты файла Ф являющиеся нечетными...

Дан символьный файл f, получить файл j образованный из файла f заменой всех его прописных(больших) букв одноименными строчными(малыми). - Pascal ABC
Дан символьный файл f, получить файл j образованный из файла f заменой всех его прописных(больших) букв одноименными...

6
Убежденный
Ушел с форума
Эксперт С++
15929 / 7239 / 1140
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
28.05.2014, 21:29 #2
rusianvodka, между кодом программы и тем, что в итоге получается в
скомпилированном exe, нет четкого соответствия. Даже для таких языков, как С.
В результате оптимизации в кодовой секции exe может получиться совсем не то,
что вы ожидаете там увидеть. Поэтому не ищите черную кошку там, где ее нет.
Лучше возьмите IDA Pro или запустите exe под отладчиком, с отображением
ассемблерного листинга, и увидите, что там на самом деле. Еще вариант -
генерация ассемблерного листинга во время компиляции (многие компиляторы
это умеют).

Добавлено через 1 минуту
В Вашем примере переменных g, b и l, скорее всего, вообще не окажется в exe,
так как они нигде не используются и компилятор выкинет их за ненадобностью.
0
Nick Alte
Эксперт С++
1646 / 1018 / 120
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
28.05.2014, 21:58 #3
Собственно, даже если их использовать, эти переменные всё равно выделяются на стеке, а значения будут прошиты в инструкциях в функции main. Причём не факт, что прошиты напрямую: могут и вычисляться "на лету".
0
rusianvodka
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
28.05.2014, 22:36  [ТС] #4
Спасибо за ответы, видимо я просто привёл не правильный пример.
Скажите мне или приведите пример пожалуйста тогда, как мне считать из файла
PE-заголовок (IMAGE_NT_HEADERS); и таблицу секций (IMAGE_SECTION_HEADER);
чтобы взаимодействовать с данными данных структур)
буду рад если покажите на примере.
0
mishelle92
67 / 66 / 23
Регистрация: 09.10.2012
Сообщений: 212
Завершенные тесты: 1
28.05.2014, 22:47 #5
http://habrahabr.ru/post/104333/ В комментариях есть код.
http://kaimi.ru/2011/08/pe-sections-info/
1
Убежденный
Ушел с форума
Эксперт С++
15929 / 7239 / 1140
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
28.05.2014, 22:55 #6
Официальная спецификация:

Microsoft PE and COFF Specification
http://msdn.microsoft.com/en-us/library/gg463119.aspx

Здесь есть несколько функции, упрощающие нахождение PE-заголовков и секций:

DbgHelp Functions
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
1
gazlan
3135 / 1911 / 285
Регистрация: 27.08.2010
Сообщений: 5,132
Записей в блоге: 1
29.05.2014, 01:46 #7
Добавлю еще:

An In-Depth Look into the Win32 Portable Executable File Format
Code From Windows 95 System Programming Secrets (см. PEDump)
1
29.05.2014, 01:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2014, 01:46
Привет! Вот еще темы с ответами:

Будте добры помогите оч над)Создать и заполнить текстовой файл f. Получить файл g, образованный из файла f с исключением всех слов, встречающихся - Turbo Pascal
Создать и заполнить текстовой файл f. Получить файл g, образованный из файла f с исключением всех слов, встречающихся больше одного раза, в...

Текстовые и бинарные файлы. Получить файл g из чисел исходного файла - C++
Компоненты файла f – целые числа, положительных чисел столько же, сколько отрицательных. Получить файл g из чисел исходного файла, в...

Файлы. Из файла f получить файл g, исключив повторные вхождения чисел - Pascal ABC
Заполнить файл f целыми числами, полученными с помощью генератора случайных чисел. Из файла f получить файл g, исключив повторные вхождения...

Получить файл g, образованный из файла f заменой всех букв на большие - Pascal ABC
Дано файл f, компоненты которого являются символами. Получить файл g, образованный из файла f заменой всех букв на большие (прописные)


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

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

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