
  Hiew release 7.10                                  Моей жене посвящается...


 Смотри   http://webhost.kemtel.ru/~sen   для новостей


▒▒▒▒ Замечание к версии 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"  (сохранять   все
состояние для следующего файла).

▒▒▒▒ Содержание ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

 ■ Немного о себе
 ■ Ассемблер
 ■ Базирование
 ■ Блок
 ■ Информационная строка                                       
 ■ Кнопки
 ■ Закладки
 ■ Переходы по call/jmp в дизассемблере
 ■ Строковые шаблоны    			
 ■ Поиск                                                        
 ■ Программа для Crypt
 ■ Глобальные/локальные смещения                                
 ■ Клавиатурные макросы                                        
 ■ Отбор текстовых строк в бинарных файлах		        (новое в 7.10)
 ■ INI-файл
 ■ SAV-файл
 ■ XLT-файл
 ■ Командная строка                                             
 ■ История версий                                               (новое всегда)


▒▒▒▒ Немного о себе ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

Hiew  -  это  'гляделка'  для  тех,  кому  требуется  иногда в чужой программе
изменить   один-два   байта   (как  правило, 7xh  на  0EBh :-). Hiew позволяет
просматривать  файлы  неограниченной  длины  в  текстовом  и шестнадцатеричном
форматах, а также  в режиме дизассемблера процессора Pentium(R) 4.

 ■ Редактирование в шестнадцатеричном режиме и в режиме дизассемблера
 ■ Встроенный ассемблер Pentium(R) 4
 ■ Просмотр и редактирование логических и физических дисков
 ■ Возможность создавать новые файлы "с нуля" (может быть, и сгодится когда..)
 ■ Поиск и замена в блоке ( а это еще зачем ? )
 ■ Help контексно-зависимый
 ■ Поиск ассемблерных команд по шаблону
 ■ Клавиатурные макросы
 ■ Встроенный 64битный калькулятор


▒▒▒▒ Ассемблер ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

        для тех, кто знает его без книжек.   Byte/word/dword/pword/qword/tbyte
можно  сокращать  до   "b,"/"w,"/"d,"/"p,"/"q,"/"t,".   Все  числа   считаются
шестнадцатеричными, буковку "h" можно ставить, а можно и не ставить, но должны
начинаться с цифры.   Можно складывать/вычитать  ( mov  bx,[123+23-46h] =  mov
bx,[100h] ).  Сообщения об ошибках сведены до минимума: неправильная  команда,
синтаксическая, неправильный операнд,  несоответствие или отсутствие  размера,
поэтому можно применять при сдачах экзаменов  в качестве задания "а что  здесь
неправильно ?".  Безусловный JMP  транслируется  в  0E9  XX  XX,  если  хотите
короткий (0EB), так и пишите: jmp short xxxxx ( или jmps xxxxx ).

        С версии 5.00  по  многочисленным  просьбам  сделан  386-й  ассемблер,
поэтому будьте  внимательны при  ассемблировании переходов  - можете  получить
оЧЧЧень далекий переход в программе для 8086.

 *** ВНИМАНИЕ ! ***  Одна и та же команда может ассемблироваться по-разному
                     разными ассемблерами.


