diStorm3

09 сентября 2018 в Reverse Engineering

Описание пакета diStorm3

diStorm - легкая, простая в использовании и быстрая библиотека для разложения. diStorm разбирает инструкции в режимах 16, 32 и 64 бит. Поддерживаемые наборы команд: FPU, MMX, SSE, SSE2, SSE3, SSSE3, SSE4, 3DNow! (w / extensions), новые наборы команд x86-64, VMX, AMD SVM и AVX !. Выход нового интерфейса diStorm - это специальная структура, которая может описывать любую инструкцию x86, эта структура может быть впоследствии отформатирована и в текст для отображения. diStorm написан на языке C, но для быстрого использования diStorm также имеет оболочки в Python / Ruby / Java и может быть легко использован и на C. Это также самая быстрая библиотека дизассемблера! Исходный код очень чистый, читабельный, портативный и независимый от платформы (поддерживает как небольшую, так и большую энтузиазм). diStorm зависит исключительно от библиотеки C, поэтому его можно использовать во встроенных или модульных модулях. Обратите внимание, что diStorm3 обратно совместим с интерфейсом diStorm64 (однако убедитесь, что вы используете новейшие файлы заголовков).

Пример использования diStorm3

Разберите поэтапную обратную оболочку, сгенерированную с помощью msfpayload:

root@kali:~# python
      Python 2.7.3 (default, Mar 13 2014, 11:03:55)
      [GCC 4.7.2] on linux2
      Type "help", "copyright", "credits" or "license" for more information.
      >>> from distorm3 import Decode, Decode16Bits, Decode32Bits, Decode64Bits
      >>> l = Decode(0x100, open("stagedrev.bin", "rb").read(), Decode16Bits)
      >>> for i in l:
      ...  print "0x%08x (%02x) %-20s %s" % (i[0],  i[1],  i[3],  i[2])
      ...
      0x00000100 (02) 7f45                 JG 0x147
      0x00000102 (01) 4c                   DEC SP
      0x00000103 (01) 46                   INC SI
      0x00000104 (02) 0101                 ADD [BX+DI], AX
      0x00000106 (02) 0100                 ADD [BX+SI], AX
      0x00000108 (02) 0000                 ADD [BX+SI], AL
      0x0000010a (02) 0000                 ADD [BX+SI], AL
      0x0000010c (02) 0000                 ADD [BX+SI], AL
      0x0000010e (02) 0000                 ADD [BX+SI], AL
      0x00000110 (02) 0200                 ADD AL, [BX+SI]
      0x00000112 (02) 0300                 ADD AX, [BX+SI]
      0x00000114 (02) 0100                 ADD [BX+SI], AX
      0x00000116 (02) 0000                 ADD [BX+SI], AL
      0x00000118 (01) 54                   PUSH SP
      0x00000119 (03) 800408               ADD BYTE [SI], 0x8