Язык Си. Часть 0. Си и Ассемблер.

Программирование на си

Причём здесь Ассемблер?

Зачем необходимо изучать программирование на Си при изучении Ассемблера? На это есть множество значимых причин. Вы поймёте взаимосвязи этих языков, похожесть друг на друга, логику происхождения более абстрактного Си из машинного Ассемблера. Доверьтесь нашему опыту и воспринимайте необходимость изучения программирования на Си как аксиому — обязательное условие изучения Ассемблера. В особенности это касается создания приложений для Windows. Некоторые значимые доводы в пользу Си, мы всё-таки хотели бы обозначить.

Функции WinAPI.

Переходим к актуальному вопросу — написанию прикладных программ для Windows. Одним из составляющих основ программирования в операционной среде Windows продолжает оставаться активное использование функций WinAPI, встроенных в любую операционную систему Windows, начиная от первой версии и заканчивая последней на настоящий момент десятой версией. Функции WinAPI писались на Си и были созданы для использования при написании прикладных программ на языке программирования Си. Программирование для Windows с использованием WinAPI и макросов на ассемблере и Си имеют 90% внешнего и  100% смыслового сходства.

Макросредства Ассемблера (макросы) и Си.

Для облегчения написания кода на Ассемблере, часто (а практически всегда) используются так называемые «макро средства» или «макросы». Благодаря им низкоуровневый язык программирования превращается в своеобразный структурный язык программирования, где основным блоком кода является функция. Ассемблер с использованием макросов очень похож на более высокоуровневый язык программирования Си. Язык Си,  в принципе, является следствием обобщения наиболее часто используемых ассемблерных макросов.

Простейшее приложение Win32 API на языке Си (Pelles C):

Простейшее приложение Win32 API на языке Ассемблер (MASM32):

Реверсинженеринг и взлом программ.

Одной из прикладных возможностей программиста, практикующего в Ассемблере, является изучение кода готовых программ — так называемый реверсинженеринг, крэкинг, кодокопание, программный взлом, дизассемблирование.

Если у Вас имеется желание в этом преуспеть, то вам просто необходимо понимать, как компилируется (собирается) программа отдельными компиляторами высокоуровневых языков. Напоминаю, что любой исполняемый код можно дезассемблировать, то есть преобразовать в ассемблерный код, а затем собрать обратно, внеся изменения на своё усмотрение (по желанию). При достаточных навыках можно вырезать из уже готового кода отдельные функции и вставлять в другой код (авторские права, однако, никто при этом не отменял). Начать занимательный и опасный путь кодокопателя лучше всего с дизассемблирования своих собственных программ, написанных на Си.

Программирование на Си — ещё на шаг вперёд к светлому будущему!

Ну и, конечно, не забываем нашей главной задачи — научиться быстро осваивать программироване на любом языке. В данном случае, язык Си можете воспринимать как второй язык программирования, которому вы обучитесь, регулярно посещая наш сайт. С учётом активного использования макро средств ассемблера, эти языки практически становятся близнецами. В настоящее время, Си де-факто является самым низкоуровневым языком программирования. На нём можно всё ещё писать драйверы (но всё-таки уже лучше на С++).

Программирование на Си для Windows — никаких консолей, только окна!

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

Мы будем изучать прикладное программирование на Си для Windows с использованием WinAPI. Это значит — никаких консолей, только полноценные оконные приложения.

Для изучения будут использоваться следующие программы:

  • Язык си — среда разработки Pelles C.
  • Язык ассемблер — среда разработки RadASM ver.2, ассемблер MASM32.
  • Отладчик — OllyDbg ver. 1.10.
  • Дизассемблер — IDA ver. 5.2.0.908.
  • Другие вспомогательные, но очень важные программы, такие, как: Hiew, WinHex, Window Scanner, ProcessMonitor, PETools x32, API Monitor, Depends Func и т.д.

Все необходимые программы для изучения Си и Ассемблера можно скачать с нашего сайта.

Код будет писаться в 32 битном режиме — x86 (к 64 битному программированию подойдём попозже). Мы не будем слишком подробно изучать программирование на Си, мы быстро, кратко и легко пройдёмся по основам, затронем только необходимые сливки. Для того, кому нужно более углубленное изучение — предоставим ссылки на уже написанные учебники. Наша основная задача — Ассемблер.

Добавить комментарий