Blog. Just Blog

Исследование демо-версии HiEW

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Скриншот программы HiEW
Скриншот программы HiEW

Если вам приходится заниматься вмешательством в двоичный файл, то есть изменением одного-двух байтов (как правило, 7Fh на EBh) и тому подобным, вы наверняка знаете про HiEW (Hacker's view). В одной из демо-версий HiEW есть такая фраза: "Истинные хакеры конечно же получат недостающие байты анализом и перебором". Конечно, это юмор, г-н Сусликов (аффтар HiEW) вряд ли позволил бы просто так получить работающую полную версию. Ретейловые файлы можно получить только после покупки (неважно, каким образом). Но и с демо-версией HiEW тоже можно работать, естественно, после некоторых дополнений.

Забираем с офсайта дистрибутив последней демо-версии, устанавливаем, смотрим. Главный исполняемый файл ничем не упакован, отправляем его в дизассемблер. Даже странно, неужели демо-версия не упакована?

Триальное окно
Триальное окно

Ищем строку "Limitations of DEMO version" и находим trial-окно. Оно выводится отдельной функцией. Отлично: переходим к первой инструкции этой функции, заменяем ее на RET (возврат) по адресу 004190E0 и сохраняем изменения. Trial-окно исчезает, теперь программа сразу открывает главное окно.

Ограничение на открытие файлов
Ограничение на открытие файлов

Одно из основных ограничений демо-версии HiEW - она не открывает файлы размером более 256 КБ. Сообщение об этом выглядит как "Demo doesn't support files greater than...". Находим эту строку в коде, по ней вызывается только вывод окна с уведомлением об ограничении.
  1. .text:00406530 sub_406530      proc near
  2. .text:00406530                 mov     eax, nNumberOfBytesToRead
  3. .text:00406535                 shr     eax, 0Ah
  4. .text:00406538                 push    eax             ; Args
  5. .text:00406539                 push    offset aDemoDoesnTSupp
  6. ; "Demo doesn't support files greater than"...
  7. .text:0040653E                 call    sub_4061A0
  8. .text:00406543                 add     esp, 8
  9. .text:00406546                 retn
  10. .text:00406546 sub_406530      endp
Следующая функция после вывода сообщения содержит проверку размера файла. Если размер не превышает лимит в 256 Кб, HiEW продолжает загрузку и открывает файл.
  1. .text:00417670 sub_417670      proc near
  2. .text:00417670                 mov     edx, [esp+arg_4]
  3. .text:00417674                 mov     ecx, nNumberOfBytesToRead
  4. .text:0041767A                 xor     eax, eax
  5. .text:0041767C                 cmp     edx, eax
  6. ; Проверить размер файла
  7. .text:0041767E                 jb      short loc_417692
  8. .text:00417680                 ja      short loc_41768A
  9. .text:00417682                 mov     eax, [esp+arg_0]
  10. .text:00417686                 cmp     eax, ecx
  11. .text:00417688                 jbe     short loc_417692
  12. .text:0041768A loc_41768A:
  13. .text:0041768A                 call    sub_406530
  14. .text:0041768F                 xor     eax, eax
  15. .text:00417691                 retn
  16. .text:00417692 ; ------------------------------------------
  17. ; Все работает без ограничений
  18. .text:00417692 loc_417692:
  19. .text:00417692                 mov     eax, 1
  20. .text:00417697                 retn
  21. .text:00417697 sub_417670      endp
На адресе 0041767E заменяем условный переход JB на безусловный JMP. Это отключает проверку размера файла, и программа открывает файлы любого размера. Проверка выполнена на файлах объемом в сотни мегабайт, все работает корректно.

Ограничение подключения устройств
Ограничение подключения устройств

Далее следует ограничение на прямой доступ к устройствам через префикс \\.\ (пространство имен устройств Windows). Например, программа блокирует попытки открыть диск в формате \\.\C: или \\.\PhysicalDrive0.
  1. .text:00406520 sub_406520      proc near
  2. .text:00406520                 push    offset aHiewDemoDoesnT
  3. ; "Hiew Demo doesn't support devices"
  4. .text:00406525                 call    sub_4061A0
  5. .text:0040652A                 pop     ecx
  6. .text:0040652B                 retn
  7. .text:0040652B sub_406520      endp
Смотрим перекрестные ссылки, по ним находим похожие на друг друга функции, а перед ними по одной небольшой функции, которая и отвечает за проверку функци "\\.\"
  1. .text:00423BD0 sub_423BD0      proc near
  2. .text:00423BD0                 mov     ecx, [esp+arg_0]
  3. .text:00423BD4                 xor     eax, eax
  4. : Проверка строки "\\.\"
  5. .text:00423BD6                 cmp     dword ptr [ecx], 5C2E5C5Ch
  6. .text:00423BDC                 setz    al
  7. .text:00423BDF                 retn
  8. .text:00423BDF sub_423BD0      endp
Заменяем инструкцию SETZ AL (три байта) на XOR EAX,EAX (два байта) и дополняем один оставшийся байт инструкцией NOP, чтобы сохранить исходный размер блока в три байта. Сохраняем изменения и проверяем: файл открывается, а диск - нет. Выводится сообщение об ошибке: "Couldn't retrieve file size". Находим этот текст. Переходим по перекрестной ссылке к вызывающему коду и анализируем его.
  1. .text:004175A5                 cmp     ecx, 0FFFFFFFFh
  2. .text:004175A8                 mov     dword_685F44, edx
  3. ; Проверка и условный переход
  4. .text:004175AE                 jnz     short loc_4175CF
  5. .text:004175B0                 mov     edx, off_43A510
  6. .text:004175B6                 push    edx             ; Format
  7. .text:004175B7                 call    sub_4061A0
  8. .text:004175BC                 add     esp, 4
  9. .text:004175BF                 call    sub_4047D0
  10. .text:004175C4 ; --------------------------------------
  11. .text:004175C4                 mov     edx, dword_685F44
  12. .text:004175CA                 mov     eax, dword_685F40
  13. .text:004175CF loc_4175CF:
  14. .text:004175CF                 push    edx
  15. .text:004175D0                 push    eax
  16. .text:004175D1                 call    sub_417670
  17. ...
Заменяем условный переход на JMP. Сохраняем изменения и проверяем, теперь можно открыть устройство, например, просмотреть содержимое логического диска \\.\C: или физического диска \\.\PhysicalDrive0.

Ограничение по формату файлов
Ограничение по формату файлов

Следующее ограничение: "Hiew Demo doesn't support NE/LX/LE/NLM/ELF/PE64 files" - демо-версия не поддерживает различные форматы исполняемых файлов: NE, LX, LE, NLM, ELF и PE64. Соответственно, отсутствует также поддержка дизассемблирования 64-битных PE-файлов.
  1. .text:00406510 sub_406510      proc near
  2. .text:00406510                 push    offset aHiewDemoDoes_0
  3. ; "Hiew Demo doesn't support NE/LX/LE/NLM/"...
  4. .text:00406515                 call    sub_4061A0
  5. .text:0040651A                 pop     ecx
  6. .text:0040651B                 retn
  7. .text:0040651B sub_406510      endp
Вот это да, тут ничего не поделать. Как и с другими функциями, после которых появляется строка "Available in registered version only". Значительная часть кода действительно не просто отключена проверкой, а физически отсутствует в исполняемом файле. Придется использовать другие инструменты. С хирургией закончили.

Ограничение на название файлов
Ограничение на название файлов

Также в демо-версии HiEW существует проблема с открытием файлов, содержащих Юникод в названии - HiEW выдает ошибку. Вообще, работа с именами файлов реализована криво даже в полной версии, и лишь в последнем обновлении появилось подобие поддержки Юникода. Решение - использовать HiEW Loader. Он позволяет открыть любой файл и корректно отображает его имя в заголовке консольного окна.

Скриншот программы HiEW
Скриншот программы HiEW

После всех выполненных изменений демо-версия HiEW превращается в простенький, но рабочий инструмент. Да, не шедевр, конечно, но для просмотра и анализа файлов уже вполне пригодна. При внезапной невозможности (ха-ха) получить полную версию HiEW можно воспользоваться запатченной демо-версией. Цель достигнута.

Скриншот программы QView
Скриншот программы QView

В качестве подарка - пасхалка от QView (Shift+F1). Очень жаль, что QView больше не развивается, по функционалу из него гарантированно получился бы "убийца" HiEW. Но... "впрочем, это уже совсем другая история".

Поделиться ссылкой ВКонтакте
Просмотров: 673 | Комментариев: 6

Комментарии

Отзывы посетителей сайта о статье
0101 (03.03.2026 в 12:17):
Konst, версия 8.80 лежит бесплатно, вылеченная и без протектора, как и более ранние версии. Что там в новых версиях такого важного и нужного, чтобы демку юзать? Всегда можно купить последнюю версию за 1300 и (опционально) выложить для всех. По нынешним ценам пару часов потраченного времени на реверс демки стоят дороже, чем полная версия)
Konst (28.02.2026 в 10:05):
> Если вам приходится заниматься вмешательством в двоичный файл, то есть изменением одного-двух байтов...

