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

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

评论

图书馆到底应该做什么?拆解?外壳?

#1 楼

Oleh Yuschuk发布了一个轻量级的开源汇编程序库,您可以从http://ollydbg.de/srcdescr.htm下载该程序集,如预期的那样,它可以对转换进行汇编(
)命令从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);


#2 楼

您可以采用以下项目之一(我选择按字母顺序对它们进行排序):

汇编程序/反汇编程序




GNU binutils(Archs: i386,AMD64,ARM,Sparc,MIPS等;;格式:ELF,Mach-O,PE(部分))。

Miasm(Archs:i386,ARM,PowerPC,MSP430;格式: ELF,PE)

Metasm(存档:i386,AMD64,PowerPC,MIPS;格式:ELF,Mach-O(部分),PE)

NASM(存档:i386 ,AMD64;格式:ELF,Mach-O,PE)

Radare2:rasm(Archs:i386,AMD64,ARM,PowerPC,Sparc,MIPS,...;格式:ELF,Mach-O ,PE)

srcdescr(存档:i386;格式:PE)

YASM(存档:i386,AMD64;格式:ELF,Mach-O,PE)

(仅)反汇编程序




BAP(Archs:i386,AMD64;格式:ELF,PE)

BeEngine(Archs :i386,AMD64;格式:PE)

顶点引擎(Archs:i386,AMD64,ARM,PowePC,Sparc,MIPS,...;格式:ELF,Mach-O,PE)

distorm(存档:i386,AMD64)

ERESI:libasm(存档: i386,ARM,Sparc,MIPS;格式:ELF)

GDSL(Archs:i386,MSP430,AVR)

Hopper(Archs:i386,AMD64;格式:ELF,Mach-O,PE)

Insight(档案:i386,AMD64,MSP430;格式:ELF,PE(部分),Mach-O(部分))

libdasm(档案:i386)

libdisasm(来自bastard项目)(存档:i386;格式:ELF,PE)

Opdis(存档:i386,AMD64;格式:ELF,Mach-O,PE)

Pyew(Archs:i386,AMD64;格式:ELF,PE)

Udis86(Archs:i386,AMD64)

汇编器(仅)



FASM(Archs:i386,AMD64;格式:ELF,PE)

EDIT:
每个项目都包含一个库,可以按原样使用,也可以包装成一个库,您必须使用所需的功能自行编写代码。

评论


感谢@perror快速而有用的答案,但我正在寻找汇编程序库。除了GDSL工具包和METASM(我不知道它们到底是什么)之外,其他都是反汇编程序。

–密封...
14年6月21日在15:15

然后,您应该查看Miasm,并在所有项目中进行更深入的研究。 GAS(GNU ASsembler),NASM等都在内部有一个汇编库。

–恐怖
2014年6月21日15:21



对!但是NASM和GAS并不是lib,提取解析器和汇编器也不容易!我正在寻找简单的方法!

–密封...
14年6月21日在15:27

您绝对应该更深入地研究所有这些项目。您要求的不清楚,可能没有这样的库。因此,您有时需要做一些工作。但是,Radare2,Miasm,GNU binutils和ERESI项目应该包含您需要的所有内容(但可能会在使用前需要做一些工作)。

–恐怖
14年6月21日在15:41

Radare2当然可以组装:)

– jvoisin
14年6月22日在9:46