как узнать чем скомпилирован файл

Как узнать чем скомпилирован файл

Программы из данного раздела помогут определить, чем скомпилирована/упакована программа.

Анализатор DiE предназначен для определения типа пакера/протектора/компилятора у ЕХЕ-файлов. Т.е. позволяет узнать,
чем же сжат файл, что необходимо для дальнейшей распаковки. Также программа имеет ряд полезных функций, таких как просмотр импорта, просмотр секций, просмотр HEX, дизассемблирование файла, просмотр основных характеристик ЕХЕ, получение хеша MD 5, получение CRC-32, поддержка плагинов (PDK можно скачать с официального сайта программы).

Анализатор от арабских разработчиков из команды AT4RE. Часто выходят обновления сигнатур.

Анализатор, имеющий базу сигнатур по компиляторам, протекторам, упаковщикам, даже некоторым вирусам и дающий рекомендации по распаковке/декомпиляции файлов. Есть 9 встроенных плагинов.

Один из самых популярных анализаторов исполняемых файлов. Хорошо определяет многие упаковщики и протекторы. Есть три уровня глубины сканирования, возможность сканирования в памяти и по всем вложенным папкам. Официальный релиз PEiD 0.94 от 10 мая 2006, вся самая свежая база внешних сигнатур и плагинов.

Особенности программы: написана на Ассемблере; точность определения упаковщика/протектора/компилятора 95-99%; при сканировании проходят сразу три фазы: normal scan, deep scan, hard scan; может сканировать директории; с помощью Entropy.dll можно выяснить запакован ли файл (demo-версия); может отыскать OEP файла (demo-версия).

Хорошая программа для определения протекторов и упаковщиков. Умеет определять некоторые популярные защиты игр от копирования (Safedisc, CD Lock, Starforce и др.).

Достаточно хороший определитель компиляторов/упаковщиков/протекторов.

Источник

Как определить на чем написана программа?

Т.к. вы неавторизованы на сайте. Войти.

Т.к. тема является архивной.

Т.к. вы неавторизованы на сайте. Войти.

Т.к. тема является архивной.

Т.к. вы неавторизованы на сайте. Войти.

Т.к. тема является архивной.

Т.к. вы неавторизованы на сайте. Войти.

Т.к. тема является архивной.

Т.к. вы неавторизованы на сайте. Войти.

Т.к. тема является архивной.

Т.к. вы неавторизованы на сайте. Войти.

Т.к. тема является архивной.

Т.к. вы неавторизованы на сайте. Войти.

Т.к. тема является архивной.

Т.к. вы неавторизованы на сайте. Войти.

Т.к. тема является архивной.

Я сказал там будет нужная информация.

Т.к. вы неавторизованы на сайте. Войти.

Т.к. тема является архивной.

Т.к. вы неавторизованы на сайте. Войти.

Т.к. тема является архивной.

Т.к. вы неавторизованы на сайте. Войти.

Т.к. тема является архивной.

Т.к. вы неавторизованы на сайте. Войти.

Т.к. тема является архивной.

Да, но обычно не напрямую, должны быть биндинги к библиотеке. Т.е. например, если из ненативной программы нужно работать с zip файлами, для использования zip.dll должен существовать биндинг к этой библиотеке на этом языке (класс на java, в питоне это модули и т.д.). Хотя, некоторые языки позволяют напрямую использовать сишные библиотеки.

Но в любом случае, например программа на VB, например, обязательно использует какие-то специальные библиотеки, зависимость от которых явно указывает что программа на VB, аналогично с другими языками. То есть, можно исследуя зависимости от библиотек, выяснить, написана ли программа на C или C++.

Источник

Как узнать чем скомпилирован файл

Программы для анализа исполняемых файлов

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

PEiD, последняя версия 0.95 от ноября 2008 года. Самый популярный анализатор исполняемых файлов. Анализ производится по внутренней и внешней базе сигнатур, есть несколько уровней сканирования от быстрого до глубокого, можно обрабатывать целые каталоги. Функционал легко расширяется внешними плагинами, сигнатуры хранятся в отдельном текстовом файле, так что вы легко можете добавлять туда свои собственные. Для работы с базой сигнатур написана специальная программа PEiDSO. Разработчикам плагинов в комплекте прилагается SDK с примерами на разных языках программирования и описанием API. Скачать PEiD можно с офсайта, но в этом случае нужный набор плагинов и сигнатур вам придется собирать самим. Поэтому я выкладываю тут свою сборку, которой сам пользуюсь. На глобальность она не претендует, так что и критика тоже не принимается.

Читайте также:  как посмотреть расширение файла в windows

