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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 1, средняя оценка - 3.00
rusianvodka
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
28.05.2014, 16:14     Вскрыть exe файл и получить адрес области хранения всех переменных. PE-файлы, Анатомия файла, Загрузчик PE-фай #1
Здравствуйте уважаемые дамы и господа, какой час уже сижу но не могу понять и разобраться.
Хочу открыть 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

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

Упаковка текстового файла в exe-файл C++
Дан файл f, компоненты которого являются целыми числами. Получить файл g, образованный из файла f исключением повторных вхождений одного и того же чис C++
текстовые и бинарные файлы. Получить файл g из чисел исходного файла C++
Как включить в exe файл файлы dll C++
C++ Адрес области памяти
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Убежденный
Системный программист
 Аватар для Убежденный
14197 / 6212 / 985
Регистрация: 02.05.2013
Сообщений: 10,348
Завершенные тесты: 1
28.05.2014, 21:29     Вскрыть exe файл и получить адрес области хранения всех переменных. PE-файлы, Анатомия файла, Загрузчик PE-фай #2
rusianvodka, между кодом программы и тем, что в итоге получается в
скомпилированном exe, нет четкого соответствия. Даже для таких языков, как С.
В результате оптимизации в кодовой секции exe может получиться совсем не то,
что вы ожидаете там увидеть. Поэтому не ищите черную кошку там, где ее нет.
Лучше возьмите IDA Pro или запустите exe под отладчиком, с отображением
ассемблерного листинга, и увидите, что там на самом деле. Еще вариант -
генерация ассемблерного листинга во время компиляции (многие компиляторы
это умеют).

Добавлено через 1 минуту
В Вашем примере переменных g, b и l, скорее всего, вообще не окажется в exe,
так как они нигде не используются и компилятор выкинет их за ненадобностью.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
28.05.2014, 21:58     Вскрыть exe файл и получить адрес области хранения всех переменных. PE-файлы, Анатомия файла, Загрузчик PE-фай #3
Собственно, даже если их использовать, эти переменные всё равно выделяются на стеке, а значения будут прошиты в инструкциях в функции main. Причём не факт, что прошиты напрямую: могут и вычисляться "на лету".
rusianvodka
0 / 0 / 0
Регистрация: 20.06.2013
Сообщений: 47
28.05.2014, 22:36  [ТС]     Вскрыть exe файл и получить адрес области хранения всех переменных. PE-файлы, Анатомия файла, Загрузчик PE-фай #4
Спасибо за ответы, видимо я просто привёл не правильный пример.
Скажите мне или приведите пример пожалуйста тогда, как мне считать из файла
PE-заголовок (IMAGE_NT_HEADERS); и таблицу секций (IMAGE_SECTION_HEADER);
чтобы взаимодействовать с данными данных структур)
буду рад если покажите на примере.
mishelle92
57 / 56 / 19
Регистрация: 09.10.2012
Сообщений: 179
Завершенные тесты: 1
28.05.2014, 22:47     Вскрыть exe файл и получить адрес области хранения всех переменных. PE-файлы, Анатомия файла, Загрузчик PE-фай #5
http://habrahabr.ru/post/104333/ В комментариях есть код.
http://kaimi.ru/2011/08/pe-sections-info/
Убежденный
Системный программист
 Аватар для Убежденный
14197 / 6212 / 985
Регистрация: 02.05.2013
Сообщений: 10,348
Завершенные тесты: 1
28.05.2014, 22:55     Вскрыть exe файл и получить адрес области хранения всех переменных. PE-файлы, Анатомия файла, Загрузчик PE-фай #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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2014, 01:46     Вскрыть exe файл и получить адрес области хранения всех переменных. PE-файлы, Анатомия файла, Загрузчик PE-фай
Еще ссылки по теме:

C++ Записать в файл KW квадраты всех четных чисел исходного файла, а в файл KB — кубы всех нечетных
Получить адрес буфера файла C++
Как получить готовый .exe файл, чтобы запускать его без IDE C++

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

Или воспользуйтесь поиском по форуму:
gazlan
2861 / 1809 / 272
Регистрация: 27.08.2010
Сообщений: 4,897
Записей в блоге: 1
29.05.2014, 01:46     Вскрыть exe файл и получить адрес области хранения всех переменных. PE-файлы, Анатомия файла, Загрузчик PE-фай #7
Добавлю еще:

An In-Depth Look into the Win32 Portable Executable File Format
Code From Windows 95 System Programming Secrets (см. PEDump)
Yandex
Объявления
29.05.2014, 01:46     Вскрыть exe файл и получить адрес области хранения всех переменных. PE-файлы, Анатомия файла, Загрузчик PE-фай
Ответ Создать тему
Опции темы

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