Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler: Windows/protected mode
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/14: Рейтинг темы: голосов - 14, средняя оценка - 4.64
ml64
461 / 51 / 4
Регистрация: 21.05.2017
Сообщений: 49
1

Дизассемблирование приложения, собранного из MFC

29.10.2019, 06:25. Просмотров 2706. Ответов 13

Очень хочется создать на языке ассемблера шаблон Ribbon-интерфейса.
Сделал в Visual Studio пример, чтобы его пристально изучить.
Скомпилировал. Открыл в x64dbg и...
...Не нашёл знакомых API-функций: GetMessage, DispatchMessage, TranslateMessage, RegisterClass, ...
Непонятно, от чего отталкиваться.
Машинного кода сравнительно немного: порядка 10 тыс. строк.
Но entry на 7000-й строке, множество хаотичных переходов, даже перескоков туда-сюда на несколько тысяч строк.
Что делать-то? За что зацепиться?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2019, 06:25
Ответы с готовыми решениями:

Дизассемблирование приложения DotNet
Как дизассемблировать приложение DotNet чтобы видеть не CIL код, а обычные инструкции процессора IA?

Установка приложения, собранного на VS 2005
Поделитесь опытом установки приложенией, собранных на VS 2005, пожалуйста. Никак не...

Запуск приложения, собранного в Unity на Iphone
Привет, ребят. Все время писал приложения под андроид в Unity. Решил сделать приложение для своей...

Релиз mfc приложения
Цель: нужно будет распространять программу. Сама программа небольшая выйдет. Подумал собрать со...

Создание приложения с MFC
Доброго времени суток, господа! Помогите с пониманием библиотеки MFC. Необходимо создать...

13
untyped
Нарушитель
1007 / 146 / 37
Регистрация: 18.08.2012
Сообщений: 733
29.10.2019, 06:32 2
приложение - ваше?
выкладываете здесь.

приложение НЕ ваше:
здесь выкладывать и обсуждать подобное - запрещено правилами.

Добавлено через 3 минуты
непонятен вопрос. вам и:
Цитата Сообщение от ml64 Посмотреть сообщение
Дизассемблирование приложения, собранного из MFC
Цитата Сообщение от ml64 Посмотреть сообщение
Очень хочется создать на языке ассемблера шаблон Ribbon-интерфейса.
а это здесь к чему?
Цитата Сообщение от ml64 Посмотреть сообщение
Сделал в Visual Studio пример, чтобы его пристально изучить.
Скомпилировал. Открыл в x64dbg и...
...Не нашёл знакомых API-функций: GetMessage, DispatchMessage, TranslateMessage, RegisterClass, ...
где пример?
Цитата Сообщение от ml64 Посмотреть сообщение
Машинного кода сравнительно немного: порядка 10 тыс. строк.
Но entry на 7000-й строке, множество хаотичных переходов, даже перескоков туда-сюда на несколько тысяч строк.
в вашем примере или в MFC-приложении?
количество строк машинного кода - без разницы. Тут больше вопрос количества сгенерированных/найденных дизассемблером функций
0
ml64
461 / 51 / 4
Регистрация: 21.05.2017
Сообщений: 49
29.10.2019, 07:33  [ТС] 3
1. Приложение моё. Собрано при помощи Visual Studio Community 2019.
Выкладывать его нет смысла, поскольку это пустой скомпилированный шаблон Ribbon-приложения.
Кроме того, мой вопрос шире, чем какое-либо конкретное приложение.

2. "Дизассемблирование приложения, собранного из MFC" - это не вопрос, а заголовок темы.
Не Label, а Caption – если так понятнее.

3. Для того чтобы написать на языке ассемблера приложение с Ribbon-интерфейсом, я решил изучить код готового работающего приложения, написанного на ЯВУ. Полагаю, это действие логично.
Поэтому собрал в VC такое приложение и открыл в дебаггере его код. Надеюсь, данное действие не нарушает правил.

4. К чему здесь фраза от том, что я не нашёл знакомых API-функций: GetMessage, DispatchMessage, TranslateMessage, RegisterClass?
А это и есть суть вопроса:
- каким образом приложение, собранное при помощи MFC, взаимодействует с операционной системой)?
(например, приложение, построенное на базе API, пользуется кодом, содержащимся в user32.dll, gdi32.dll и kernel32.dll);
- как это реализовано в теле самого MFC-приложения?
- какова структура MFC-приложения?


5. Из текста вопроса явно следует, что к написанию ассемблерного кода я пока не приступал, а рассматривал собранное в VS приложение. Следовательно, количество строк кода приводится применительно к рассматриваемому приложению.
Приводить их все также не вижу смысла, поскольку это будет только отвлекать от существа вопроса.

