воскресенье, 30 марта 2025 г.

Расшифровать за 100 секунд

Молодые пользователи спрашивают авторские примеры использования hiew.
Что ж, их есть у меня и сегодня будет пример использования Crypt = встроенной возможности hiew для (де)шифрования. 

Сейчас сам удивился, но до сих пор ничего про Crypt не писал. 
Crypt  впервые появился в ноябре 1993 года в версии 4.20 и был 16-битным. А когда в версии 6.00 был удален, столько недовольства и возмущений от пользователей не было ни до ни после. И в 6.01 вернулся.


Напримером будет HiEW Loader 1.1 (кто не знает - легко найдет)
В архиве он тоже называется hiew32.exe, других букв уже не осталось. Что ж, переименуем в loader.exe

Начинаем стандартно:

Hiew32.exe loader.exe
enter enter ;переход в режим кода
F8               ;просмотр заголовка PE

на широких экранах сразу видно что в последней строке кнопка F11 Tls активна,
(если в этом месте встретилось незнакомое слово из трех букв, самое время пойти почитать про Tls callback),  а значит есть еще исполняемый код до передачи управления в точку входа,

но для начала
F5         ;переход на точку входа
и видим мусор вместо кода.
(не знаю зачем все это пошифровано, да еще и через Tls, да еще и с проверкой "чтоб только раз наверняка", впрочем, и в самом коде загрузчика много таких "зачем?", но сейчас не об этом)

возвращаемся в заголовок PE
F8          ;просмотр заголовка PE
и смотрим чего там в Tls callback
F11         ;переход на этот самый Tls callback

разумеется, рассшифровка кода на точке входа


в регистрах esi/edi начало зашифрованного блока = точки входа
в ecx длина зашифрованного блока = 3c9

сам алгоритм шифрования - простой xor по одному байту и простой модификацией маски шифрования на каждом шаге и один-в-один переносится в хьюшный Crypt

вернемся на точку входа
3            ;переход на начало блока расшифровки
enter     ;возвращаем режим кода
F3         ;режим редактирования (в hiew всегда редактировался только один экран за раз)
F7         ;вызов Crypt

и переписываем сюда код расшифровки

 

расшифровка идет по одному байту, поэтому размер стоит Byte (при необходимости меняется через F2. А F3 меняет направление Forward/Backward)
последняя команда loop 2 завершает цикл, возвращаясь ко второй строке, в первой была инициализация

F7        ;вышли из режима редактирования

и чтобы проверить
F7       ; расшифровываем по одному байту за раз
(да-да, и зашли через F7 и вышли через F7 и расшифровка через F7)

F7 F7 .... F7 F7
и мусор шаг за шагом на глазах превращается в корректый код



ESC            ;отменяем все изменения, расшифруем все за раз
enter enter ;в режим дампа, там проще блок отмечать
*                  ;отмечаем начало блока
F5 +3с8      ;добавляем к текущему адресу размер зашифрованного блока,
                   ;поскольку один байт уже отмечен будет на единицу меньше



enter  ;переход на конец блока
*         ;отмечаем конец блока



Alt-F3    ;Crypt для выделенного блока
было немного тренировки, crypt ip (отмечен стрелочкой) стал после полного цикла на строку 2, вернем на инициализацию:
       ;crypt ip на строку назад
F5     ;и чтоб красиво, очистить все регистры заодно
F7     ;расшифровать блок



по проявившимуся тексту сразу видно, что все рашифровалось корректно