PEiD 0.95 с плагинами и сигнатурами (pass: manhunter.ru)

Detect it Easy (DiE), отечественная разработка, последняя версия 0.64 от мая 2007 года. Похожа на PEiD, но основной упор делается на собственные эвристические анализаторы, а уже потом на сигнатурный анализ. Также программа предоставляет некоторые полезные функции: просмотр импорта, секций, просмотр файла в hex-режиме, дизассемблер, просмотр основных характеристик PE, получение хеша MD5 и CRC-32. Функционал расширяется при помощи плагинов. Скачать DiE можно с офсайта.

Detect it Easy 0.65

ExeInfo PE также очень похожа на PEiD, последняя версия 0.0.3.3 от апреля 2013 года. Сигнатуры встроенные (470 штук) и не расширяются. В программе есть интересная функция: если протектор определен, то она дает информацию, при помощи какого инструмента его можно попытаться распаковать. Для новичков эта информация будет очень полезна. Также из полезных инструментов есть риппер архивов из SFX-модулей, поиск текстовых строк, обращений к реестру, корректировка OEP и другие. Скачать можно с офсайта. Также с офсайта можно скачать плагин-переходник для PEiD и DiE, который позволяет выполнять сканирование файлов через ExeInfo PE. Утилита вполне имеет место быть в списке рабочих инструментов.

ExeInfo PE 0.0.5.0

ExeScan 1.05.03.2004

Pe-Scan от snyper, последняя версия 3.31, офсайт прекратил свое существование. При минимальном размере программа обладает большими возможностями. Это эвристический и сигнатурный анализатор исполняемых файлов, распаковщик некоторых пакеров, динамический поиск OEP. Кроме перечисленных инструментов в Pe-Scan есть уникальный вероятностный анализатор для незнакомых упаковщиков и шифровщиков файлов (кнопка «adv.scan»). Он показывает в процентном отношении на какой из известных ему упаковщиков похож исследуемый неизвестный. Помогает определять обычные пакеры типа UPX, обработанные различными скрэмблерами и модификаторами.

PE-Scan 3.31

Stud_PE, последняя версия 2.4.0.1 от апреля 2008 года. Очень неплохая программа, кроме анализа чем упакован файл, показывает еще много другой полезной информации: секции, ресурсы, таблицы импорта и экспорта, DOS-заголовок. Встроеный в Stud_PE HEX-редактор подсвечивает выбранные поля заголовка файла, что бывает очень удобно при анализе его структуры. Также есть менеджер процессов со встроенным дампером. Функционал расширяется при помощи плагинов, причем подходят плагины от PEiD. Описание API и SDK для разработчиков прилагается в комплекте. Скачать Stud_PE можно с офсайта.

File Format Identifier 1.4

Protection ID, последняя версия 0.6.1.6 от января 2009 года. Неплохая программа, используемая в основном для анализа защищенных CD/DVD дисков. Кроме этого определяет около 350 упаковщиков, донглов, инсталляторов исполняемых файлов. Не требует для работы дополнительных файлов, но при этом нет возможности добавлять свои сигнатуры. В последних версиях замечена нехорошая тенденция автора заталкивать в утилиту кучу ненужного барахла, типа индикатора загрузки системы, менеджера процессов, оптимизатора памяти и прочих излишеств. Скачать можно с офсайта.

Protection ID 0.6.7.0

RDG Packer Detector, последняя версия 0.7.3 от 2014 года. Хорошая задумка, но чудовищная реализация, еще один пример разработчикам во что НЕ надо превращать свои программы. Если разберетесь в уродливом интерфейсе, то в придачу к анализатору получите еще несколько инструментов типа OEP Detector, Cryptographic Analyzer, которые у меня так нормально и не заработали. Скачать можно с офсайта, но больше для коллекции, постоянно использовать это убожество нереально.

FastScanner от крякерской команды AT4RE, последняя версия 3.0 beta от октября 2009 года. Сканер работает с сигнатурами от PEiD, поддерживает плагины. Красивый интерфейс, но результат проверки файлов часто бывает ошибочным. Из полезных функций есть неплохой редактор PE-файлов в виде плагина. Скачать можно с офсайта.

Bit Detector 2.8.5.6

MiTeC EXE Explorer 1.4

The Ultimate Hellspawn’s EXE Analyzer 0.6

file insPEctor XL

SCANiT 1.85b

PEPirate 0.51

gAPE 1.01

PeStudio 3.45

InspectExe добавляет в окно свойств исполняемых файлов дополнительные вкладки для просмотра секций, таблицы импорта, ресурсов, манифеста и других данных. Скачать можно с офсайта.

DNiD 1.0

