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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.97
qvazar
1 / 1 / 0
Регистрация: 08.12.2010
Сообщений: 37
#1

Чтение машинного кода exe файла - C++

18.05.2014, 20:21. Просмотров 6274. Ответов 19
Метки нет (Все метки)

Я пытаюсь прочитать машинный код своего консольного Win32 приложения, написанного в MS Visual Studio:

C++
1
2
3
4
5
6
ifstream exeFile(filename, ios::in | ios::binary);
string line;
while (getline(exeFile, line))
{
...
}
Часть прочитанных строк являются осмысленными, но большая часть - мусор, среди которого, как я понимаю, должен быть и машинный код программы. Как правильно прочитать exe файл, чтобы получить из него машинный код?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2014, 20:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чтение машинного кода exe файла (C++):

Чтение бинарного кода из файла - C++
Необходимо прочитать бинарный код, синтаксически разделённый на байты (Например: 01000010 00011100 01111011) из файла. С библиотекой...

Удаление лишнего кода из EXE файла - C++
Всем доброго дня, возникла необходимость создать файл как можно меньшего размера, довёл его до 1 кб в VS10. При открытии файла с помощью...

Создание .exe файла из hex кода - C++
Здравствуйте, имеется код: unsigned char HexVar = {0x83, 0xEC, 0x20, 0x4C, 0x8B, 0xE9, 0x49, 0x8B, 0xC8, 0x49, 0x8B, 0xE9, 0x49, 0x8B,...

Чтение файла exe на другом компьютере, где нет Visual - C++
У меня Vusial Studio 2008 (rus). Я написал программу. Она работает, все хорошо... Но если только один файл .exe скопировать в другой...

Переделать в коде чтение из файла в чтение с клавиатуры - C++
Переделайте что бы текст считывался с клавиатуры, а не с файла! Буду благодарен за помощь! //файл должен начинаться со слова, между...

Чтение из файла. Повторное чтение файла - C++
Добрый день. Необходимо реализовать в программе функцию повторного чтения данных из файла, в случае некорректного ввода их в оный. Вот...

19
TrueBit
96 / 96 / 12
Регистрация: 19.11.2012
Сообщений: 195
18.05.2014, 20:35 #2
Откройте программу обычным блокнотом. Это и будет её машинный код представленный последовательностью печатных ASCII символов. Другое дело, что такое невозможно просто так прочитать и осмыслить. И нужно интерпретировать эту последовательность бит файла другим образом. В начале исполняемых файлов Windows идет структура PE, содержащая всю необходимую информацию и смещения для запуска программы, в Linux свой формат этой структуры - ELF. В любом случае это обширная тема, касающаяся дизассемблеров и кодов машинных команд, и нужно начать с этого. Еще очень желательно хорошо знать язык ассемблера.
1
paata1963
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 51
03.09.2014, 13:23 #3
Я попыталься сделать так, как тут указано. Однако, если щелкнуть правой мышкой на екзешник, то там не появляется пункт open with, а только - run as. И это не дает результат. Попробовал то же самое на йсходник, но там выдает код в том виде как я написал( т.е. По символике с++). Может я что то не понял?
0
КОП
361 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 764
03.09.2014, 13:58 #4
paata1963, говорят hex редакторы помогают. Открывать ехе можно из самого редактора кнопкой открыть файл. Или убрать разрешение ехе, тогда по даблклику появится окно выбора программы.
0
paata1963
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 51
03.09.2014, 14:17 #5
За это, спасибо, розумеется. Но чисто человеческим языком сказать лучше, что я хочу узнать. Вот есть какая та программа и мне надо посмотреть его код, и не только посмотреть но что то изменить в нем. Ну к примеру не нравиться мне мой paint или что то другое. Никак не могу добраться до исполняемого файла. Даже самым написанный екзешник не могу посмотреть. Есть конечно исходник, но если программу перенести на другой компьютер, там же не будет исходника. И если тот человек захочет посмотреть, как он должен поступить без всяких hex редакторов. Лежит же все таки где то в памяти это единство единиц и нолей. Наверное это у меня потому пройсходит, что не до конца довел изучение ассемблера.

Добавлено через 3 минуты
И еще; когда я щелкну " открыть файл: просто запускается программа.
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
03.09.2014, 14:27 #6
Цитата Сообщение от paata1963 Посмотреть сообщение
Даже самым написанный екзешник не могу посмотреть.
А вот это "не могу посмотреть" как выражается? Что ты хочешь увидеть, набор нулей и единиц?
0
paata1963
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 51
03.09.2014, 14:32 #7
Ну в первую очередь, хоть каким то образом добраться до кода программы, не имеет значение; будет это бинарник, некс или пусть даже с++. Допустим, скачал какую то программу и хочу посмотрет и исправлять.
0
SatanaXIII
Супер-модератор
Эксперт С++
5639 / 2674 / 252
Регистрация: 01.11.2011
Сообщений: 6,571
Завершенные тесты: 1
03.09.2014, 14:57 #8
Цитата Сообщение от paata1963 Посмотреть сообщение
Однако, если щелкнуть правой мышкой на екзешник, то там не появляется пункт open with, а только - run a
Выход есть - используйте технологию drug and drop. Откройте блокнот, не на столе, а на обычном компьютере, и перетащите туда exe-файл.
0
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,385
Записей в блоге: 2
Завершенные тесты: 1
03.09.2014, 15:04 #9
Я для таких целей IDA Pro использую, удобно.

Не по теме:

Цитата Сообщение от SatanaXIII Посмотреть сообщение
Выход есть - используйте технологию drug and drop. Откройте блокнот, не на столе, а на обычном компьютере, и перетащите туда exe-файл.
MacOS way

0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
03.09.2014, 15:11 #10
Цитата Сообщение от paata1963 Посмотреть сообщение
пусть даже с++
C++ в общем случае нельзя получить. Декомпиляторы бывают, но чаще всего они гегенируют С-код с множеством ассемблерных вставок. Т.е. это весьма условная декомпиляция, и это явно совсем не то, что было изначально

Цитата Сообщение от paata1963 Посмотреть сообщение
Допустим, скачал какую то программу и хочу посмотрет и исправлять.
HEX-редактор.
Дизассемблер.
0
krv
74 / 54 / 11
Регистрация: 10.07.2014
Сообщений: 328
03.09.2014, 15:15 #11
Выше уже написали.
Exe файл глазами (в обычном текстовом, символьном редакторе) не прочтешь.
Это код программы.
Получение исходника из кода называется дизассемблированием. И то потом полученный ассемблерный код назад скомпилировать не всегда получается
А уж получить исходный код на языке более высокого уровня (типа С++)....
Эх.
0
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,240
03.09.2014, 15:17 #12
Цитата Сообщение от paata1963 Посмотреть сообщение
Вот есть какая та программа и мне надо посмотреть его код, и не только посмотреть но что то изменить в нем. Ну к примеру не нравиться мне мой paint или что то другое. Никак не могу добраться до исполняемого файла.
Для начала прочитай что нибудь
например К. Касперски
"Искусство дизасемблирования"
"Техника отладки программ без исходных кодов"
"Фундаментальные основы хакерства"
0
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,385
Записей в блоге: 2
Завершенные тесты: 1
03.09.2014, 15:19 #13
Цитата Сообщение от ValeryS Посмотреть сообщение
например К. Касперски
Помнится у него еще была статья, что-то типа "дизассемблируем в уме", полезное чтиво.
0
ValeryS
Модератор
6729 / 5138 / 484
Регистрация: 14.02.2011
Сообщений: 17,240
03.09.2014, 15:27 #14
Цитата Сообщение от Kastaneda Посмотреть сообщение
Помнится у него еще была статья,
Да у него куча статей была в "Хакере" да и книг немеряно
Но недостаток из книги в книгу кочуют целые главы, открываешь и понимаешь это уже читал
кстати нигде не могу скачать/купить книгу про ИДА (не помню как точно называется)
все что видел в интернете, все черновики, без правки да и только первая часть
в какой то книге, описывал как он ломал компилятор Харона(разумеется с разрешения)
во где ловушек было
0
paata1963
0 / 0 / 0
Регистрация: 16.07.2013
Сообщений: 51
03.09.2014, 15:36 #15
В с++ это я гиперболически сказал, образно. Я знаю, что код можно получить максимум в h формате

Добавлено через 5 минут
Касперского я читал. И дезасамблировать нет никаких проблем. А то зачем мне исполняемый файл , если не смогу разабрать что там. Но там ничего нет про то что я спрашиваю.

Добавлено через 2 минуты
Все таки, никто не хочет ответить именно на вопрос и сказать просто: зайди вот здесь и щелкни вот здесь. или как то так
0
03.09.2014, 15:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.09.2014, 15:36
Привет! Вот еще темы с ответами:

Чтение html кода - C++
Добрые люди, помогите кто чем может. Программа считывает из текстового файла html код и выводит title и заголовки.Но код крашиться когда...

Чтение кода в библиотеках - C++
Итак, я уже давно учусь программированию. И вот, я хочу перейти на новый для себя этап, но столкнулся с проблемой. Я не понимаю писанины в...

Выявление кода .exe приложения - C++
У меня тут такой вопрос: Можно ли просмотреть код .exe программы? Программа не сложная, простая. Если можно, то помогите пожалуйста (если...

Вставка кода в exe-ый файл - C++
люди напишите кто нибудь свой скайп,кто в с++ достаточно шарит , нужно код вставить в exe-ный файл....а иначе мысль такая,ексешный файл он...


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

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

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