▒▒▒▒ Базирование ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

        для тех, кому надо, чтобы  .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║Hiew 7.00 (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 - вставить блок


▒▒▒▒ Кнопки ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

        Описаны  в HIEW7.HLP,   который  одновременно   является  файлом   для
встроенной помощи - откликается на F1. Рекомендован к прочтению на ночь.

Файл  HIEW7.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  <F7><F7>"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 можно искать последовательность команд, разделяя их
точкой с запятой.
        Например: "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/F8 in Edit ) ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

        для за/расшифровки кода/данных по сравнительно простому алгоритму.  За
один раз за/расшифровывается один байт/слово/дв.слово, размер задается кнопкой
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    : loop

        доступны все 8/16/32-битные  регистры, которые абсолютно  равноправны,
кроме    AL/AX/EAX,    который    заполняется    байтом/словом/дв.словом    из
расшифровываемого  фрагмента,  и   из   которого   потом   байт/слово/дв.слово
возвращается на место.

Отличия от стандартного ассемблера:
      * нет операндов в памяти
      * loop используется в качестве jmp/stop
      * операнды команд rol/ror должны иметь одинаковый размер, т.е.
           ROL AX,CL или ROL AL,CX не допускаются
      * 32битные регистры не доступны для умножения и деления

Примеры:
     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               ;

        Учтите, что при делении на байт делится  слово ( AX ), при делении  на
слово делится двойное слово ( DX:AX  ), поэтому не забывайте обнулять чего  не
надо.
     c. поделить байт пополам
        1. MOV  cl,2
        2. MOV  ah,0            ; регистр AH не определен
        3. DIV  cl

     d. преобразовать по формуле: ax=(ax*3)/2
        1. MOV  bx,3
        2. MOV  cx,2
        3. MUL  bx              ; результат в (DX:AX)
        4. DIV  cx              ; делится (DX:AX) на CX


▒▒▒▒ Глобальные/локальные смещения ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

        С версии 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, а за
старшими надо смотреть в титульную строку.


▒▒▒▒ Клавиатурные макросы ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

просто  пишется последовательность нажатий, и так же тупо воспроизводится одно
за другим 'не глядя на экран'

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   - записать макрос в файл
 F10    - Load    - загрузить макрос из файла
 F11    - Up      - переместить макрос вверх
 F12    - Down    - переместить макрос вниз
 AltF1  - Loop    - проигрывать марос 'по кругу'
 AltF2  - FailSr  - останавливаться если поиск ничего не нашел


также можно запускать hiew сразу с макро: /MACRO0=<filename>


▒▒▒▒ Отбор текстовых строк ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

С  версии  7.10  в  hex-режиме  (alt-f6) можно отобрать из exe-файла текстовые
строки.  Это  последовательность букв и цифр и некоторых специальных знаков из
первой   половины   ascii-таблицы.   Если   помечен  блок то строки собираются
только   внутри   него,  иначе  во  всем  файле.  Минимальная  длина  задается
в  ini-файле  в  строке  MinStringLength=  и  не может быть меньше 3х. Готовый
список строк можно отфильтровать с помощью строковых шаблонов. Фильтрация идет
только по первым 1000 символам строки.


▒▒▒▒ INI-файл ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

        Если в том же каталоге, что и HIEW.EXE находится HIEW.INI то начальные
установки  берутся  из  него.  Можно  задавать  положение ini-файла через ключ
командной строки: "/INI="
        Первая строка должна быть: "[HiewIni 5.03]". Пустые строки и строки
комментариев ( начинаются с ';' ) игнорируются.
        Установки из Ini-файла перекрывают значения по умолчанию, если Вас не
устраивает, положим, _только_ полоска слева, можете сделать hiew.ini из двух
строк: заголовка и строки "Bar=...".
        Все возможные установки смотри внутри HIEW.INI
	
▒▒▒▒ SAV-файл ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

        При запуске без параметров Hiew  ищет savefile (HIEW.SAV или  значение
savefile= в INI-файле) и  восстанавливает  записанное  положение  (Ctrl/F10  -
SaveState).  Положение HIEW.SAV можно перекрыить из коммандной строки:

       /SAV=<savefile> - откуда брать 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 [/MACRO0=<macrofile>][/SAV=<savefile>][/INI=<inifile>] [/s]filemask ...[/s][filemask]

      /MACRO0=<macrofile>              - сразу запускать макрос
      /SAV=<savefile>                  - откуда брать savefile
      /INI=<inifile>                   - откуда брать inifile
      [/s] filemask ... [/s][filemask] - можно задавать несколько файлов,
                                         включаю маску с шаблоном.

 Опция /s переключает поиск с подкаталогами:
 hiew /s *.dll *.exe /s *.txt -> будет искать .dll и .exe с подкаталагами и
                                 .txt только в текущем каталоге

▒▒▒▒ Благодарности ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

 Специальные:
        Kaspersky Labs, AVP research team: за то что есть
        Александр Волок: за внимательность
        Александр Орехов: как лучший бета-тестер
        Аркадий Капустинский: за помощь в ELF-файлах
        Владимир Ибатулин: за уйму найденных ошибок
        Ильфак Гильфанов: за помощь в NE-файлах
        Михаил Корнев: за перевод редми на английский
        Роман Потапов: за приобщение к unix
	Joergen Ibsen: за BriefLZ упаковщик

 Бета-тестерам отдельных версий:
        Elias Bachaalany
        Erwann Corvellec
        Константин Жданов
        Михаил Орехов
        Никола Красноярский

 Общие:
        Tadashi Yamakawa
        Руслан Канторович
        Алексей Куленцов
        Андрей Шипинский
        Владимир Калашников
        Кирилл Жосс
        Стас Механошин
        Алексей Подрезов
	Марат Халили
        Keith Byers 

▒▒▒▒ Истоpия  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

 7.00   23/12/04 - нет больше поддержки DOS, OS/2 версий
                 - поддержка файлов и блоков свыше 4Г
                 - клавиатурные макросы
                 - 64битный калькулятор
                 - progress bar для всяких поисков и блочных операций
                 - показ имен импортируемых по ординалу функций при наличиее описания
                   этих ординалов в hiew7.ord теперь и для PE
                 - оверлейные MZ (у которых несколько MZ-заголовков)
		 - подсветка фиксапов для MZ и PE
		 - редактирование таблицы секций в PE (удаление, добавление,...)
		 - теперь все импорты (вкл. Delay import) по Ф8-Ф7 в одной таблице
                 - расширены шаблоны поиска в ассемблере. Теперь они унифицированы с
                   шаблонами FileList (те которые в F9)
                 - просмотр таблиц перекодировки
                 - новые параметры в hiew.ini
                   MacroDelay=
                   MacroStopIfSearchFail=
	           MacroPath=
                   FlistSizeInK=
                   AutoloadOrdinals=
                   IgnoreDiskError=
                   ConfirmExitByEsc=
                   SuppressPrepareError=
                   CursorShapeInvert=
                   ColorFixup=
                   ColorMacroRec=
                   ColorMacroPlay=
 7.01   28/12/04 - FIX: мусор при редактирование PE section name
                   FIX: крэш на некоторых файлах с неверной import table
 7.10   20/02/05 - sav-file теперь пакуется
                 - в калькуляторе: @x - взять значение из файла под курсором
                 - поддержка clipboard (Shift-Insert)
                 - отбор текстовых строк в бинарных файлах
		 - FIX: в таблице импортов 'левое' имя функции по ординалу (2K/XP)
                 - FIX: показывается DLLNAME.ORDINAL вместо DLLNAME.DLL.ORDINAL

▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  Евгений Сусликов <sen@kemtel.ru>  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