A-Ray Scanner, проект давно не обновлялся, последняя версия 2.0.2.2 от 2005 года. Программа предназначена только для сканирования CD/DVD-дисков и определяет несколько десятков защит дисков от копирования. Также определяет некоторые упаковщики и протекторы исполняемых файлов.

A-Ray Scanner 2.0.2.2

ClonyXXL 2.0.1.5

Кроме универсальных анализаторов есть несколько утилит для определенных протекторов. Наиболее полезные из них ASPrINF, VerA, Armadillo Find Protected, Armadillo Informant и Detemida.

Читайте также:  обои химия для стен

ASPrINF от nik0g0r из команды TLG, еще одна отечественная разработка, последняя версия 1.6 beta. Небольшая утилита для точного определения версии протектора ASProtect, которым накрыт файл. Используется динамический анализ, а не сигнатурный, поэтому версия определяется безошибочно. Кроме точной версии ASProtect утилита показывает информацию на кого зарегистрирован протектор, так что шароварщики, использующие для своих поделок ломаные варезные протекторы, могут быть легко выведены на чистую воду 🙂

ASPrINF 1.6 beta

VerA 2.0.3

Armadillo Find Protected от vel, последняя публичная версия 1.9. Эта утилита позволяет определить наличие в файле защиты Armadillo, узнать все опции, с которыми был установлен протектор, а также узнать версию самого протектора. Поддерживаются версии Armadillo до 6.40. Кроме анализа утилита позволяет подменять HWID для защищенных программ (версия 1.8), очищать триальные счетчики (версия 1.9) и делать detach дочернего процесса.

Armadillo Find Protected 1.8

Armadillo Find Protected 1.9

Armadillo Find Protected 2.0

Armadillo Find Protected 2.1

Armadillo Informant 0.9.6 beta

Detemida 1.0.0.5

RDG Themida-Winlicense Version Finder с традиционным для RDG чудо-интерфейсом также предназначена для определения версии Themida и WinLicense, однако делает это среди уже запущенных процессов. Может куда и сгодится.

RDG Themida-Winlicense Version Finder 1.0

EnigmaInfo 0.11

Если у вас есть еще интересные программы для анализа исполняемых файлов, то сообщите в комментариях. Самые полезные будут обязательно добавлены.

Источник

0.5 – Введение в компилятор, компоновщик (линкер) и библиотеки

Рисунок 1 – Процесс разработки программного обеспечения

Шаг 4. Компиляция исходного кода

Сначала он проверяет ваш код, чтобы убедиться, что он соответствует правилам языка C++. В противном случае компилятор выдаст вам ошибку (и номер соответствующей строки), чтобы помочь точно определить, что нужно исправить. Процесс компиляции будет прерван, пока ошибка не будет исправлена.

Рисунок 2 – Процесс компиляции

Компиляторы C++ доступны для многих операционных систем. Мы скоро обсудим установку компилятора, поэтому сейчас нет необходимости останавливаться на этом.

Шаг 5. Компоновка (линковка) объектных файлов и библиотек

После того, как компилятор создал один или несколько объектных файлов, включается другая программа, называемая компоновщиком (линкером). Работа компоновщика состоит из трех частей:

Во-первых, взять все объектные файлы, сгенерированные компилятором, и объединить их в единую исполняемую программу.

Рисунок 3 – Процесс компоновки (линковки)

Во-вторых, помимо возможности связывать объектные файлы, компоновщик (линкер) также может связывать файлы библиотек. Файл библиотеки – это набор предварительно скомпилированного кода, который был «упакован» для повторного использования в других программах.

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

Как только компоновщик завершит линковку всех объектных файлов и библиотек (при условии, что всё идет хорошо), вы получите исполняемый файл, который затем можно будет запустить!

Для продвинутых читателей

Для сложных проектов в некоторых средах разработки используется make-файл (makefile), который представляет собой файл, описывающий, как собрать программу (например, какие файлы компилировать и связывать, или обрабатывать какими-либо другими способами). О том, как писать и поддерживать make-файлы, написаны целые книги, и они могут быть невероятно мощным инструментом. Однако, поскольку make-файлы не являются частью ядра языка C++, и вам не нужно их использовать для продолжения изучения, мы не будем обсуждать их в рамках данной серии статей.

Шаги 6 и 7. Тестирование и отладка

Это самое интересное (надеюсь)! Вы можете запустить исполняемый файл и посмотреть, выдаст ли он ожидаемый результат!

Если ваша программа работает, но работает некорректно, то пора немного ее отладить, чтобы выяснить, что не так. Мы обсудим, как тестировать ваши программы и как их отлаживать, более подробно в ближайшее время.

Интегрированные среды разработки (IDE)

