我需要一个汇编库。
是否有任何库嵌入到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
评论
图书馆到底应该做什么?拆解?外壳?