Что-то я не увидел информацию про снятие основного ограничения, указанного в списке "Limitations of DEMO..." - ограничения "no edit"

Похоже этот функционал относится к
> тут ничего не поделать. Как и с другими функциями, после которых появляется строка "Available in registered version only".

Если так, то hiew превращается просто в viewer кода :(
В этой версии, как я понял, невозможно изменить даже байта...
user (22.02.2026 в 20:37):
;;Итого:

Hiew32demo  rev.P (11/04/2025)

Open files larger 256kb size
hiew32demo.exe
.0041767E: 72 EB ;00016A7E:

Can open devices \\.\ - fix1 (but can't retrieve size)
hiew32demo.exe
.00423BDC: 0F 30 ;00022FDC:
.00423BDD: 94 C0 ;00022FDD:
.00423BDE: C0 90 ;00022FDE:

Can open devices \\.\ - fix2 (Ok)
hiew32demo.exe
.004175AE: 75 EB ;000169AE:

Skip starting DEMO nag
hiew32demo.exe
.00419103: 85 31 ;00018503:
Dagal (11.02.2026 в 20:54):
Note to illegal users: you are using various 'cracked' HIEW versions at your own risk.))))))
ManHunter (11.02.2026 в 10:40):
Цитатапасхалка не открывается

Да разговор не совсем про QView, его и так без проблем можно найти. Вот, например: https://www.enlight.ru/qview/download.htm
DeWalt (11.02.2026 в 09:04):
Очень вкусная статья! Спасибо за то что делитесь с нами такими вещами , это дорогого стоит !
PS пасхалка не открывается ...bad gateway

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2026
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.003 сек.) / Память: 4.5 Mb
Наверх