Код:
![Выделить весь код](images/misc/selectcode.png)
------------------------------------------------
File Analyzer v1.6 (Фев 26, 2000)
Copyright (c) Vadim Tarasov
Russian Text
------------------------------------------------
=====================================================================
= Эта программа распространяется по принципу "AS IS", т.е автор за =
= последствия от использования данной программы ответственности не =
= несет, а в случае модификации тем более. Эта программа является =
= FREEWARE, т.е вы можете спокойно использовать эту программу в НЕ =
= КОММЕРЧЕСКИХ ЦЕЛЯХ. Если вы собираетесь использовать программу =
= в каких либо коммерческих целях вы должны связаться с автором. =
=====================================================================
1. Что такое FA и как его надо использовать :
File Analyzer - эта программа способная определить чем скомпилирован файл,
чем упакован, закодирован и т.д, также File Analyzer умеет показывать
внутренности архивов и SFX архивов, поддерживаемые архивы:
RAR/ARJ/ZIP/LZH/LHA/ICE/ZOO/SWG/DWC/SQZ/HYP/ACE/CAB/PAC/HA/Stirling/
/InstallShield
File Analyzer умеет также выдавать информацию о разных графических
форматах - разрешение[resolution], количество цветов и т.д, поддерживаемые
форматы: GIF/JPG/PCX/BMP/ICO/IFF. Понимает также следующие EXE форматы:
MZ/NE/LE/LX/LE/W3/P2/P3/DL/MP. File Analyzer способен показывать данные
таблиц объектов NE/LE/LX/PE. Есть также поддержка внешних plugins, для
чего с версии 1.6.11.02.1999 в инсталляции появился новый файл FA.PLG,
синтаксис в нем почти такой-же, как в базе данных: путь к plugin + файлы
на которых FA будет запускать plugin. File Analyzer имеет встроенный
компилятор базы данных, созданный для увеличения производительности
программы. В базе данных можно использовать макро-команды типа "J1J1" -
это означает ассемблерную команду JMP/JMPS/CALL etc, т.е есть возможность
анализа файла с различными переходами, в настоящее время макро-команды не
поддерживаются в New-Exe файлах.
2. Системные требования:
Минимум для FA требуется:
* Операционная система DOS 3.0+ [ WIN3.x/WIN9x/NT/NT4/NT5... ]
* Intel 80286 процессор ( что поделаешь, 286 инструкции )
* Рекомендуется конечно P-III...
* 150 kb памяти + размер оверлейного буффера
! при анализе оверлеев резервируется память установленная ключом "/o"
! FA оптимизирована для работы под MS-Windows, так что под DOS она
конечно работает, но не так, как бы хотелось.
3. Как FA анализирует EXE файлы.
В исполнимых файлах ищется точка входа (регистры CS:IP в заголовке файла,
если EXE) и сравнивается с сигнатурой в анализаторе. Например файл
упакованый LZEXE v.0.91 имеет сигнатуру:
-------------------------------------------------------------------------------
06 push es
0E push cs
1F pop ds
8B 0E .. .. mov cx,[....]
8B F1 mov si,cx
4E dec si
89 F7 mov di,si
8C DB mov bx,ds
-------------------------------------------------------------------------------
и так далее...
По этой сигнатуре определяется, что файл упакован LZEXE v.0.91. Иногда
попадаются файлы скомпилированые на неизвестном мне компиляторе или
упакованы неизвестным упаковщиком. Такие сигнатуры получают имена "Unknown
compiler ( # )" или "Unknown packer ( # )" и т.д. Если Вы знаете настоящее
имя пакера или компилятора, то было бы просто замечательно, если бы Вы
сообщили мне об этом. Если файл упакован несколькими упаковщиками, то
определяется только "внешний".
4. О глюках.
В анализаторе могут быть ошибки, поэтому если Вы обнаружите
какой-нибудь BUG, то сообщите мне об этом. А ошибок может быть много.
Так-же приму любые пожелания по улучшению сей программы.
Пожелания принимаются в любой форме. :))
Известные глюки:
1). a) Немного путает версии пакеров. (Если изменений в коде пакера в
близлежащих версиях не производилось, то цифирка версии немного
не такая, как на самом деле).
б) Так как по сигнатуре паскалевские EXE не определяются, добавлено
внутреннее определение по коду "???456789???", тем самым если даже
это будет не паскалевский EXE, но в нем будет такой код, он
определит его как паскалевский. Правда это иногда удобно, т.к даже
если файл запакован к примеру PKLITE`ом, а он, как мне известно не
трогает эти байты ===> FA видит эти байты и скажет вам, что файлик
то упакован, да еще и на Паскале написан...
в) Некоторые файлы, в имени которых существуют пробелы ( длинные
имена ), FA не находит
2). Что FA не может.
FA не умеет определять мутированные ( mutated ) EXE/COM файлы,
не имеет встроеннного эвристического анализатора.
■ Остальные параметры для FA :
/S - Команда сканирования базы данных и определения точного
количества поддерживаемых сигнатур при помощи идентификаторов
типа %Compilers, %Packers - при встрече с этим идетификатором
FA начинает отсчет сигнатур вложенных в блок следующий за
этим идентификатором, вы можете добавлять свои собственные
идентификаторы - это возможно с версии 1.5.07.20.1999.
Синтаксис: FA.EXE /S. После этого FA создаст файл FA.DIZ, в
котором будут записаны все блоки и их размер.
/M - Эта команда вставляет в заголовок EXE файла другой файл.
Например - таблица с названием программы. Файл не может быть
более 64Kb. Синтаксис: FA.EXE /M <Filename.EXE> <Markfile.XXX>
/R - Эта команда уничтожает всю ненужную информацию в заголовке
EXE файла. К примеру вы воспользовались командой /M и вставили
в заголовок EXE файла какой-то файл, но потом передумали и
решили его убрать. Синтаксис: FA.EXE /R <Filename.EXE>
/Oxxx- Размер оверлейного буффера. Параметр xxx может быть от 5 до
30000 байт. Оверлейный буффер используется для загрузки оверлея
EXE файла для поиска в нем поддерживаемых упаковщиков.
/UDF - Разрешить компиляцию вашего собственного копирайта(только reg).
/SCP - Запретить вывод копирайта ( только reg ).
/OVR - Запретить сканирование оверлея.
/PAS - Запретить внутренний определитель кода Turbo Pascal.
/EXE - Запретить определение файловых расширений.
/USG - Запретить вывод строки "как пользоваться" при загрузке.
/TRC - Запретить "обрубание" длинных имен в архивах.
/SGM - Запретить вывод при загрузке информации о использовании про-
граммы ( Usage ).
/DAT - Запретить чтение базы данных и использовать только внутренние
данные о файле. Это полезно, если надо быстро прочитать соде-
ржимое архива.
/EXT - Запретить идентификацию файловых расширений.
/PLG - Разрешить поддержку внешних plugins. Смотрите файл FA.PLG
/FLL - Детальный вывода информации о файле.
/DsbOvr... - Запретить идентификацию SFX архивов "..." : RAR,ZIP,ARJ и
т.д, надо иметь ввиду, что все архивы FA понимает только по
трем буквам - например Stirling Archive = STR.