Дзенский реверсинг: исследование программ в полевых условиях

Дата публикации 29 авг 2006

Дзенский реверсинг: исследование программ в полевых условиях — Архив WASM.RU

Как часто бывают ситуации, когда под рукой кроме HEX редактора/дизассемблера hiew ничего нет, а требуется срочно разблокировать какие-либо опции в программе или отвязать от железа? Причем обычно требуется срочно, на работе, когда горе-программист поставит защиту-привязку к компу, а нужно срочно перенести АРМ (автоматизированное рабочее место, не путать с ARM) с одного компьютера на другой. Конечно, можно пригласить автора АРМ'а и попросить его, но обычно на это банально нет времени и желания. В итоге приходится довольствоваться тем, что есть по рукой - обычно это только HIEW :smile3:

Введение

Все мы привыкли использовать довольно массивный комплект из различных утилит для исследования. Это и отладчики SoftICE и OllyDbg, дизассемблер IDA Pro, файловый анализатор PEiD и редактор PE Tools. Плюс еще целая гора специализированного и нужного софта для крэкинга. Но нужно ли реально столько инструментов? Для большинства несложных задач по взлому можно вполне обойтись HEX редактором и дизассемблером, причем не самым идеальным. Все дело в том, что многие вещи можно сделать и самому, не прибегая к мощности утилит. Здесь я расскажу, как исследовать софт только с помощью HIEW. Этот дизассемблер я выбрал не случайно - его всегда легко найти в локалке в любом крупном предприятии, хоть и старую версию, и он в своем составе имеет хороший HEX редактор, потому и пользуется спросом. Итак ты сидишь на работе, кроме компа и локалки под руками у тебя ничего нет и перед тобой стоит задача банально запустить неработающий софт на своем (или любом) компьютере. Давай рассмотрим, как выполнять различные повседневные реверсерские операции в этом замечательном дизасме.

Сам себе PE Sniffer

Главным для реверсера всегда являлось локализовать компилятор/упаковщик, дабы знать, с чем он имеет дело и какой подход ему использовать. Не спорю, что найдя упаковщик нам как минимум потребуется его снять, и тут уже без автораспаковщика не обойтись. Но обычно в узкоспециализированном софте, который писался по заказу для предприятия не используют никакие упаковщики, так как клиент один и он всегда платит, а потому программист делает защиту только для того, чтобы клиент ее никому потом не перепродал и чтобы его услуги были востребованы и потом. Конечно идея хорошая, но порой самому клиенту приходится апгрейдить комп и тут приходится думать. Локализация компилятора будет не менее полезна, так как к примеру для Delphi и VB потребуются разные знания и подготовка :smile3: Открываем программу в hiew и смотрим на гору ASCII символов. Что-нибудь понятно?


При запуске экран hiew ничуть не отличается от экрана FAR'а в режиме просмотра файла.

Нажимаем дважды Enter и смотрим на более понятный дизассемблированный код. Дабы он стал еще понятнее - нажмем F8 и F5 - hiew перейдет на тот участок кода, который прописан в оригинальной точке входа. Внимательно взглянув на этот код уже можно понять на чем он написан. К примеру для Delphi программ код будет подобен этому:

Код (Text):
  1.  
  2. .0046D380: 55               push        ebp
  3. .0046D381: 8BEC             mov     ebp,esp
  4. .0046D383: 83C4F0           add     esp,-010 ;"?"
  5. .0046D386: B8A0D14600           mov     eax,00046D1A0       -----? (1)
  6. .0046D38B: E8DC94F9FF           call        .00040686C      -----? (2)
  7. .0046D390: A1E8F84600           mov     eax,[0046F8E8]
  8. .0046D395: 8B00             mov     eax,[eax]
  9. .0046D397: E8A4E6FCFF           call        .00043BA40      -----? (3)
  10. .0046D39C: E8B3EAFFFF           call        .00046BE54      -----? (4)
  11. .0046D3A1: 8B0D28F94600         mov     ecx,[0046F928]
  12. .0046D3A7: A1E8F84600           mov     eax,[0046F8E8]
  13. .0046D3AC: 8B00             mov     eax,[eax]
  14. .0046D3AE: 8B15F0B84600         mov     edx,[0046B8F0]
  15. .0046D3B4: E89FE6FCFF           call        .00043BA58      -----? (5)
  16. .0046D3B9: A1E8F84600           mov     eax,[0046F8E8]
  17. .0046D3BE: 8B00             mov     eax,[eax]
  18. .0046D3C0: 8B4044           mov     eax,[eax][44]
  19. .0046D3C3: E834FBFFFF           call        .00046CEFC      -----? (6)
  20. .0046D3C8: A1E8F84600           mov     eax,[0046F8E8]

Не узнать его нельзя... просто несколько Call вызовов, стандартных в Delphi программах. Если опять перейти в текстовый режим и нажать и подержать PgUp в самом верху увидим названия секций. Вот примерный расклад для нетронутых защитой Delphi программ:

  • CODE
  • DATA
  • BSS
  • idata
  • tls
  • rdata
  • .reloc
  • .rsrc

Итак с дельфями определились, теперь поговорим про C++ Builder. Тут вообще все проще. На оригинальной точке входа всегда такой код:

Код (Text):
  1.  
  2. .00401000: EB10     jmps        .000401012
  3. .00401002: 66623A   bound       di,[edx]
  4. .00401005: 43       inc     ebx
  5. .00401006: 2B2B     sub     ebp,[ebx]
  6. .00401008: 48       dec     eax
  7. .00401009: 4F       dec     edi
  8. .0040100A: 4F       dec     edi
  9. .0040100B: 4B       dec     ebx
  10. .0040100C: 90       nop
  11. .0040100D: E978D54900   jmp     0206321AA
  12. .00401012: A16BD54900   mov     eax,[0049D56B]

Байты расположенные между jmp'ом и mov'ом: "C++HOOK". Тоже все просто :smile3: Что же насчет бейсика? А у него всегда 2 команды на EP:

Код (Text):
  1.  
  2. .004011CC: 68EC164000       push        0004016EC       -----? (1)
  3. .004011D1: E8EEFFFFFF       call        MSVBVM60.100

По адресу 0004016EC всегда VBHeader, начинающийся с сигнатуры "VB5!".


Начало структуры, описывающей любую VB программу

Как видно из предыдущих нескольких примеров - не так уж и требуется PEiD для определения компилятора. А что же про упаковщики? А здесь можно даже не смотреть на точку входа :smile3: Достаточно в текстовом виде поглядеть на EXE заголовок. UPX после упаковки в начало первой секции помещает свою структуру, начинающуюся с сигнатуры "UPX!", а секции обзывает ".UPX0", ".UPX1", ".rsrc", причем секций три вне зависимости от того сколько их было до упаковки.

Если же взглянуть на точку входа, то код откроется довольно стандартный для всех версий UPX'а:

Код (Text):
  1.  
  2. .00417180: 60       pushad
  3. .00417181: BE00E04000   mov     esi,00040E000       -----? (1)
  4. .00417186: 8DBE0030FFFF lea     edi,[esi][-0000D000]
  5. .0041718C: 57       push        edi
  6. .0041718D: 83CDFF   or      ebp,-001 ;"?"
  7. .00417190: EB10     jmps        .0004171A2      -----? (2)
  8. .00417192: 90       nop
  9. .00417193: 90       nop
  10. .00417194: 90       nop
  11. .00417195: 90       nop
  12. .00417196: 90       nop
  13. .00417197: 90       nop
  14. .00417198: 8A06     mov     al,[esi]
  15. .0041719A: 46       inc     esi
  16. .0041719B: 8807     mov     [edi],al

