Если вы действительно хотите «хакнуть» какое-либо программное обеспечение, то, возможно, будете иметь дело с машинным кодом, который представляет собой набор инструкций для выполнения процессором вычислительного устройства. Этот код читабелен для машин и очень трудно воспринимаем человеком. Но, тем не менее, именно в нем кроется вся суть работы программы.

Наиболее практичный подход заключается в использовании инструмента под названием дизассемблер. Это не что иное, как программа, которая преобразует числовой машинный код в символьные инструкции. Вроде бы теперь все должно быть просто, но, к сожалению, все проблемы кроются в мелочах. Эти программы для дизассемблирования в большинстве своем неаккуратны в разборе кода.
Дисассемблер, например, не всегда может понять разницу между кодом программы и данными. Точки перехода между данными и кодом также могут быть для него сложно воспринимаемыми. Но все же дисассемблер является очень полезным инструментом, когда у вас нет исходного кода программы, а понять досконально принцип ее работы очень хочется. Еще одно ограничение заключается в том, что в зависимости от архитектуры процессора придется использовать тот или иной инструмент для дизассемблирования.
Чтобы обойти эти ограничения, связанные с дизассемблированием, можно воспользоваться довольно эффективным онлайн дизассемблером onlinedisassembler.com (он же disassembler.io), который поддерживает различные процессорные архитектуры. Помимо этого данный дизассемблер предоставляет достаточно «умную» аналитику кода и обеспечивает гипер перекрестные ссылки для лучшей навигации в коде и облегчения его понимания. Здесь даже можно в интерактивном режиме дать ему несколько советов в плане приведенного кода, чтобы улучшить результаты дизассемблирования. Кроме того, здесь можно сотрудничать с другими программистами и организовывать командную работу, что очень полезно при дизассемблировании крупных проектов.
Работать с онлайн дизассемблером достаточно просто. Можно загрузить имеющийся исполняемый файл в этот дизассемблер, используя меню File и элемент Upload в нем. В основном окне справа появится машинный код с соответствующими ассемблерными командами. Справа будут доступны все переменные с указанием типа и адреса. Этот дизассемблер на данный момент поддерживает до 60 процессоров, среди которых имеются x86, ARM, AVR, VAX, System 390, MIPS, PPC и даже Z80. Поэтому он вполне пригоден для программ, как персональных компьютеров, так и микроконтроллеров.
© digitrode.ru