Welcome to the BeaEngine Sweet Home - x86 x86-64 disassembler library - (IA-32 & Intel64)

Disasm Structure

La structure envoyée à la fonction Disasm stocke en retour le mnémonic ainsi que les opérandes sources et destination. Il est nécessaire de spécifier en entrée l'adresse de lecture.

struct _Disasm {
   long long EIP;
   long long VirtualAddr;
   long SecurityBlock;
   char CompleteInstr[64];
   long Archi;
   long Options;
   INSTRTYPE Instruction;
   ARGTYPE Argument1;
   ARGTYPE Argument2;
   ARGTYPE Argument3;
   PREFIXINFO Prefix;
};

Membres

EIP

[in] L'adresse où la routine va réaliser le désassemblage.

VirtualAddr

[in] optionnel - (Pour les instruction CALL - JMP - JMP conditionnel - LOOP) Par défaut, cette valeur vaut 0 (disable). Le désassembleur calcule l'adresse de destination du saut non pas à partir de EIP mais à partir de VirtualAddr. Cette adresse peut être de 64 bits. Cette option permet de désassembler du code situé n'importe où en mémoire tout en gardant au moment de l'affichage les adresses théoriques comme si le code était à sa place d'origine.

CompleteInstr

[out] Chaine qui stockera l'instruction désassemblée.

SecurityBlock

[in] Par défaut, cette valeur vaut 0. (option désactivée). Si elle est non nulle, elle correspond au nombre de bytes que la fonction Disasm a le droit de lire à partir de EIP. Ceci permet de réaliser un bloc de lecture pour éviter d'éventuels Access violation. Il est à noter cependant qu'une instruction sur les processeurs INTEL (en mode IA-32 ou intel 64) ne dépasse jamais 15 bytes. Un SecurityBlock au delà de cette valeur est donc inutile.

Archi

[in] Ce champ vous permet de spécifier le type d'architecture utilisé. S'il vaut 0, l'architecture utilisée est IA-32. S'il vaut 64 (0x40), l'architecture utilisée est Intel 64.

Options

[in] Ce champ vous permet de spécifier une option d'affichage. Vous pouvez ainsi demander une syntaxe masm32, nasm ,goasm ou AT&T. Vous pouvez également spécifier le format de numération de type préfixé ou suffixé. Pour plus de clareté, vous pouvez demander une tabulation entre le mnémonic et le premier argument. Enfin, vous pouvez afficher les registres de segment sur les opérandes mémoire. Les constantes à utiliser sont les suivantes :

  NoTabulation = 0x0,
  Tabulation = 0x1,
  MasmSyntax = 0x000,
  GoAsmSyntax = 0x100,
  NasmSyntax = 0x200,
  ATSyntax = 0x400,
  PrefixedNumeral = 0x10000,
  SuffixedNumeral = 0x00000,
  ShowSegmentRegs = 0x01000000

Instruction

[out] Structure de type INSTRTYPE .

Argument1

[out] Structure de type ARGTYPE qui concerne le premier argument de l'instruction .

Argument2

[out] Structure de type ARGTYPE qui concerne le second argument de l'instruction .

Argument3

[out] Structure de type ARGTYPE qui concerne le troisième argument de l'instruction .

Prefix

[out] Structure de type PREFIXINFO qui permet d'avoir une liste complète des préfixes utilisés.

Valid XHTML 1.0 Strict

Valid CSS!