Добавлено через 10 минут
В обход демагогии скажу, что работа MFC-приложения решается переходами вот такого вида:
Assembler
1
jmp qword ptr ds:[13FA5E1A8]  | CMDIChildWndEx::GetThisMessageMap
и ссылка ведёт на библиотеку mfc140u.dll
0
untyped
Нарушитель
1007 / 146 / 37
Регистрация: 18.08.2012
Сообщений: 733
29.10.2019, 09:19 4
Лучший ответ Сообщение было отмечено Mikl___ как решение

Решение

опятьдвадцатьпять...
Цитата Сообщение от ml64 Посмотреть сообщение
поскольку это пустой скомпилированный шаблон Ribbon-приложения.
Цитата Сообщение от ml64 Посмотреть сообщение
суть вопроса:
- каким образом приложение, собранное при помощи MFC, взаимодействует с операционной системой)?
Цитата Сообщение от ml64 Посмотреть сообщение
ссылка ведёт на библиотеку mfc140u.dll
т.е. сам спросил - сам ответил.
что такое MFC?
Это очень обширная библиотека визуальных классов. Это целая модель приложения.
И обращение напрямую к winaAPI - там упрятано глубоко во внутренности целой иерархии классов.
таким образом, сравнивать winapi-приложение с MFC и искать прямое обращение к функциям winapi во втором - было весьма наивно.

автор,
из-за обилия вопросов/мыслей - у вас каша в голове.
Но, это не страшно, т.к. у вас пока - ноль знаний по теме.
И... за дизассм MFC-приложений - вам пока ещё очень рано браться.
Особенно, если это будет дизассм - без pdb-файлов.

Если хотите изучить MFC - начните с её исходников, которые есть в дистрибутиве с Visual Studio.
2
29.10.2019, 09:19
ml64
461 / 51 / 4
Регистрация: 21.05.2017
Сообщений: 49
29.10.2019, 16:35  [ТС] 5
Цитата Сообщение от untyped Посмотреть сообщение
у вас пока - ноль знаний по теме.
И... за дизассм MFC-приложений - вам пока ещё очень рано браться
.
Спасибо за публичную аттестацию и ценные советы.
Но похоже, что исчерпывающий ответ выглядит вот так: https://quequero.org/2008/08/guidelines-to-mfc-reversing/
0
ml64
461 / 51 / 4
Регистрация: 21.05.2017
Сообщений: 49
29.10.2019, 16:41  [ТС] 6
Constantin Cat, благодарю Вас!!!
Цитата Сообщение от Constantin Cat Посмотреть сообщение
натолкнетесь, на все премудрости класса(ов)
Так это ж прекрасно. Советский человек нуждается сверхзадачах.
0
Constantin Cat
10547 / 1465 / 418
Регистрация: 28.02.2015
Сообщений: 2,975
Завершенные тесты: 1
29.10.2019, 16:55 7
Качаете IDA 64bit, секция import, будет содержать все импортируемые функции, но когда вы будете "вылазить" от туда, Вы натолкнетесь, на все премудрости класса(ов).
Об этом Вам писали.
Цитата Сообщение от untyped Посмотреть сообщение
Это очень обширная библиотека визуальных классов. Это целая модель приложения.
И обращение напрямую к winaAPI - там упрятано глубоко во внутренности целой иерархии классов.
таким образом, сравнивать winapi-приложение с MFC и искать прямое обращение к функциям winapi во втором - было весьма наивно.
Добавлено через 4 минуты
Цитата Сообщение от ml64 Посмотреть сообщение
Спасибо за публичную аттестацию
Если Вам сказали, что в реверсе, "взломе" у Вас заний ноль, так оно и есть.
Это не наша заслуга, а ваша не "дообученность".

Добавлено через 11 минут
Цитата Сообщение от ml64 Посмотреть сообщение
Так это ж прекрасно. Советский человек нуждается сверхзадачах.
Вот, это и пугает.
Чем проще код, заточенный под одну задачу, тем его сложнее взломать.
Классы, при всей ихней полезности, при нормальном кодировании, вводят столько дыр, что туда стадо слонов можно засунуть и ни кто этого не заметит.