Подробнее о самом алгоритме распаковки и восстановлении импорта можно прочитать в статье "Об упаковщиках в последний раз", которая лежит на данном сайте. Я же продолжу рассказ о детекте других упаковщиков. Следующим по распространенности является FSG и с недавних пор Upack. Их узнать очень легко, даже взглянув на текстовое представление EXE заголовка - он крайне оптимизирован, и обычно там нет стольких нулевых байт мусора и заполнения, сколько оставляют другие пакеры. А Upack даже запихивает импорт прямо в DOS Header после MZ :smile3:


UPack жмет программу так, что от заголовка остается только MZ, после которого идет импорт. Жаль, антивирусы не разделяют эту идею оптимизации.

Все просто, только hiew :smile3: Кстати, еще есть методика легко отличать MS компиляторы от борландовых по присутствию "Rich" строки после DOS Header'а. Хотя об патче MS линкера не раз говорилось на данном сайте - попрежнему большинство использует непропатченный вариант даже и не подозревая о том, что же линкер вставляет в EXE файл.

В общем, если держать в голове все эти методики плюс иметь неслабый опыт - можно определить любой компилятор или пакер в hiew'е, это приходит со временем, потому начинай сейчас!

Стринг референсы

Лучшим помощником крэкера являются стринг референсы - перечень всех строковых данных, встречающихся в программе и адресов, где происходит обращение к этим строкам. Так вот в hiew'е это тоже есть! Достаточно в HEX режиме поставить курсор на начало любой строки и нажать F6 - сразу перейдем на первое обращение к этой строке! Вкупе с возможностью искать русские строки - хиев просто рулез. Жмем F7, пишем "Программа не зарегистрирована" и жмем Enter. Если нужно искать все места, где встречается строка, жмем Shift + F7 - хиев найдет следующий адрес где имеется строчка. Так как же он находит русские строки? Ведь они могут быть и в DOS, и в windows кодировке - все просто, нужные знания даем ему мы сами. Перед поиском необходимо в текстовом режиме нажать F8 и выбрать кодировку, именно используя ее хиев и будет искать строку. Универсальности конечно не получится, но это куда проще, чем любоваться только на английские строки в Olly :smile3:

Серфинг по EXE

Порой, когда смотришь дизассемблерные листинги, так и хочется перейти по адресу, на который указывает jmp, call или даже mov. Хиев и тут не подведет - каждому адресу на экране присваивается уникальная цифра, нажав которую на клавиатуре - мы перейдем куда надо, вот пример:

Код (Text):
  1.  
  2. .00417180: 60       pushad
  3. .00417181: BE00E04000   mov     esi,00040E000       -----? (1)
  4. .00417186: 8DBE0030FFFF lea     edi,[esi][-0000D000]
  5. .0041718C: 57       push        edi
  6. .0041718D: 83CDFF   or      ebp,-001 ;"?"
  7. .00417190: EB10     jmps        .0004171A2      -----? (2)

(1) и (2) - это как раз эти самые цифры :smile3: Дабы перейти по указанным адресам просто жмем на клавиатуре эти самые цифры (или буквы, если переходов больше 9). Вообще, цифровость задается в hiew7.ini, и ты можешь сделать, чтобы вместо цифер были хоть китайские иероглифы :smile3: Теперь остановимся на перемещениям по EXE вручную. F5 позволяет перейти на указанный адрес, причем, если мы просто введем адрес, то перейдем по Offset'у, а если перед адресом поставить точку - то хиев перейдет по виртуальному адресу. Очень удобно, причем даже в коде эти адреса можно переключать нажимая Alt + F1. Перейти к началу нужной секции также просто - зайдя в PE заголовок нажав F8, нажмем кнопку F6 и выбрав нужную секцию из списка перейдем в ее начальный адрес. А что, если нужно перейти в начало таблицы импорта или TLS? Искать их самим? Зачем? F8, затем F10 - и перейдем к таблице полей NTHeader'а. В нем просто выбирай нужное поле и нажимай Enter - переместишься мгновенно :smile3: Вот так вот старый добрый хиев помогает в нашем нелегком деле.

