,sS$$$$$$ $$ ,s$s ,sS$$$$$ ,$$$$$$$7' ^' ,$$$' ,$$$$$$7' ,$$$' ,sS, ,$$$' ,$$$' ,$$$$$$ ,$$$' ,$$$' ,$$$$$ ,$$$$$$' ,$$$' ,$$$' ,$$$' ,sS$$$$Ss ,$$$' ,$$$' ,$$$' ,$$$$$$$$ ,$$7' ?$P' ?$7' ?$$' ?$$$$$$7' ,$$$' ,$$$$b. ?$$$$$$$$$$b ,sS$Ss, ,sS$Ss$ $b,sSs, $b,sSs, ,sS$Ss, $$$$Ss, ,$$, `?$$$$ $$' `$$ $$' `$$ $$P^?$$ $$P^?$$ $$' `$$ $$' `$$ ,$'`$, `$$$' $$ $$ $$ $$ $$ $$ $$ $$$$S7' $$$$S7' ,$',$' .d$$' $$, ,$$ $$, ,$$ $$ $$ $$ $$ $$, ,, $$`$$, ,$'d$' sS$$$$$$?' `?$$$7' `?$$$^$$ $$ $$ $$ $$ `?$$$7' $$ `?$$b, ,$$$' MjC/SMF `$$w$' FILE SCANNER by SMT `?7' FileScanner - проверка на различный "c00l stuff", компиляторы, линкеры, MZ и PE оверлеи, поиск описаний файлов, подсчет размеров директорий, нахождение даты линковки PE файлов (поддерживаются форматы дат MS и borland) и еще многое другое... порядка 240 сигнатур для DOS програм взято из FileAnalyzer (c) Vadim Tarasov (vnet@world.lv, http://www.world.lv/vnet) остальные DOS и все PE я добавил сам. программа проверяет стартовый код MZ, COM, PE также достает описания файла из PE/NE/LE файлов (в ресурсах). в NE файлах второе описание (надо же! 2 РАЗНЫХ описания) достает из заголовка. Еще описания ищутся в files.bbs, descript.ion, 00index.txt 00_index.txt и т.п. файлах. примерно 220 типов расширений взято опять же из FileAnalyzer (общее число можно посмотреть по fs.exe /d). некоторые расширения взяты из ~~ 2300 extensions EXTENSIONS' ENCYCLOPEDIA -= iNFiNiSiNTh =- (c) 2:5030/318.7@fidonet.org sam@infi.hop.stu.neva.ru sam@brothers.stud.saai.ru Converted by FM 1997 а многие я просто вытащил из реестра win95/98/2k после установки микрософтовых (точнее, макрософтовых) програм (office, visual stidio и т.п...) если PE-файл упакован, защищен или заражен вирусом, то можно предположить компилятор, создавший изначальный файл по DOS-части программы или по версии линкера, так, например Recognized: DOS stub from MSVC file linked by: microsoft link from visual studio 6.0 Packed by UPX может значить, что программа скомпилирована microsoft visual c++, а затем упакована UPX файлы с пробелами в именах должны быть заключены в кавычки, напр. fs "\program files" Баги: 1. файлы c не-acsii символами(русские) в именах обрабатываются не полностью - нет поиска описаний в ресурсах и files.bbs 2. все остальные баги описаны в fs_eng.doc history: Sun 7 Aug 23:12:18 1999 first version Thu 16 Sep 15:56:49 1999 добавлена проверка оверлеев исправлена ошибка с версией NE-linker'a вроде убран(?) глюк с цветным текстом убран глюк с обработкой расширений, если указан полный путь сделан показ расширений файлов в fs.exe /dd добавлен NE импорт/экспорт увеличена база поддержка VersionInfo в unicode (windows NT) в несколько раз ускорена проверка (особенно заметно с опцией /o, которая теперь проверяет не 128, а 256 первых байт оверлеев) поддержка mp3 и RIFF/WAVE RIFF/MP3 подсчет/установка контрольных сумм PE-файлов убран подсчет контрольной суммы если в PE-заголовке ее значение равно 0 В базу добавлен небольшой справочник по содержимому RIFF-файлов Переделан анализ NE export'ов Начат 16/32-битный трассировщик Возможность изменения выравнивания PE-файлов до минимума (512 байт), удаление лишних полей из PE-заголовка, замена DOS-stub'a более компактной версией (минимум - 64 байта) Добавлено удаление из DOS заголовка ненужной информации Определение размера кластера через DeviceIoControl, GetDiskFreeSpace в windows95 работает не всегда верно, для NT используется GetDiskFreeSpace Поиск информации в MP3, теперь не только описания,но и частота, bitrate,... Поиск повторного mp3-заголовка -> пропали ложные срабатывания на mp3 Пофиксен баг с размером DOS/EXE заголовка, когда число настроек = 0 Пофиксен баг с размером PE заголовка, когда есть секции с размером 0 Поиск mp3-заголовков только по выравненным на 4 байта адресам закончен tracer и com-loader exe-loader и создание exe-файла Удалена проверка выравнивания mpeg заголовка на 4 байта - некоторые mpeg'и не выровнены Компилятор скриптов (forth -> i386 code)!!! Для сложных скриптов (aPACK,UPX) трассировка ускорилась более чем в 5 раз Release of 31-Jan-2000 Fixed bug with unpacking of UPX --no-reloc option full support for RIFF & IFF MIDI chunks: texts and copyrights Чтение FIXEDFILEINFO, только с /v Приспособил name demangler от всеми любимой IDA PRO, теперь вместо ??1type_info@@UAE@XZ в C++ экспортах/импортах показывает более понятное public virtual __thiscall type_info::~type_info(void), из-за этого пришлось делать fs.ini, в котором лежит путь к библиотеке IDA.WLL. Надо будет как-нибудь самому написать, а то как-то нехорошо Иду использовать AVI suppport, 'enter' with key /p scrolls only by 1 line bitmap 2.0-4.0 support coloRIX images support PE handling rewritten using winnt.h, now use pe->checksum instead of *(unsigned*)(header+0x58) FLI/FLC support GEM bitmap support GIF support Added check for bad PEs (like UPXed v0.51) in realigner, restore them Если DOS-программа в начале печатает что-то (через int21/ah=9), то эта строка указывается в поле 'Title:' added /rn switch Release of 1-Feb-2000 Если файл начинается с ascii текста, и после него 0x1A, то FS показывает этот текст Fixed bug: realigning IMAGE_SCN_CNT_UNINITIALIZED_DATA sections was incorrect (sick watcom PE executables) MOD, MTM, 669, S3M support улучшена эвристика для MP3-файлов Release of 7-Feb-2000 куча распаковщиков: все pklite,lzexe smacker support Fixed bug with empty version_info strings Release of 02-Mar-2000 Fixed another bug with displaying version info on NT (остался еще один ;) RMI support удаление bound imports при realign'e (необходимо для NT) support of boot sectors direct access to disk (95/NT) for reading boot sector fixed script for UPX/COM unpacker появился ключик /n Release of 13-Mar-2000 .ZXS support (показывает текущие значения регистров и некоторых портов) .TAP support, .TAP in .ZXS support (показывает каталог) /ns and /inf switches .TRD support added key to supress (almost) all messages скрипт для diet 1.45f; com-файлы распаковывает точно, а вот в exe-файлах в конце возможен мусор (упакованный файл не содержит точную длину) если не задан ключ /ns, то проверяет relocs в dos/exe на попадание в файл better dos/exe/unpacker relocs handling (more compatible with DOS :)) (thanx to Alexander Alferowich for bugreport) added some new opcodes to emulator обработка флага TF в трассировщике, эмулятор некоторых функций int21 emulator is almost perfect now! it's able to trace HackStop ключ /rd теперь оптимизирует relocations в dos/exe. так можно "вылечить" файлы, распакованные предыдущей версией fs и не понимаемые досом прибил псевдо-атрибут LOCKED - толку от него все равно немного... ключик /view - wave & midi/rmi player OMF LIBs and OBJects support Release of 27-Mar-2000 ключик /cs - может пригодится, чтобы оценить, сколько места займет каталог на дискете, не копируя его туда, или какой выигрыш даст realign PE-файла на диске с другим размером кластера. Надо сказать, что fs при подсчете размера директории не учитывает место, занимаемое самими подкаталогами, т.е. еще нужно прибавить как минимум количество подкаталогов, умноженное на размер кластера... Некоторые подкаталоги могут занимать более одного кластера, и еще удаленные файлы тоже занимают место в директории (например создать директорию из 30,000 файлов нулевой длины, а потом первые 29,999 удалить - каталог все равно будет занимать много места, а FS будет считать его размер - 0) fixed bug (i hope :) with displaying verinfo on suxxing win9x (thanx to mAXX for bugreport) .VTX (vortex AY8912/YM2149F soundchip module) support added sourcefiles detection (C,LISP,ASM,PASCAL, etc...), look to fs /dd when runned from GUI, waits for keypress before exiting small hexeditor added .bin viewer (raw textscreen dump) filesize must be 4000 show titles in H! text/ANSI heuristic (scans entire file until /ns specified) "plain ascii" = 0x20-0x7F characters, "text" = 0x20-0xFF unpacker for 3D-realms .RTS files. I wrote it because there is unpacker for .GRP, but no for .RTS; coded in release day, so test it yourself :)) beta release of 30-mar-2000 for testers: now wildcards in filenames are supported! directories can't be wildcarded (suggestion by Duke/SMF) ansi output shows ansi files signatures (acidview format) ansi viewer switches can be placed anywhere: before or after filenames (suggestion by Duke/SMF) wide text view in hexeditor (idea by Duke/SMF) one 'hidden' switch documented fixed bug with 'fs /cs' many unpackers beta release of 1-apr-2000 for testers: zero-length tempfiles will be deleted on exit (idea by Duke/SMF) выяснилось, что файлы со значком & в имени тоже надо заключать в кавычки поиск ACID-сигнатур не только в ANSI файлах support for multiple pictures in one ANSI (animation delay = 50ms) show filesize & filetimes only with /inf switch added /del:nnn switch - animation delay for ANSI support for notes to records in database; they are usually not displayed changes in switch /o - now its look in 288 bytes of overlay, should be enough to detect verisign signatures in OCX beta release of 2-apr-2000 for testers: fixed bug with unpacking diet 1.20 & crypt 1.7 (thnx to Duke for bugreport) raw sound player (/snd: & /sbf:) VOC player Release of 04-apr-2000 added 'goto' in hexeditor в hexeditore можно писать русские буквы в поле ascii (nt only?) Release of 11-apr-2000 disasm - all opcodes up to pentium (without MMX and FPU) and some P-II,P-III opcodes added asmtab in fs.ini note to unpacker for AVPACK: files, packed with switch -R can't be unpacked, because i don't know how to get BIOS dump from Win32 prog улучшен детектор boot-секторов (thnx to Duke/SMF) generic com2exe unpacker some protectors, like DIGILOCK, will not be detected until transforming back to com-file. this made only for decreasing database size (don't duplicate same signatures for com & for exe). so.. you need use 'fs /u' three times to completely unpack DIGILOCK for EXE (intermediate files also works :) assembler added added relative offsets and virtual addresses in hexeditor multi-line descriptions in files.bbs & *index.txt bugfix release of 13-apr-2000 fixed bug with 'goto' in asm mode documented one hidden switch 'set relative offset' was not work - fixed release of 18-apr-2000 hexeditor: shortcuts for jumps, jump back queue (20 items) shows imported names in disasm mode MZ-header viewer/editor .ZXS lister rewritten (got original documentation) release of 25-apr-2000 fixed bug in 16-bit jump shortcuts fixed script for diet 1.45f - now produces exes without garbage fixed script for diet 1.43 & 1.20 support for SCL files - use /ns to skip integrity checksum test, /n to skip filelist support for hobeta files fixed cursor size in INI file (cursor = 100% does not work in win98) some new opcodes - able to unpack crackstop 1.01 new DOS & PE optimizer. better PE restub. now it's possible to use very large DOS stubs with overlays. changes in command-line switches many search-modes in hexeditor. see fs_eng.doc for details some hotkey changes in fs.ini release of 28-apr-2000 fixed bug in PE realigner, that appeared in release of 25-apr-2000 fixed bug with DOS/EXE far jump and call near shortcuts добавлен вывод дня недели в датах, атрибуты файла показываются только если задан /inf 3-may-2000 BMP viewer, see fs_eng.doc for details SCR viewer - no blinking support :( better files.bbs support simple icon/cursor viewer - FS sets specified cursor over empty window ;) extension MUST be .cur, .ani or .ico похоже последняя версия... 25-may-2000 ну вот! только пообещал, что будет последняя версия, так сразу письмами закидали (где ж вы раньше все были ;-) так что завязывать еще рано.... fixed unpacker for lglz 1.03/1.04 - better unpacked size detection! added ctrl-C, ctrl-break handler. now this keyshortcut may be used in hexeditor (for clipboard copy or other keymacro) cool splitscreen mode in hexeditor - separate positions of selected blocks, search positions, put and disasm modes, etc... save & load block... for interesting details see fs_eng.doc fs /hex opens the file even if file is read-only. fs /hxr left for compatibility... 9-Jun-2000 added unpacker for registered version of HackStop 1.17, 1.18/386. Thanks to Duke for stuff! added progress bar in hexeditor fixed bug, that caused to crash stupid windows 95 while playing MIDI PC-Board format detector/viewer (something like ANSI) fixed bug - sometimes clipboard data was not accessible for other windows programs a bit better optimizer for visual c++ PE files 24-Jun-2000 fixed some bugs pe-header editor speed-up 32-bit disasm a lot... pe data directory editor, with quick jumping to import, export, etc... bugfixes in assembler pe section table editor, quick jump to start of section disabled support for old-style pe filetime, used in old verions of borland c++ polymorphic detection/unpacking engine. use /poly (or /poly /u) ----- ??? not released, only for testers bugfixes of bugfixes in assembler ;) descriptive error messages, using win32 error message API fixed bug: when tracing of file fails, program quits without analyzing other files in filelist (reported by Duke) fixed bug in unpacking script of wwpack mutator now shows redirected exports in fs /e added new jump commands in hex editor for browsing various file tables and portable executable tables - JumpOFFS, JumpVA, JumpRVA, EnterRVA see fs.ini for more... added unpacker engine for PE files and script for unpacking most popular PE packers - all versions of win32/UPX, and aspack 2000/2.1 функция подсчета размера директорий учитывает место, занимаемое самими директориями и прибавляет его к "real total size" added option for fast scrolling in hexeditor (refer fs.ini) hexeditor: cut&paste in dialog boxes improved undojumplist returns support for old-style pe filetime used in old verions of borland c++ 22-Oct-2000 faster color output, no bugs in win 9x new data analysis engine - more flexible! more stable! but slower :-( also code size decrease now it's possible to use viewer in overlays/etc... now it's possible to specify path+wildcards (ex.: "fs /rn \WINNT\System32\*.exe" is good) unpacker for .PAKs from Quake 2 / Half-Life / Team Fortress / many_others_that_uses_Quake_engine unpacker for 3D realms .GRP and .RTS/.WAD (from duke3d/doom/etc...) added switch /res; not very useful, because resources are compiled, e.g. bitmaps, icons without header, etc... :-( to extract resources use something like 'fs /res /u file.exe' fixed bug in assembler: aad,aam were not assembled without operand hexeditor: very powerful FILL command. also may be used for many other tasks, see fs_eng.doc database is compressed - program loading will be slower. for comfort usage you need K6 or P6 class processor midi/wave player: exit when finished playing setting shecksum in SCL,TAP & Hobeta files (use /c) more formats in voc-player, try fs /view duke3d.grp duke.rts id3v2 support for mp3's. not amazing, but it works. thanx to Alexander Alferowich for winamp module with id3v2 13-Nov-2000 PCBFILES.BBS support, better FILES.BBS handling detector/viewer for unix-style manuals PNG info fixed small bug in output format (thnx to Duke for Solo62kg.EXE) fixed bug in unpacker pklite -e (with large files). bugreport by Duke added /hr switch fixed bug in PE unpacker (when overlay is also PE file). bugreport by Duke NE import/export works again fixed signature of ASPack 2.0, bugreport by Duke Z80 asm/disasm including *ALL* undocumented opcodes 6502 asm/disasm for hacking Nintendo (aka Dendy) games :-) if somebody have complete 6502 instruction list, or information about .NES format, please e-mail me!!!! hex editor: 32-bit integer calculator 27-Nov-2000 a bit better MP3 detection fixed unpacker for Sin packs fixed some bugs pcx viewer built-in C++ name demangler - ida.wll not needed added switch /us - idea by Alexander Alferowich extract 'data.structure' whith 'unpacker' suffix (see fs /dd) fixed one bug in aPack unpacker ( are there left some ;) ? ) credits to Alexander Alferowich fixed bug in DOS unpacker - some unpacked programs says 'no memory' now FS leaves old minmem & maxmem values in header disasm: 'salc' renamed to 'setalc'. assembler understands both asm: all FPU opcodes, including pentium-II modified unpacker for crackstop (1.03); bug reported by Duke pe unpacker engine improved added switch -spl - useful for decreasing size of unpacked files, idea by Duke. see manual for more details now pe optimizer sorts sections by VA. (windows 2000 rejects files with unsorted sections) added switch -ren to pe optimizer 4-Dec-2000 fixed bug, when unpacking com2exe old minmem and maxmem in header trashed fs now have ascii logo (made by MajestiC) fixed another bug with maxmem 7-Dec-2000 [bugfix] fixed bug in unpacker, that appared in previous version and caused many scripts fail with 'lenghts are different': especially r-crypt, JmCryptCom, Digilock, VSS and others... 4-jan-2001 fixed bug (fs sometime crashes when analyzing files with length=4096) fixed bug in unpacker for pklite 2.00 -e (reported by mAXX) more stable dos unpacker able to scan files, shared for writing unpacker for pe-crypt 1.02; first *not*lame* pe unpacker now looking to compressed file sizes when counting real directory size fixed rare bug in pe optimizer. it is also present in upx 1.04 ;) hexeditor: minor changes in calculator dialog fixed bug: fs sometimes crashes when trying to optimize unknown (for optimizer) file type viewer for UNIX-style manuals improoved - added support for bold text (this is not files, that processed by man, but files, prepared for printing) fixed bug in detecting .wav playtime added switch -rec fixed bug in processing files.bbs DBF detector and viewer (sorry, viewer uses GUI). see hints in fs_eng.doc added extractor for binary registry hives (for win95 and win2000) 23-Mar-2001 fixed mp3 detector (again ;) show ID3v2 fields using ANSI (was: OEM) suggestions by Alexander Alferowich fixed unpacker for aPACK (thnx to MajestiC) viewer for windows metafiles and enhanced metafiles fs now can find (if running on windows nt), what process loaded file as dlls or user who opened file small changes in -spl switch - more optimizations manuals viewer - recognizes 0x1B,0x39 and some other .TTF, .FON fonts viewer (only for nt) fixed crash on extended (and invalid) ID3v2 tags. better comments detection thnx again to Alexander Alferowich for hardly testing files with ID3v2 27-Apr-2001 some fixes for ID3v2. bug reported by Alexander Alferowich [of course :-)] JPEG info JPEG viewer fixed script for bad/damaged RIFFs new keys in dialogs of hexeditor: ctrl+up,down,left,right - move to nearest field unlimited(!) undo/redo, even between edit sessions option safemode=XX removed from .ini as obsolete fixed bug: hexeditor crashed on zero free disk space hexeditor: bookmarks and 'sticky' bookmarks hexeditor dialogs: when typing text in unchanged field, field will be cleared; added DialogItemUnchanged=XX in .ini switch -bt removed. use "ws copy btc bootsect.nt && fs -ns bootsect.nt && del bootsect.nt" fixed 'zoom to max' in picture viewer 5-May-2001 hexeditor: fixed bug, appared when copying block in put mode to EOF hexeditor: browse/jumpto PE imports/exports (see hints in fs_eng.doc) 6-Jun-2001 some bugfixes in search dialog fixed unpacker scripts (greets to: Duke, Ralph Roth, Alexander Alferowich) pe analyzer now detects invalid image size in header. pe realigner fixes it. pe realigner also fixes incorrect header sizes. this is added because many 9x-scramblers (by ZeroCoder, NH, etc...) do not update this field and file can't run on NT pe analyzer now detects incorrect sections in NT native drivers fixed bugs in assembler hexeditor: FindRawRef now checks for 16- or 32-bit disasm mode bugfixes in dos unpacker added option -poly:N, useful for batch processing; recommended value N=1000000 for fast machines fixed awesome memory leaks in polymorphic detection added options: -d[u|d][a|n|t] (experimental)