自动组装/拆卸库

逆向工程 二元分析 动态分析
2021-06-17 07:33:59

我正在用 C++ 编写一个带有手动组装/拆卸外壳的方便的反向工具,以自动化我的工作!

我需要一个汇编程序库。是否有任何库,嵌入在 C++ 中?

2个回答

您可以选择以下项目之一(我选择字母顺序对其进行排序):

汇编器/反汇编器

  • GNU binutilsArchs:i386、AMD64、ARM、Sparc、MIPS、...;格式:ELF、Mach-O、PE(部分))。
  • Miasm ( Archs : i386, ARM, PowerPC, MSP430;格式: ELF, PE)
  • MetasmArchs:I386,AMD64,PowerPC的,MIPS;格式:ELF,Mach-O的(局部的),PE)
  • NASM ( Archs : i386, AMD64;格式: ELF, Mach-O, PE)
  • Radare2RASMArchs:I386,AMD64,ARM,PowerPC的,SPARC,MIPS,...;格式:ELF,Mach-O的,PE)
  • srcdescr拱门:i386;格式:PE)
  • YASM拱门:i386、AMD64;格式:ELF、Mach-O、PE)

反汇编器(仅)

  • BAPArchs:i386、AMD64;格式:ELF、PE)
  • BeaEngineArchs:I386,AMD64;格式:PE)
  • 凯普斯引擎Archs:I386,AMD64,ARM,PowePC,SPARC,MIPS,...;格式:ELF,Mach-O的,PE)
  • distormArchs:I386,AMD64)
  • ERESIlibasmArchs:I386,ARM,SPARC,MIPS;格式:ELF)
  • GDSLArchs:I386,MSP430,AVR)
  • 料斗拱门:i386、AMD64;格式:ELF、Mach-O、PE)
  • 洞察Archs:i386、AMD64、MSP430;格式:ELF、PE(部分)、Mach-O(部分))
  • libdasm拱门:i386)
  • libdisasm(来自杂种项目)(Archs:I386;格式:ELF,PE)
  • OpdisArchs:I386,AMD64;格式:ELF,马赫- O,PE)
  • Pyew拱门:i386、AMD64;格式:ELF、PE)
  • Udis86Archs:I386,AMD64)

汇编器(仅)

  • FASMArchs:i386、AMD64;格式:ELF、PE)

编辑:这些项目中的每一个都包含一个可以按原样使用的库,或者可以包装到一个库中,您必须使用您请求的功能自行编码。

Oleh Yuschuk 发布了一个轻量级的开源汇编程序库,您可以从http://ollydbg.de/srcdescr.htm下载

集合

正如预期的那样,函数 Assemble() 将命令从 ASCII 形式转换为二进制 32 位代码。

例子:

  // Assemble one of the commands above. First try form with 32-bit immediate.
  pasm="ADD [DWORD 475AE0],1";
  printf("%s:\n",pasm);
  j=Assemble(pasm,0x400000,&am,0,0,errtext);
  n=sprintf(s,"%3i  ",j);
  for (i=0; i<j; i++) n+=sprintf(s+n,"%02X ",am.code[i]);
  if (j<=0) sprintf(s+n,"  error=\"%s\"",errtext);
  printf("%s\n",s);