Можно ли использовать шестнадцатеричный редактор для редактирования инструкций в исполняемом двоичном файле?

Если у меня есть двоичный исполняемый файл, содержащий скомпилированный код C, могу ли я использовать шестнадцатеричный редактор для редактирования этого двоичного файла и изменения определенной инструкции в другую, такую ​​как nop или же jmp? Как узнать смещение инструкции, которую я хочу изменить?


Да, это для образовательных целей.

2 ответа

Решение

ОБНОВЛЕНИЕ: Извините, пропустил тег Mach-O. Этот список действительно для стандартного x86, а не для Mach-O специально. Тем не менее, это хороший список для стандартного кода x86:)

Конечно, но лучше использовать такой инструмент, как OllyDbg, SoftICE или Immunity Debugger (вариант Olly, разработанный для реверс-инжиниринга). Изучение x86 asm на самом деле не так сложно, как это делают большинство людей. Вы можете узнать много о сборке Win32 с http://win32assembly.online.fr/

Вы можете получить список кодов операций по адресу http://ref.x86asm.net/ если вы действительно настроены на редактирование с помощью шестнадцатеричного редактора.

Больше отличных инструментов для такого рода вещей:

  • PE Info (бесплатный редактор заголовков EXE)
  • CFF Explorer (бесплатный редактор / перестройщик заголовков EXE. Больше возможностей, чем PE Info)
  • PE Explorer (коммерческий EXE-заголовок и редактор ресурсов)
  • TrID (идентификатор типа файла)
  • PEID (идентификатор исполняемого файла / упаковщика)
  • IDA Pro (статический анализ исполняемых файлов)
  • procmon (анализ деятельности)
  • procxp (как taskmgr, но лучше и глубже)
  • ildasm (дизассемблер CIL)
  • ilasm (CIL ассемблер)
  • RedGate Reflector (инструмент обратного проектирования.NET)
  • .NET Reflector (инструмент обратного проектирования.NET)
  • XVI32 (шестнадцатеричный редактор)
  • Hex Workshop (редактор Hex / редактор структуры)

Инструмент де-факто для выполнения этой и всех других форм бинарных манипуляций - Interactive Disassembler (более известный как IDA, поставляется с отличной бесплатной пробной версией!), Помните, что вам придется перебазировать оставшуюся часть бинарного файла, если вы измените размер инструкция + операнд (IE, изменяющий инструкцию x86 nop на инструкцию jmp с операндами в Mach-O, скорее всего, приведет к тому, что двоичный файл не будет работать, если вы не выполните перебазирование, для которого, конечно, в IDA есть удивительная утилита).

Шестнадцатеричный редактор не сможет сделать то же самое (по крайней мере, легко).

Другие вопросы по тегам