Обратите внимание, что шаги 3, 4, 5 и 7 включают в себя использование программного обеспечения (редактор, компилятор, компоновщик, отладчик). Хотя для каждого из этих действий вы можете использовать отдельные программы, программный пакет, известный как интегрированная среда разработки (IDE), объединяет все эти функции вместе. Мы обсудим IDE и установим одну из них в следующем разделе.

Читайте также:  отделка стен шпоном дерева

Источник

Compiler Explorer – это больше, чем посмотреть результат компиляции

Сегодня мы поговорим про Compiler Explorer (godbolt.org). Если Вы ещё не знакомы с этим сервисом для экспериментов с компиляцией кода в режиме online, значит пришло время прочитать про этот полезный и интересный инструмент. А если уже знакомы, то после прочтения заметки Вы сможете по новому взглянуть на этот инструмент.

Что такое Compiler Explorer

Compiler Explorer – это интерактивный инструмент, который позволяет Вам набирать код в одном окне и сразу видеть результат компиляции в другом окне (онлайн компилятор).

Здесь Вы можете изучать предупреждения/ошибки и ассемблерный код, выдаваемые компилятором, а также просматривать результат выполнения скомпилированной программы.

Поддерживаются различные языки, например, Ada, D, Fortran, Python. Впрочем, нам здесь сейчас интересно пообсуждать поддержку языков C и C++.

Заметка! Если Вам интересно, у Compiler Explorer есть С++-канал в Slack. Вы можете присоединиться к нему, получив автоматический инвайт.

Важной полезной фичей является возможность создавать постоянные ссылки на «слепок» того, что Вы делаете, с сохранением напечатанного кода и взаимного расположения открытых Вами окон. Например, вот ссылка, открыв которую, Вы можете сразу увидеть текст программы, ассемблерный код и результат работы программы. Такими ссылками очень удобно делиться или использовать их в постах.

Интересный функционал Compiler Explorer

Возможно, всё это Вы уже знали и до прочтения данной статьи. Однако мне есть что добавить. Compiler Explorer постепенно развивается и из просто online-компилятора он превращается в нечто большее. Начал пополняться раздел дополнительных инструментов («Add tool»), и теперь возможно не только скомпилировать код, но и посмотреть, что о коде думают, например, такие анализаторы как clang-tidy или PVS-Studio.

Конечно, здесь надо проявлять разумность и не пытаться проверять с помощью сайта свой многофайловый проект – гораздо естественнее делать такую проверку, установив анализатор на компьютер. Также не стоит пытаться на основании синтетических примеров оценивать возможности анализаторов, ведь в таком случае очень легко ненароком поставить неправильные эксперименты.

В остальном это очень прикольная штука. Вы можете играться с анализаторами, список которых наверняка будет постепенно пополняться. Вы можете посмотреть, находится ли та или иная ошибка и как анализаторы предупреждают о них. Это можно использовать для удовлетворения любопытства, при написании статей или при каких-то исследованиях.

Пример использования

Это ещё не всё. Предлагаю взглянуть на Compiler Explorer как на среду для выполнения простых лабораторных работ. Конечно, возможности Compiler Explorer ограничены, однако для лабораторных работ из одного файла это самое то.

Можно набрать текст программы, скомпилировать и посмотреть, что будет распечатано в консоль. После можно создать ссылку на выполненную работу и отправить её по почте для проверки. И для всего этого устанавливать на компьютер ничего не требуется. Можно вообще сделать и сдать лабораторную работу с любого терминала, даже с телефона (хотя последнее, наверное, будет не так удобно). Думаю, студенты смогут оценить всё это, особенно в сессионную пору :).

А ещё при этом можно сразу пользоваться статическими анализаторами. Удастся сразу найти многие ошибки/опечатки и заодно приобщиться к хорошей полезной практике применения статических анализаторов кода.

Давайте посмотрим, как это может выглядеть на практике. Предположим, кто-то изучает массивы и циклы и ему нужно написать программу для транспонирования матрицы. И он пишет вот такую программу.

Как видите, программа компилируется и даже запускается. Вот только она как-то странно работает, и изменённая матрица упрямо не хочет печататься на экране.

Хорошо, что в правом нижнем углу статический анализатор PVS-Studio предупреждает о возможной опечатке. И действительно, во внутреннем цикле увеличивается переменная i, а не j. Возникает вечный цикл. Исправим код и теперь всё работает так, как и ожидалось.

Если Вы преподаватель, то возьмите такой сценарий выполнения лабораторных работ на заметку. Иногда он может оказаться весьма удобным. Заодно и студенты познакомятся с методологией статического анализа кода.

Источник

Образовательный портал