Hiew8 DEMO (на основе версии 8.13) http://www.hiew.ru/ ▒▒▒▒ Замечание к версии 7.40 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Переписаны заново дизассемблер и ассемблер, они стали 64битными с полной поддержкой команд x86-64. Добавилась поддержка формата PE32+. 64битным стал и Crypt, при этом изменился алгоритм команд DIV и MUL. (См. раздел 'Программа для Crypt') Для переноса crypt-программ предыдущих версий *внимательно* просмотрите/измените операции div/mul и замените первую строку crypt-файла на '[HiewCrypt 6.70]' ▒▒▒▒ Замечание к версии 7.00 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ После весьма продолжительного затишья 7.00 все-таки появилась. - больше не будут поддерживаться DOS и OS/2 версии - теперь хиев работает с файлами и блоками любой длины, как следствие этого работа с логическими/физическими дисками при наличии прав в системе - клавиатурные макросы - progress bar для поиска и блоковых операций - подсветка фиксапов для PE и MZ - косвенные jmp/call готовы для one-touch - обрабока импортов по-новому алгоритму - чуть-чуть (на 5-7%) ускорен поиск **ОСОБЕННО ВАЖНО**: Изменились шаблоны поиска в ассемблере. Теперь они унифицированы с шаблонами Files (см описание в разделе "Строковые шаблоны") ▒▒▒▒ Замечание к версии 6.70 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Crypt стал 32битным. Crypt-программы (*.cry) теперь записываются в текстовом формате. Старый формат от 5.01 будет поддерживать только версия 6.7x! Добавились две операции: AND и OR. Количество команд увеличилось до 32. Можно использовать строки-комментарии, начинающиеся с ';'. ▒▒▒▒ Замечание к версии 6.60 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ С этой версии поддерживается формат файлов - little-endian ELF. С этой версии NE-,LX-,PE-DUMP объединены в один EDUMP, к которому дабавлен ELF. ▒▒▒▒ Замечание к версиям 6.29/6.30 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 32-битная консольная версия для виндов. Все сохранено. Но как обычно при сильной перетряске исходников возможно появление ошибок там, где не было. Появился дампер PE-файлов PEDUMP.EXE Все утилиты откомпилированы под три платформы: DOS, OS/2, Win32. ▒▒▒▒ Замечание к версии 6.15 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ С версии 6.15 HIEW становится шароварным. Стоимость для exUSSR - 10$. Подробности в register.ru. Если Вы меня поддержите HIEW будет портироваться в win32 и *nix и развиваться дальше, если поддержки не будет - то ... ▒▒▒▒ Замечание к версии 6.01 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ - crypt вернулся ▒▒▒▒ Замечание к версии 6.00 ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Как и полагается в версии с двумя нолями, в 6.00 произошли некоторые серьезные изменения: - нет больше crypt'а (это будет отдельный проект, может быть, когда-нибудь..) - переключения по списку файлов от командной строки переехало на CtrlF11/CtrlF12. - Alt-буква переехали на Alt-Fn (кроме Alt-P, Alt-H, Alt-=) - см. hiew.hlp - появились истории ввода (PgDown во вводе строки) и файлов (Backspace для меню, Tab для переключения на следующий файл в истории ) - нет больше "ActionAfterWriteSavefile" в ini-файле. - Параметр в ini-файле "NextFileSaveOffset" (сохранять текущее смещение для следующего файла) заменен параметром "NextFileSaveState" (сохранять все состояние для следующего файла). ▒▒▒▒ Содержание ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ■ Немного о себе ■ Ассемблер (не доступно в DEMO) ■ Базирование ■ Блок ■ Информационная строка ■ Кнопки ■ Закладки ■ Переходы по call/jmp в дизассемблере ■ Строковые шаблоны ■ Поиск ■ Программа для Crypt (не доступно в DEMO) ■ Глобальные/локальные смещения ■ Клавиатурные макросы (не доступно в DEMO) ■ Отбор текстовых строк в бинарных файлах ■ INI-файл (не доступно в DEMO) ■ SAV-файл (не доступно в DEMO) ■ XLT-файл ■ Командная строка ▒▒▒▒ Немного о себе ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Hiew - это 'гляделка' для тех, кому требуется иногда в чужой программе изменить один-два байта (как правило, 7xh на 0EBh :-). Hiew позволяет просматривать файлы неограниченной длины в текстовом и шестнадцатеричном форматах, а также в режиме дизассемблера. ■ Редактирование в шестнадцатеричном режиме и в режиме дизассемблера ■ Встроенный ассемблер x86-64 ■ Просмотр и редактирование логических и физических дисков ■ Возможность создавать новые файлы "с нуля" (может быть, и сгодится когда..) ■ Поиск и замена в блоке ( а это еще зачем ? ) ■ Help контексно-зависимый ■ Поиск ассемблерных команд по шаблону ■ Клавиатурные макросы ■ Встроенный 64битный калькулятор ▒▒▒▒ Ассемблер ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒ Не доступно в DEMO версии ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ для тех, кто знает его без книжек. По умолчанию все числа считаются шестнадцатеричными, суффикс 't' определяет десятично число (напр. mov al,10t). Можно использовать строковые константы: mov eax,"sign" Числа должны начинаться с цифры. Можно складывать/вычитать ( mov bx,[123+23-46h] = mov bx,[100h] ). Сообщения об ошибках сведены до минимума: неправильная команда, синтаксическая, неправильный операнд, несоответствие или отсутствие размера, поэтому можно применять при сдачах экзаменов в качестве задания "а что здесь неправильно ?". Есть три нестандартные команды: jmps = jmp short jmpf = jmp far [mem 16:16/32/64] callf = call far [mem 16:16/32/64] Одна и та же команда может ассемблироваться различными способами, с версии 7.40 появилась возможность выбора: F4 при вводе команды переключает выбирать из вариантов либо ставить команду минимальной длины. При включенной опции 'nop' будет предлагаться различной длины от 1 до 9 байтов. ▒▒▒▒ Базирование ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ для тех, кому надо, чтобы .com обязательно начинался с 100h, и кто хочет чтобы смещение в сегменте данных начиналось с нуля. База - это просто константа, которая прибавляется к смещению и адресам перехода. Имеется следующая приятная возможность: текущее смещение есть - 12345h, а надо чтобы было 95h - вписывайте базу "*95" ( обратите внимание на первую звездочку ! ), база сама посчитается ( впрочем она уже и не нужна ). Сочетание CtrlF5-CtrlF5 аналогично "*0". ▒▒▒▒ Блок ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Только в режимах Hex и Decode. С версии 5.00 блок помечается вне режима редактирования. Выделенный блок можно скопировать в файл через PutBlk( F2 ). Если надо добавить блок к файлу - введите символ *. Можно вставить в текущий файл из другого файла: ( GetBlk (CtrlF2) ): читается блок размером с отмеченный блок со смещения, заданным в окне ввода и записывается в текущий файл со смещения под курсором. С версии 6.10 если нет отмеченного блока в текущем файле, блок выбирается из файлов хистории, которые его имеют. ▒▒▒▒ Информационная строка ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ────────────────────────────────────────────────────────────────────────────── xx% Filename.ext .dFRO -------- xxx PE xxxxxxxx║Hiew8 DEMO (c)SEN ────────────────────────────────────────────────────────────────────────────── └┬┘ └─────────┬┘ │││││ └───┬──┘ └┬┘ │ └──┬───┘ └────────┬──────┘ процентов │ │││││ │ │ │ текущее а здесь будет от всего файла │ │││││ │ │ │ смещение progress bar ( если bar=P │ │││││ │ │ V в HIEW.INI ) │ │││││ │ │ тип neexecutable V │││││ │ │ имя файла │││││ │ │ │││││ │ │ * Text mode: номер первой колонки │││││ │ └─> * DeCode mode: размерность состояние kbmacro: <───────┘││││ │ операндов/адресов R - идет запись ││││ │ префикс 'a' говорит об 0..8 - воспроизведение ││││ │ автоматическом определинии ││││ │ размерности кода для exe направление поиска <────────┘│││ │ │││ │ область поиска: <─────────┘││ └─> закладки на 8 позиций F - весь текущий файл ││ '-' свободо B - блок ││ '1..8' соотв.поз.занята A - список из командной строки ││ '*' текущий ││ состояние файла: <──────────┘│ R - открыт по чтению │ W - открыт по записи │ U - изменен │ │ O - наложить блок <───────────┘ I - вставить блок ▒▒▒▒ Кнопки ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Описаны в HIEW32DEMO.HLP, который одновременно является файлом для встроенной помощи - откликается на F1. Рекомендован к прочтению на ночь. Файл HIEW32DEMO.HLP можете править по своему желанию, первая строка должна быть строкой: "[HiewHelp 7.00]". Символ ';' как всегда обозначает строку комментариев и ни на что, кроме размера не влияет. По F1 вызывается соответствующая секция: от [xxxx] до [yyyy]. Файл должен завершаться секцией [End]. С версии 7.00 можно включать ссылку на секцию вместо того чтобы один и тот же фрагмент писать несколько раз: +[имяСекции] ▒▒▒▒ Закладки ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ для сохранения/восстановления состояния текущего экрана. Символ '+' запоминает состояние текущего экрана. Всего можно запомнить 8 экранов. На любой запомненный экран можно перейти, нажав соответственно Alt-1...Alt-8. Для каждого режима ( Text/Hex/Decode ) свои закладки. ▒▒▒▒ Переходы по call/jmp в дизассемблере ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Недовольство вызвал перенос в Hiew Beta Day 28 переходов на 'A'-'Y'('Z') вместо '1'-'9'('0'). Замечание учтено - переходы стали относительно конфигурабельны. Их можно задать в Hiew.ini в массиве jumpTable. Это строка ( в понятии языка С ), состоящая из цифр и букв английского алфавита, как их перемешаете, так и переходы будут маркироваться. Первый символ - символ, по которому осуществляется откат ( в hiew 4 таким символом был '0', в hiew day 28 - 'Z' ). При чтении с клавиатуры введенный символ переводится в верхний регистр, при необходимости транслируется в эквивалент английских символов в соответствии с раскладкой клавиатуры QWERTY-ЙЦУКЕ и затем ищется в таблице jumpTable, т.е. переходы по 'S' и 'Ы' будут эквивалентными. По умолчанию в jumpTable сначала идут цифры '1'-'9', затем буквы 'A'-'Z'. Было очень оригинальное предложение сделать таблицу сл. вида: 0123456789QWERTYUIOPASDFGHJKLZXCVBNM - это возможность остается на любителя. ▒▒▒▒ Строковые шаблоны ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ В следующих местах можно использовать строковые шаблоны: 1. поиск по маске в ассемблере (decode mode, F7-F7) 2. маска файлов в файловом менеджере (F9) 3. маска функции импорта в списке импортов (F8-F7) Собственно шаблонные символы: ? - любой один символ * - любая подстрока, включая нулевую {ABD} - A или B или C или D {A-D} - от A до D {!ABCD} - не A, не B, не C, не D ! - первый символ в шаблоне инвертирует результат (!*.ехе - все НЕ-ЕХЕ файлы) например если надо отобрать импорты чтения/записи реестра можно использовать маску 'reg*key*' ▒▒▒▒ Поиск ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Если ввод давится на строке ASCII, то поиск не различает маленькие/большие буквы (в т.ч. и русские), нажатие ввода на строке HEX различает буковки. С версии 4.00 приделан ассемблер, кнопочка F7. С версии 5.00 команда "искать дальше" ( FindNext ) отрабатывает с последнего найденного смещения ( то есть можно найти нечто, "побродить в окрестностях" стрелочками, а затем искать следующие вхождение ). Сбрасывается FindNext по CtrlHome, CtrlEnd, F7(find), F5(goto) С версии 5.00 поиск и замену можно производить в отмеченном блоке: F4 при вводе строки поиска/замены. С той же самой версии 5.00 ТОЛЬКО В РЕЖИМЕ ДИЗАССЕМБЛЕРА можно искать команды по шаблону. (Про шаблоны см. выше). То есть если при вводе ассемблерной команды встречается в строке любой символ шаблона то пойдет поиск по шаблону, если нет - команда просто ассемблируется. Насильно ассеблировать команду можно комбинацией CtrlEnter, например при 'mov eax,[eax*2]' Например: в режиме Decode "mov ax,*" будет искать "mov ax,1234h", "mov ax,sp", и т.д. "mov e?x, eax" будет искать "mov eax,eax", "mov ebx,eax", "mov ecx,eax", "mov edx, eax", но не "mov ebp,eax", "mov esi,eax" *** ВАЖНО *** строка сравнивается без преобразований! Пишите все ведущие нолики! 'cmp *,0ab' - для байта, 'cmp *,000ab' - для слова С версии 5.83 можно искать последовательность команд, разделяя их специальным символом . С версии 7.40 такой символ '/' Например: "push *10 / call * / add *" найдет связку: не найдет: ------------- --------- push 00010 push 00010 call 01234:05678 push 00011 add sp,00006 add ax,00006 С версии 6.10 можно искать/заменять в файлах, заданных в командной строке. Эта возможность включается выбором опции "filArg" через кнопку F4 при редактировании строки поиска/замены. ▒▒▒▒ Программа для Crypt ( F7 in Edit ) ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒ Не доступно в DEMO версии ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ для за/расшифровки кода/данных по сравнительно простому алгоритму. За один раз за/расшифровывается byte/word/dword/qword, размер задается кнопкой F2. Программка должна завершаться оператором "LOOP numberLine", впрочем "Loop 1" можно опустить. команды: режим Reg : neg,mul,div режим Reg-Reg: mov,xor,add,sub,rol,ror,xchg,and,or режим Reg-Imm: mov,xor,add,sub,rol,ror,and,or режим Imm : mul,div,loop доступны все 8/16/32/64-битные регистры, которые абсолютно равноправны, кроме AL/AX/EAX/RAX, который заполняется текущим значением соответствующей размерности из расшифровываемого фрагмента, и из которого потом измененное значение возвращается на место. Отличия от стандартного ассемблера: * нет операндов в памяти * loop используется в качестве jmp/stop * операнды команд rol/ror должны иметь одинаковый размер, т.е. ROL AX,CL или ROL AL,CX не допускаются * (с версии 7.40) команда mul умножает регистр rax на свой операнд, который может быть и константой * (с версии 7.40) команда div делит rax на свой операнд, который может быть и константой. результат помещается в rax, остаток - в rdx Примеры: a. про-XOR-ить байт со значением 0AAh: 1. XOR al,0aah 2. LOOP 1 ; можно опустить. b. про-XOR-ить слово с инкрементом маски 1. MOV dx,0 2. XOR ax,dx ; F7 будет "ходить" по этим командам 3. ADD dx,1 ; 4. LOOP 2 ; ▒▒▒▒ Глобальные/локальные смещения ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ С версии 5.40 для файлов NE/LX/PE сделана возможность отображать (и вводить) локальные смещения, то бишь от начала сегмента/обьекта. Локальное смещение отмечается точкой впереди смещения. В случае локального смещения для NE/LX новое смещение считается как SSSSOOOO, где SSSS - номер сегмента для NE, база для LX, OOOO - локальное смещение. Если SSSS нулевой номер, то смещение отсчитывается для текущего сегмента. Для LX, у которого размер обьекта более 0xFFFF (см. 1 обьект в FC.EXE) отображение идет как в отладчике (пр. SD386), ну и переходить надо соответственно, например на .0x200234, хотя базы 0x20000 нет. В том случае, если курсор находится вне сегмента/обьекта выдается сообщение об ошибке (или я неправильно считаю переход :-) *NB!* Если при вводе первый символ есть '.', то смещение считается локальным, в противном случае глобальным. Примеры ввода локальных смещений по F5: a: (NE) .10023 - в первый сегмент смещение 0x0023 b: (NE/LX/PE) .23 - в текущий сегмент смещение 0x0023 c: (LX) .10023 - в таблице обьектов ищется обьект с базой 0x10000 и в этом обьекте переход на локальное смещение 0x0023 d: (PE) .401023 - по виртуальному адресу 401023 Если установлено локальное смещение, поиск с шаблоном или ссылки для NE/LX/PE ищутся только в кодовых сегментах. В случае dual-EXE регион поиска определяется активным заголовком. Если активен заголовок MZ, поиск идет до заголовка NewExe. С версии 7.00 показ 64битных оффсетов включается на файлах более 4Г причем формат идет как "старшие32'младшие32" Это сделано потому что длинная цифирь вообше не читается , путаешься в нолях. В титульной строке для больших файлов оффсет всегда идет в 64 битах, а слева только если ширина окна позволяет (>89символов) иначе отображаются только младшие32, а за старшими надо смотреть в титульную строку. ▒▒▒▒ Клавиатурные макросы ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒ Не доступно в DEMO версии ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ просто пишется последовательность нажатий, и так же тупо воспроизводится одно за другим 'не глядя на экран' Ctrl-точка - и пошли нажимать - Ctrl-точка для прекращения. Последовательность ложится под кнопку Ctrl-0 как макро0. через Ctrl-Minus можно перенести на другую кнопку из Ctrl-1..Ctrl-8 либо сохранить/прочитать в/из файла, поставить задержку между 'нажатиями' и различные флаги управляющие кнопки для записи/воспроизведения: Ctrl-Minus - Macro manager (кнопки см ниже) Ctrl-. - записать/остановить макрос в Macro0 Ctrl-0 - воспроизвести Macro0 Ctrl-1 - воспроизвести Macro1 ... Ctrl-8 - воспроизвести Macro8 Macro manager: Enter - воспроизвести текущий макрос F2 - From 0 - копировать сюда макрос0 F4 - Delay - поставить задержку между 'нажатиями кнопок' F5 - Rename - переименовать макрос F8 - Unload - выгрузить из памяти F9 - Store - записать макрос в файл (не доступно в DEMO) F10 - Load - загрузить макрос из файла (не доступно в DEMO) F11 - Up - переместить макрос вверх F12 - Down - переместить макрос вниз AltF1 - Loop - проигрывать марос 'по кругу' AltF2 - FailSr - останавливаться если поиск ничего не нашел также можно запускать hiew сразу с макро: /MACRO0= ▒▒▒▒ Отбор текстовых строк ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ С версии 7.10 можно отобрать (Alt-F6) из exe-файла текстовые строки. Это последовательность букв и цифр и некоторых специальных знаков из первой половины ascii-таблицы. Если помечен блок то строки собираются только внутри него, иначе во всем файле. Минимальная длина задается в ini-файле в строке 'MinStringLength=' и не может быть меньше 4. Готовый список строк можно отфильтровать с помощью строковых шаблонов. Фильтрация идет только по первым 1000 символам строки. ▒▒▒▒ INI-файл ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒ Не доступно в DEMO версии ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Если в том же каталоге, что и HIEW.EXE находится HIEW.INI то начальные установки берутся из него. Можно задавать положение ini-файла через ключ командной строки: "/INI=" Первая строка должна быть: "[HiewIni 5.03]". Пустые строки и строки комментариев ( начинаются с ';' ) игнорируются. Установки из Ini-файла перекрывают значения по умолчанию, если Вас не устраивает, положим, _только_ полоска слева, можете сделать hiew.ini из двух строк: заголовка и строки "Bar=...". Все возможные установки смотри внутри HIEW.INI ▒▒▒▒ HEMKEYS.INI-файл ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒ Не доступно в DEMO версии ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ С версии 7.45 в hem-каталоге может находиться файл HEMKEYS.INI с односимвольными клавишами прямого вызова hem-модулей в меню hem (F11). Первой строкой текстового файла должна быть строка '[HemKeys 7.45]'. Далее описываются клавиши для внешних модулей: k: hemfile Пустые строки и строки комментариев игнорируются. Буквы быстрого доступа переводятся в верхний регистр. Имя hem-файла сравнивается c начала и принимается первое совпадение. Пример: [HemKeys 7.45] w: FileWalker.hem V: PEVERIFY ▒▒▒▒ SAV-файл ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ▒▒▒▒ Не доступно в DEMO версии ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ При запуске без параметров Hiew ищет savefile (HIEW.SAV или значение savefile= в INI-файле) и восстанавливает записанное положение (Ctrl/F10 - SaveState). Положение HIEW.SAV можно перекрыить из коммандной строки: /SAV= - откуда брать HIEW.SAV ▒▒▒▒ XLT-файл ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ HIEW.XLT служит для перекодировки при выводе/вводе/поиске. Может отсутствовать напрочь. Можно перекодировать при чтении/записи блока. typedef struct{ BYTE sign[ 9 ], // "HiewXlat",0 unused[ 5 ], versionMajor, // 0x05 versionMinor; // 0x40 }XLAT_HEADER; typedef struct{ BYTE title[ 16 ], // заголовок отображается по F8 tableOut[ 256 ], // для вывода tableIn[ 256 ], // для ввода tableUpper[ 256 ]; // для игнорирования регистров в поиске }XLAT; Максимальное количество таблиц - 15. Можно посмотреть все таблицы перекодировки через F8-F9 (text mode), либо AltF8-F9 (остальные режимы вкл. editmode) ▒▒▒▒ Командная строка ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ Hiew [options] [/s]filemask...[/s][filemask] /O[thc]=OEP|END|[.]offset[th] - задать стартовые режим и смещение (не доступно в DEMO) /MACRO0= - сразу запускать макрос (не доступно в DEMO) /SAV= - откуда брать savefile (не доступно в DEMO) /INI= - откуда брать inifile (не доступно в DEMO) [/s]filemask...[/s][filemask] - можно задавать несколько файлов, включаю маску с шаблоном. * Опция /s переключает поиск с подкаталогами: hiew /s *.dll *.exe /s *.txt -> будет искать .dll и .exe с подкаталагами и .txt только в текущем каталоге * смещение в опции '/O' можно указывать во всех видах, воспринимаемых внутри hiew: - с точкой впереди как локальное смещение - основание по умолчанию (16) может быть изменено суффиксом 't' а также: - специальное смещение 'END' (без кавычек) ставит курсор на последний байт файла - специальное смещение 'OEP' (без кавычек) ставит курсор на точку входа Exe-файлов примеры: /Ot=END - текстовый режим, конец файла /Oc=OEP - режим кода, курсор на точке входа /Oh=1234 - hex режим, смещение 1234 (hex) /Oh=0x1234 - тоже самое что выше /Oh=1234t - hex режим, смещение 1234 (decimal) /Oc=.401234 - режим кода, локальное смещение 401234 * с версии 7.40 опция '/O' применяется ко всем файлам командной строки при CtrlF9/CtrlF11/CtrlF12 ▒▒▒▒▒▒▒▒▒▒ Евгений Сусликов , ▒▒▒▒▒▒▒▒▒▒▒