Добавлено через 2 минуты
Упс, как-то не правильно форум мне "гадальный" шар открыл
1
Constantin Cat
10547 / 1465 / 418
Регистрация: 28.02.2015
Сообщений: 2,975
Завершенные тесты: 1
29.10.2019, 17:00 8
Цитата Сообщение от Constantin Cat Посмотреть сообщение
Упс, как-то не правильно форум мне "гадальный" шар открыл
Я об этом.
0
Миниатюры
Дизассемблирование приложения, собранного из MFC  
Constantin Cat
10547 / 1465 / 418
Регистрация: 28.02.2015
Сообщений: 2,975
Завершенные тесты: 1
29.10.2019, 17:30 9
Админы, посмтрите пост выше, картинку, как такое могло получится?
0
Mikl___
Автор FAQ
14895 / 6746 / 719
Регистрация: 11.11.2010
Сообщений: 12,099
29.10.2019, 17:37 10
Цитата Сообщение от Constantin Cat Посмотреть сообщение
Это не наша заслуга, а ваша не "дообученность".
знаем, знаем
Отсутствие у вас судимости — это не ваша заслуга, а наша недоработка
Феликс Эдмундович Дзержинский
2
Constantin Cat
10547 / 1465 / 418
Регистрация: 28.02.2015
Сообщений: 2,975
Завершенные тесты: 1
29.10.2019, 18:01 11
Цитата Сообщение от Mikl___ Посмотреть сообщение
знаем, знаем
Вы малось перепутали ваше и наше, но мысль от этого не меняет смысла.
0
ml64
461 / 51 / 4
Регистрация: 21.05.2017
Сообщений: 49
29.10.2019, 21:41  [ТС] 12
Господа-Господа!
Понимаю Ваш скепсис.
Но Вы же знаете теорему о бесконечных обезьянах: абстрактная обезьяна, ударяя случайным образом по клавишам пишущей машинки в течение неограниченно долгого времени, рано или поздно напечатает любой наперёд заданный текст. Например, «Гамлет» или ribbon-приложение.
Отвечаю по-интеловски, в порядке LIFO:
Цитата Сообщение от Mikl___ Посмотреть сообщение
Отсутствие у вас судимости — это не ваша заслуга, а наша недоработка
Многоуважаемый Mikl___-сан, полностью с Вами согласен, но расстрелять меня может любой сотрудник ОГПУ, а постигнуть дзен я могу только сам.
Цитата Сообщение от Constantin Cat Посмотреть сообщение
Если Вам сказали, что в реверсе, "взломе" у Вас знаний ноль, так оно и есть
Тоже соглашусь. Логично, что у меня знаний "ноль" в той области, которой я вообще не занимался. Надеюсь всё же, что у меня знаний, как в сопроцессоре, "плюс ноль", а не "минус ноль".
Цитата Сообщение от untyped Посмотреть сообщение
за дизассм MFC-приложений - вам пока ещё очень рано браться
А вот тут не соглашусь. Хорошему делу учиться никогда не рано и никогда не поздно.
Перед началом нового этапа дзена, проведу-кась простенький SWOT-анализ. Итак,
Strengthes:
В голове у меня всё-таки не каша, а среднестатистическая нейронная сеть. И находится она под управлением личности, мотивированной какими-то амбициями.
Weaknesses:
Знаний, к сожалению, ноль.
Opportunities:
А что если я смогу накопать информацию и выделить время так же, как при построении MDI-приложения? (С нуля за два года) - Тогда моя нейронная сеть была ещё чище, чем сейчас.
Threats:
Рискую: или потерять мотивацию, или... отведённого мне времени окажется недостаточно для расшифровки аккадской клинописи.
0
untyped
Нарушитель
1007 / 146 / 37
Регистрация: 18.08.2012
Сообщений: 733
30.10.2019, 02:37 13
Лучший ответ Сообщение было отмечено Mikl___ как решение

Решение

бла бла бла...
автор, тема топика, который, между прочим, вы сами озвучили - гласит:
Цитата Сообщение от ml64 Посмотреть сообщение
Дизассемблирование приложения, собранного из MFC
на данный момент, нет никакого MFC для разбора/анализа, как нет и вопросов от вас по заданной теме. Таким образом, топик скатился во флуд.
Предлагаю Вам начинать задавать вопросы по теме
однако,
дабы у нас с вами сложился предметный разговор - хочу ещё раз вам посоветовать задавать свои вопросы только после изучения вами исходников MFC из дистрибутива Visual Studio.
Также, напоминаю вам, что это ветка форума называтся:
Assembler для начинающих
таким образом, ваши вопросы должны в первую очередь соответствовать и теме ветки форума.

в остальном,
предлагаю закончить флуд на этом месте дабы не захламлять отличный раздел форума.
<без обид>
2
untyped
Нарушитель
1007 / 146 / 37
Регистрация: 18.08.2012
Сообщений: 733
08.11.2019, 14:39 14
Лучший ответ Сообщение было отмечено ml64 как решение

Решение

Цитата Сообщение от ml64 Посмотреть сообщение
Очень хочется создать на языке ассемблера шаблон Ribbon-интерфейса.
http://board.flatassembler.net/topic.php?p=156513
архивировано:https://web.archive.org/web/20191108...c.php?p=156513
шаблон минимального приложения с Ribbon-интерфейсом на FASM:
Дизассемблирование приложения, собранного из MFC
1
Вложения
Тип файла: zip w64.minRibbon.zip (18.5 Кб, 2 просмотров)
08.11.2019, 14:39
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2019, 14:39

Большой вес MFC приложения
Привет, начал осваивать Visual Studio 2012 создал приложение MFC и ужаснулся, вес программы 8,86 МБ...

Печать из диалогового приложения mfc
Доброго времени суток. Подскажите пожалуйста можно ли печатать инфу из диалогового окна и делать...

#define в ресурсах приложения MFC
Добрый день. Есть необходимость в зависимости от #define MY_DENIFE менять иконку у приложения. Не...


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

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

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