Ассемблируем

Исследовать мало - нужно править код, причем не все помнят машинные коды и не все могут ориентироваться в составлении mod/rm флагов и не все могут кодировать регистры в уме, потому править просто в HEX редакторе немного неудобный метод (хотя я, написав весь движок DotFix NiceProtect'а чисто в hiew (кроме исполнителя VM конечно), уже привык кодировать в уме, но эт так к слову). Хиев не оставит в беде, он представляет мощный ассемблер. Нажми F3, дабы править код, а затем дрожащим пальцем ткни в Tab - и о чудо! - в появившейся текстовой строке можно писать команды прямо на ассемблере, причем нажав Enter можно набирать уже следующую команду и так хоть весь код.


Пишем программу как настоящие ассемблерщики, безо всяких сред программирования.

Как видишь - не все так сложно, как казалось, когда ты начинал читать эту статью :smile3: Если ты чего неверно понаписал - помни, практически любой введенный код можно отменить нажимая F3. Когда уже написал что надо - жми F9 для записи в файл. Вот незадача, после записи файл не запускается - приходится выходить из hiew, чтобы снять залоченность. Но и это обходится. Открываем hiew7.ini, ищем строку "ReopenAfterEdit" и ставим ее в "On". Теперь после редактирования файл будет закрываться и снова открываться для чтения, поэтому его можно будет запустить после каждой правки :smile3: Спросил я у Евгения, зачем он так не сделал в дефолтных настройках и меня настолько порадовал его ответ - "чтобы люди читали хелп" :smile3: Так что читай хелп и комментарии ко всем строкам hiew7.ini - столько нового узнаешь.

Декриптуем XOR

С некоторых пор повелось, что каждый кодер, разобравшийся с PE форматом пишет свой криптор. Как не странно, явление сие постоянно процветает и появляется все больше новых крипторов, способных пошифровать EXE и якобы защитить его от взлома. Такие поделки используют в основном XOR для шифрации файла, который обратим, достаточно узнать пароль и пошифровать им уже шифрованный кусок кода, чтобы его расшифровать. Порой, анализируя прогу, можно узнать каким ключом дешифруется тот или иной блок. Но как же расшифровывать? В уме? Всю секцию кода? Не смешите, скажешь ты и пойдешь писать по-быстрому прогу на сях для решения данной задачи. Но зачем, если это все есть в хекс редакторе hiew? Хиев поистине рульная вещь - в ней есть и ксорилка. Достаточно в режиме редактирования нажить Ctrl + F8 и задать ключ, после чего просто нажимать F8 ксоря блок за блоком. Зажал F8 и держишь пока все не раскриптовалось! Теперь остается только запустить hiew и расксорить все, что надо.

Шифруем по формуле

Как бы не силен был XOR, он не всегда подходит для шифровки/дешифровки. Но грустить смысла нет, так как hiew позволяет задавать алгоритм шифровки самому. Для этого нажми F3, чтобы перейти в режим редактирования а затем F7. Отроется диалог набора кода. Забиваем туда алгоритм криптовки и затем юзаем. Как писать криптоалгоритм объяснено в справке - я не буду ее переписывать в статье, так как ее ты можешь прочитать и так, скажу лишь что ничего сложного там нет - разобраться можно.

Реальный пример


Несложный кейгенми, который нам предстоит изучить.

Все вышеописанное будет иметь смысл только, если это применить на реальном примере, а именно, нам необходимо что-нибудь взломать. Ломать будем, используя только HIEW. А для большей простоты и наглядности возьмем KeygenMe by Fabsys. Стянуть его можно с crackmes.de. Начнем исследовать. Открываем keygen.exe в hiew. Что мы видим?

Код (Text):
  1.  
  2. .0040820C: 55       push        ebp
  3. .0040820D: 8BEC     mov     ebp,esp
  4. .0040820F: 83C4F0   add     esp,0FFFFFFF0 ;'?'
  5. .00408212: B8C4814000   mov     eax,0004081C4 --?1
  6. .00408217: E8F0C2FFFF   call        .00040450C --?2
  7. .0040821C: 6A40     push        000000040 ;'@'
  8. .0040821E: 684C824000   push        00040824C ;'Rules'
  9. .00408223: 6854824000   push        000408254 ;'KeygenMe and de
  10. .00408228: 6A00     push        0
  11. .0040822A: E841C4FFFF   call        MessageBoxA ;user32 --?5
  12. .0040822F: 68047F4000   push        000407F04 --?6

По адресу 40822A красуется вызов нагскрина :smile3: самое лучшее его пропатчить. Для этого устанавливаем курсор на 40821C и жмем F3, чтобы перейти в режим правки, затем Tab для вызова окна ассемблера. В нем пишем "jmps .40822F" (без кавычек). Команда jmps в отличии от jmp сгенерит short jmp, который занимает всего 2 байта. Точка перед адресом ставится, потому что это VA, а не Offset. Запустим для проверки. Ура! нага как небывало. Теперь разберемся с проверкой пароля. Для этого я ввел имя "GPcH", а пароль "12345". При нажатии на кнопку "Generate" видим сообщение: "BaD BoY". Переходим обратно в hiew. В режиме дизассемблера жмем F8, затем F6 для вывода секций и выбираем первую секцию. Как только перейдем в ее начало - начнем поиск, для этого жми F7 и вводи "BaD BoY". Как только найдется жми F6, чтобы hiew перешел по адресу, откуда идет обращение к этой строке. Видим:

Код (Text):
  1.  
  2. .00408067: 6848814000   push        000408148 ;'Prolixe KeygenM
  3. .0040806C: 53       push        ebx
  4. .0040806D: E81EC6FFFF   call        SetWindowTextA ;user32 --?2
  5. .00408072: 6A00     push        0
  6. .00408074: 6874814000   push        000408174 ;'Winner'
  7. .00408079: 687C814000   push        00040817C ;'GooD BoY'
  8. .0040807E: 53       push        ebx
  9. .0040807F: E8ECC5FFFF   call        MessageBoxA ;user32 --?5
  10. .00408084: EB20     jmps        .0004080A6 --?6
  11. .00408086: 6A00     push        0
  12. .00408088: 6888814000   push        000408188 ;'Wrong Way'
  13. .0040808D: 6894814000   push        000408194 ;'BaD BoY'
  14. .00408092: 53       push        ebx
  15. .00408093: E8D8C5FFFF   call        MessageBoxA ;user32 --?5
  16. .00408098: EB0C     jmps        .0004080A6 --?6

Теперь логично узнать, откуда идет обращение к 408086 адресу, ведь чуть выше его вывод информации о том что пароль правильный, следовательно где-то есть переходи либо на вывод инфы о верном пароле, либо о неверном. Ставим курсор на адрес 408086 и жмем F6. Хиев почти мгновенно, как по велению волшебной палочки перенесет нас на строку, где идет обращение к адресу 408086:

Код (Text):
  1.  
  2. .0040801E: E819B8FFFF       call        .00040383C --?1
  3. .00408023: 8B85F8FDFFFF     mov     eax,[ebp][-00000208]
  4. .00408029: 8D55FC       lea     edx,[ebp][-04]
  5. .0040802C: E8E3FDFFFF       call        .000407E14 --?2
  6. .00408031: 8D85F4FDFFFF     lea     eax,[ebp][-0000020C]
  7. .00408037: 8D95FCFDFFFF     lea     edx,[ebp][-00000204]
  8. .0040803D: B900010000       mov     ecx,000000100 ;'        ? '
  9. .00408042: E8F5B7FFFF       call        .00040383C --?1
  10. .00408047: 8B95F4FDFFFF     mov     edx,[ebp][-0000020C]
  11. .0040804D: 8B45FC       mov     eax,[ebp][-04]
  12. .00408050: E8EBB8FFFF       call        .000403940 --?3
  13. .00408055: 752F         jne     .000408086 --?4 - мы здесь
  14. .00408057: 6834814000       push        000408134 ;'Registred Versi
  15. .0040805C: 68F1030000       push        0000003F1 ;'        ??'
  16. .00408061: 53           push        ebx
  17. .00408062: E811C6FFFF       call        SetDlgItemTextA ;user32 --?

Попробуем исправить переход jne на je по адресу 408055. Запустим кейгенми и введем любой пароль - программа будет зарегистрирована. HIEW просто рулез! Но не забывай - наша цель получить рабочий ключ! Сразу огорчу - хиев не слишком мощен, чтобы в нем реверсить алгоритм и писать кейген. Для того, чтобы сделать полноценный кейген нам потребуется отлаживать программу. Но нужно ли это? Может просто попытаться получить серийник на наше имя? Давай-ка попробуем! Потому поизучаем код, что идет перед jne. А на пару экранов выше идет:

Код (Text):
  1.  
  2. .00407FCD: 80BDFCFDFFFF00   cmp     b,[ebp][-00000204],0
  3. .00407FD4: 7517         jne     .000407FED --?1
  4. .00407FD6: 6A40         push        000000040 ;'@'
  5. .00407FD8: 680C814000       push        00040810C ;'Error'
  6. .00407FDD: 6814814000       push        000408114 ;'Enter a Serial'
  7. .00407FE2: 53           push        ebx
  8. .00407FE3: E888C6FFFF       call        MessageBoxA ;user32 --?4
  9. .00407FE8: E9B9000000       jmp     .0004080A6 --?5
  10. .00407FED: 80BDFCFEFFFF00   cmp     b,[ebp][-00000104],0
  11. .00407FF4: 7517         jne     .00040800D --?6
  12. .00407FF6: 6A40         push        000000040 ;'@'
  13. .00407FF8: 680C814000       push        00040810C ;'Error'
  14. .00407FFD: 6824814000       push        000408124 ;'Enter a Name'
  15. .00408002: 53           push        ebx
  16. .00408003: E868C6FFFF       call        MessageBoxA ;user32 --?4

Сравниваем [ebp][-00000204] с нулем и если равно выводим, что неверный серийник. Логично предположить, что по адресу [ebp-204] лежит серийник. Смотрим ниже. Сравнивается с нулем уже [ebp-204] и выводится сообщение что неверное имя пользователя. Теперь ясно, что имя в [ebp-204]. Смотрим далее:

Код (Text):
  1.  
  2. .0040800D: 8D85F8FDFFFF     lea     eax,[ebp][-00000208]
  3. .00408013: 8D95FCFEFFFF     lea     edx,[ebp][-00000104]
  4. .00408019: B900010000       mov     ecx,000000100 ;'        ? '
  5. .0040801E: E819B8FFFF       call        .00040383C --?2
  6. .00408023: 8B85F8FDFFFF     mov     eax,[ebp][-00000208]
  7. .00408029: 8D55FC       lea     edx,[ebp][-04]
  8. .0040802C: E8E3FDFFFF       call        .000407E14 --?3
  9. .00408031: 8D85F4FDFFFF     lea     eax,[ebp][-0000020C]
  10. .00408037: 8D95FCFDFFFF     lea     edx,[ebp][-00000204]
  11. .0040803D: B900010000       mov     ecx,000000100 ;'        ? '
  12. .00408042: E8F5B7FFFF       call        .00040383C --?2
  13. .00408047: 8B95F4FDFFFF     mov     edx,[ebp][-0000020C]
  14. .0040804D: 8B45FC       mov     eax,[ebp][-04]
  15. .00408050: E8EBB8FFFF       call        .000403940 --?4
  16. .00408055: 752F         jne     .000408086 --?5

Ясно, что без дебаггера нам не понять, какой Call выполняет какую функцию, но давай ка взглянем на каждый из них. Первый, похоже, просто переносит имя юзера в другую переменную. А вот второй криптует ее. Пролистаем код по адресу 407E14 и, о чудо:

Код (Text):
  1.  
  2. .00407E99: 68EC7E4000       push        000407EEC ;'HZF-'
  3. .00407E9E: FF75F4       push        d,[ebp][-0C]
  4. .00407EA1: 68FC7E4000       push        000407EFC ;'-GFD'

Без дебаггера понять этот код можно только логически. Как мне кажется, пароль может складываться как: 'HZF-' + [ebp][-0C] + '-GFD'. Из листингов выше мы знаем адрес MessageBoxA в IAT. Так давай вызовем мессагу и в параметрах укажем [ebp][-0C]. Прямо после

Код (Text):
  1.  
  2. push        000407EFC ;'-GFD'

жми F3 и набирай. У меня получилось следующее:

Код (Text):
  1.  
  2. .00407E99: 68EC7E4000   push        000407EEC ;'HZF-'
  3. .00407E9E: FF75F4   push        d,[ebp][-0C]
  4. .00407EA1: 68FC7E4000   push        000407EFC ;'-GFD'
  5. .00407EA6: 8B45F4   mov     eax,[ebp][-0C]
  6. .00407EA9: 6A00     push        0
  7. .00407EAB: 50       push        eax
  8. .00407EAC: 50       push        eax
  9. .00407EAD: 6A00     push        0
  10. .00407EAF: E8BCC7FFFF   call        MessageBoxA ;user32 --?6
  11. .00407EB4: 90       nop
  12. .00407EB5: 5A       pop     edx
  13. .00407EB6: 59       pop     ecx
  14. .00407EB7: 59       pop     ecx
  15. .00407EB8: 648910   mov     fs:[eax],edx

Теперь при вводе неверного серийника выводится середина верного. Добавим к ней слева 'HZF-' и справа '-GFD' и получим верный код. Только автор не позаботился о том, чтобы код всегда имел печатаемые символы, потому не на каждое имя будет ключ из нормальных печатаемых символов. но это уже не наши проблемы - цель получения пароля достигнута.

Перспективы развития hiew

В заключении статьи я решил немного познакомить читателя с тем, что нас ждет в будущих релизах программы. Главное, что дейстительно планирует автор - это поддержка AMD64. Эта линейка процессоров уже поистине стала народной и получила широкое распространение в мире. Даже Майкрософт в Win64, насколько мне известно, делает основной упор на процессоры AMD. Отсюда в последнее время стало появляться все больше программ и даже драйверов, скомпилированных в формате AMD64, отсюда ассемблер и дизассемблер hiew'а полюбому необходимо расширять. Про IA64 пока планов никаких, но тут уж хотя бы AMD64 реализовать. Насчет .NET и ARM Sen обещал подумать, но это больше на перспективу, так как разбираться с абсолютно новым ассемблером и псевдокодом не так просто. Помимо того что уже сказал, автором дизассемблера планируется публикация полного Plugin SDK, чтобы каждый мог разработать плагин для расширения функционала HIEW'а. К примеру, может кто напишет скриптовый язык для автоматизации действий в HIEW или скажем анализатор компилятора/упаковщика. В общем если SDK появится на сцене, за плагинами, думаю, не заржавеет. Что касается GUI, то его скорее всего не будет, так как консольный инструмент гораздо удобнее виндового. Это уже доказано FAR'ом. Так что перспектив много - осталось ждать :smile3: Надеюсь, Евгений не подкачает.

Последнюю версию hiew всегда можно найти на сайте http://webhost.kemtel.ru/~sen. © GPcH


0 1.247
archive

archive
New Member

Регистрация:
27 фев 2017
Публикаций:
532