x86il.c

来自「可以将机器码计算为汇编指令并且算出指令长度的C头文件。在编写Ring0或Ring」· C语言 代码 · 共 43 行

C
43
字号
#include <stdlib.h>
#include <stdio.h>

#include "X86IL.h"

void main(int argc, char **argv) {
  int Bits;
  unsigned char AnaI[32];
  int nPfx;
  int iModRM;
  int ISize;
  int ILength;
  int i;
  unsigned char *Start;
  unsigned int fisize, j = 0;
  FILE *fi;

  if(argc > 2) {
    Bits = 32 -strtoul(argv[1], NULL, 0);
    fi = fopen(argv[2], "rb");
    if(fi) {
      fseek(fi, 0, SEEK_END);
      fisize = ftell(fi);
      fseek(fi, 0, SEEK_SET);
      Start = (unsigned char *)malloc(fisize +32);
      fread(Start, 1, fisize, fi);
      fclose(fi);
      while(j < fisize) {
        ILength = X86IL(Bits, Start +j, AnaI, &nPfx, &iModRM, &ISize);
        i = (iModRM ? iModRM +(AnaI[iModRM-1] == 0xF ? 1 : 0) : ILength -ISize) -nPfx;
        printf("\n%.8X  %i %i %i %i %i ", j, ILength, nPfx, i, iModRM ? ILength -nPfx -i -ISize : 0, ISize);
        for(i = 0; i < ILength; i++) {
          printf(" %.2X", AnaI[i]);
        }
        j += ILength;
      }
    }
  }
  else {
    printf("X86IL <16|32|64> <FileName>");
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?