[          ;переход на начало блока
*         ;убрать пометку блока
enter  ;режим кода

и вот он, оригинальный код на точке входа



Tls не нужен, убираем

F8 F10   ;просмотр PE Directory
курсором вниз до TLS и
F7       ;очистить



Теперь имеем загрузчик без всяких шифрований и ненужных Tls.

Собственно процесс рашифровки занял буквально пару минут, чего не скажешь про описание этого процесса в картинках.

Подробности о Crypt см. в документации.

суббота, 21 декабря 2024 г.

Больше хэшей - быстрых и разных

 Fernando Mercês обновил свой Hashes.hem до версии 2.00,

а FSC выдал Hash Calculator с вычислением

MD2, MD4, MD5, SHA1, SHA256, SHA384, SHA512, CRC-32/MPEG-2, parametrized CRC ("Rocksoft^tm Model CRC Algorithm")

вторник, 1 октября 2024 г.

версия 8.83

 - fix(8.82): вставка из буфера обмена для F5 .xxxx считалась невалидной
 - fix: кривой дамп для двухбайтовых кодовых страниц
 - калькулятор: #[bwdq] как big-endian

 смотрите в ящиках и спамах

вторник, 30 июля 2024 г.

Hiewix или StructLook 30 лет спустя

Hiewix как и StructLook в досовские времена помогает показать внутренности файла.
В StructLook был свой табличный язык для описания, в Hiewix - внешнее api.
На картинке - PE через это api.

Это начало с простыми целыми типами.
Как обычно, богатое развитие зависит от богатого финансирования.

Демо без ключевых возможностей: https://hiew.ru/files/HxDemo.zip 

Предложение до 1 октября этого года:
 для покупавших StructLook - бесплатно
 для имеющих как минимум вторичную действующую годовую регистрацию Hiew - 3000 рублей
 для владельцев действующей первичной годовой регистрации - 4000 рублей
 остальные - 5000 рублей

купившие в августе этого года получат обновления в течение 16 месяцев,
купившие в сентябре этого года - в течение 15 месяцев,
но если вдруг кто-то сильно быстро решится в оставшиеся 2 дня июля - 18 месяцев.

Вопросы и получение реквизитов карты - eugenys@gmail.com с темой Hiewix

mailto:eugenys@gmail.com?subject=Hiewix 


пятница, 19 июля 2024 г.

версия 8.82

- префикс 0x игнорируется при вставке из клипбоарда при редактировании чисел
- fix: шаблон поиска в ассемблерной строке может пропускать строки с комментариями

смотрите ящики и спамы

среда, 13 марта 2024 г.

версия 8.81

 - tabSize в inifile
 - fix: длинная строка в hem info давала некрасивый эффект
 - fix: поиск '*xxxx' сломался в какой-то предыдущей версии
 - минимальный HEM_FLAG_FILEMASK (since HEM SDK 0.50) как флаг для всех exe
 - Shift-Ctrl-Alt: шкала с 1

смотрите почтовые ящики

суббота, 5 августа 2023 г.

CopyAs и Hashes - два полезных HEM

 Fernando Mercês сделал два полезных модуля:

CopyAs - запись отмеченного блока в различном формате  

Hashes - вычисление хешей MD5, SHA-1, SHA-256 для блока либо всего файла

понедельник, 24 июля 2023 г.

версия 8.79

- Alt-S - копировать 16 (48 для Shift+) байтов в поиск
- Shift-Up/Shift-Down в Hex-mode - сдвинуть отмеченный блок назад/вперед

рассылка завершена.

четверг, 26 января 2023 г.

версия 8.78

- FIX: опять работает под Win9x :)
- FIX: креш если нажать fastkey на пустом списке файлов

рассылка завершена.

понедельник, 18 апреля 2022 г.

версия 8.76

- FIX: падал на редком случае с export name
- FIX: копирование теущего смещения (кнопка $) в буфер обмена без первого пробела
- F7-F10 - переход на адрес последнего незаконченного поиска который был прерван по кнопке ESC

 рассылка завершена.

суббота, 25 декабря 2021 г.

версия 8.75

 - FIX древний баг: неверное ассемблирование по умолчанию для 'push/pop fs/gs'
 - FIX PE: потерянные имена импорта для некоторых PE
 - PE: Exception Handlers table (F8-AltF4)

 рассылка завершена.

суббота, 31 июля 2021 г.

версия 8.74

- FIX: ESC не отрабатывал корректно для refers
- использование аргументов командной строки для файлов из списка командной строки
- переключение использования аргументов командной строки (AltF9) в filelist (F9)
- GoCurs: 32bits data для любых типов файла
- FIX(NE): экспортное имя как метка отображалась с мусорным последним символом
 
 рассылка завершена.