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

Тема в разделе "WASM.RESEARCH", создана пользователем Forever, 6 май 2008.

  1. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    Требуется по предъявлении исполняемого файла (любого) отвечать програмно на вопрос упакован ли файл или нет. Есть какие-нибудь советы или предложения?
     
  2. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    Forever
    Наличие секций UPX Посмотри статьи на сайте об упаковщиках в последний раз Если есть подозрение, что это просто архивы - проверять сигнатуру в начале файла. rar начинается с Rar! (0x52, 0x61, 0x72, 0x21) zip с PK (0x50, 0x4B, 0x3) и т.д. Просто посмотри через любой hex-viewer несколько байтов в начале самых популярных форматов архивов (RAR, ZIP, CAB, ARJ, LZH, ACE, TAR, GZip, UUE, ISO, BZIP2, Z и 7-Zip)
     
  3. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    Посчитать энтропию?
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    посчитать энтропию, только придется установить четкие критерии когда считать файл упакованным а когда нет.
    далеко не все пакеры сжимают идеально и далеко не все файлы хранят данные неэффективно.
    в EXE можно обнаружить по косвенным признакам применения пакеров. например те же сигнатуры как уже сказали..
    в UPACK - строка KERNEL32.DLL вначале после MZ сигнатуры изза такого размещения этой строки в таблице импорта. и т.п.
     
  5. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    Энтропия, сигнатуры, названия секций, наличие оверлея (всё это не вакт, но если признаки есть, то вероятность большая)
     
  6. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    Forever
    сожми его чем нить, раром к примеру, и посмотри насколько изменился размер. Хотя не факт что это укажет именно на упакованность файла. Крипто к примеру тоже не жмётся.
     
  7. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    Мне нужно проверять не архивы, а исполняемые файлы сжатые пакерами (UPX и компания).

    Довольно сомнительный спосов проверки, особенно если учесть, что проверять файлы нужно програмно.
     
  8. dendi

    dendi New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    233
    +в упаковщиках была тема про то попадет ли AddressOfEntryPoint в участок от BaseOfCode размером SizeOfCode
     
  9. gazlan

    gazlan Member

    Публикаций:
    0
    Регистрация:
    22 май 2005
    Сообщения:
    414
    Попадет - в большинстве пакеров. Они его туда специально перезаписывют (для антивирусов).
     
  10. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    Ну так програмно и сжимать)
     
  11. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Можно посмотреть как это реализовано в ProcessExplorer'е Руссиновича, он подсвечивает упакованные exe в списке процессов фиолетовым цветом (при цветовых настройках по умолчанию). Правда не помню, были ли сорцы этой тулзы в паблике...
     
  12. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    Исходников Process Explorer я не нашел. Судя по всему их и не было. Если у кого есть - поделитесь. Они весьма пригодятся. Process Explorer действительно выделяет файлы которые возможно упакованы, однако не известно как он это проверяет. В драйвере кода маловато для этого. А юзермод дисасемблировать и изучать - можно загнутся. Однако за совет спасибо.
     
  13. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    Если речь о файле в памяти, как в случае с Process Explorer, то достаточно посчитать энтропию для секций в памяти и на диске - для упакованных файлов разница будет очевидна. Но такой метод подразумевает, что файл запущен. Если для Process Explorer это подразумевается, то для простого идентификатора это может быть непримелемо.
     
  14. UTeX

    UTeX New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2007
    Сообщения:
    584
    Мож автору написать и спросить? Врядли это сверхсекретный проект.
     
  15. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    Скорее всего он проверяет атрибуты секции в каторой расположена EP. В большинстве случаев секция с атрибутом записи указывает на упаковщик. Хотя и не факт)). Никто не мешает упаковщику не менять атрибутов секции а после старта вызвать virtualProtect.