Kali Linux 逆向工程工具 NASM shell 教程

Kali Linux 逆向工程工具 NASM shell 教程
    日期:2017年12月26日
    观看: 1,541 °C 次

Netwide Assembler NASM是一个80x86和x86-64汇编器,专为便携性和可扩展性而设计模块化。 它支持一系列的目标文件格式,包括Linux和* BSD a.out,ELF,COFF,Mach-O,16位和32位OBJ(OMF)格式,Win32和Win64。 它也会输出纯二进制文件,Intel十六进制和Motorola S-Record格式。 其语法设计简单易懂,类似于“英特尔软件开发人员手册”中的语法,其复杂程度极低 它支持所有目前已知的x86架构扩展,并且对宏有强大的支持。

NASM还附带一套用于处理RDOFF自定义对象文件格式的实用程序。

NASM

 

用法:

组装一个文件,你发出一个窗体的命令

nasm −f <format> <filename> [−o <output>]

nasm -f <格式> <文件名> [-o <输出>]

 

选项:

 

-o 选项:指定输出文件名称

NASM通常会为您选择输出文件的名称;这究竟是如何依赖的关于对象文件格式。对于Microsoft目标文件格式(obj,win32和win64),它将删除.asm扩展名(或任何你喜欢使用的扩展名--NAMM不关心)从你的源文件名并替换.obj。对于Unix对象文件格式(aout,as86,coff,elf32,elf64,elfx32,ieee,macho32和macho64)将替代.o。对于dbg,rdf,ith和srec,它将使用.dbg,.rdf,.ith和.srec,并且对于bin格式,它将简单地删除扩展名,这样myfile.asm生成输出文件myfile。

如果输出文件已经存在,则NASM将覆盖它,除非它与输入文件具有相同的名称这种情况下会给出警告,并使用nasm.out作为输出文件名。对于这种行为不可接受的情况,NASM提供-o命令行选项,它允许你指定你想要的输出文件名。您通过跟随名称来调用-o您希望输出文件,无论有无间隔空间。例如:

nasm -f bin program.asm -o program.com
nasm -f bin driver.asm -odriver.sys

请注意,这是一个小的o,并且不同于大写字母O,它用于指定数量需要优化通行证。

 

-f 选项:指定输出文件格式

如果你不提供-f选项给NASM,它会为你自己选择一个输出文件格式。 在里面NASM的分发版本,默认是bin。 如果你编译了自己的NASM副本,你可以在编译时重新定义OF_DEFAULT,并选择你想要的默认。

与-o一样,-f和输出文件格式之间的中间空格是可选的; 所以 −f elf和−felf都是有效的。可用输出文件格式的完整列表可以通过发出命令nasm -hf来给出;

 

-l 选项:生成列表文件

如果您向NASM提供-l选项,请按照(通常的可选空间)文件名,NASM将会为您生成一个源代码文件,其中的地址和生成的代码在左边列出实际的源代码,多线宏的扩展(除了那些特别要求的在源列表中没有扩展:见4.3.11节)。 例如:

nasm -f elf myfile.asm -l myfile.lst

如果选择了一个列表文件,你可以用[list - ]关闭源文件的列表,然后把它关掉回到[list +],(默认,显然)。 没有“用户表单”(没有括号)。 这个可以用来列出仅感兴趣的部分,避免过长的列表。

 

-M 选项:生成Makefile依赖项

这个选项可以用来生成stdout的makefile依赖关系。 这可以重定向到一个文件进一步处理。 例如:

nasm -M myfile.asm> myfile.dep

 

-MG 选项:生成Makefile依赖项

这个选项可以用来生成stdout的makefile依赖关系。 这与-M选项不同如果遇到一个不存在的文件,它被认为是一个生成的文件,并被添加到依赖列表没有前缀。

 

-MF 选项:设置Makefile依赖项文件

此选项可与-M或-MG选项一起使用,以将输出发送到文件,而不是标准输出。例如:

nasm -M -MF myfile.dep myfile.asm

 

-MD 选项:组装并生成相关性

-MD选项充当-M和-MF选项的组合(即,必须指定文件名)。但是,与-M或-MG选项不同,-MD不禁止汇编程序的正常操作。使用它来自动生成更新的每个程序集会话的依赖关系。 例如:

nasm -f elf -o myfile.o -MD myfile.dep myfile.asm

 

-MT 选项:依赖目标名称

-MT选项可用于覆盖依赖目标的默认名称。 这通常是与由-o选项指定的输出文件名相同。

 

-MQ 选项:依赖目标名称(引用)

-MQ选项作为-MT选项,除了试图引用在其中有特殊含义的字符Makefile语法。 这并非万无一失,因为并不是所有有特殊含义的人物都可以在Make中引用。默认输出(如果没有指定-MT或-MQ选项)会被自动引用。

 

-MP 选项:发出假目标

与任何依赖关系生成选项一起使用时,-MP选项会导致NASM发出一个假的目标没有依赖每个头文件。 这可以防止从抱怨,如果一个头文件已被删除。

 

-MW 选项:Watcom引用引用样式

这个选项会导致NASM尝试根据Watcom Make约定引用依赖关系而不是POSIX Make约定(也被大多数其他Make变体使用)。这引号#为$#而不是\#,使用&而不是\作为连续行,并且包含文件名双引号中的空格。

 

-F 选项:选择调试信息格式

这个选项用来选择发送到输出文件的调试信息的格式由调试器(或将)使用。 在版本2.03.01之前,使用这个开关并没有启用输出选定的调试信息格式。 使用-g,启用输出。 版本2.03.01和更高版本如果指定-F,则自动启用-g。输出格式的可用调试文件格式的完整列表可以通过发出命令nasm -f <format> -y。 并不是所有的输出格式都支持调试输出。

 

-g 选项:启用调试信息。

这个选项可以用来以指定的格式生成调试信息。 使用不带-F的-g导致以默认格式发送调试信息,如果有的话,为所选输出格式。 如果当前没有以选定的输出格式执行调试信息,-g是静默的忽略。

 

-X 选项:选择错误报告格式

这个选项可以用来为可能的错误信息选择错误报告格式由NASM制作。目前,可以选择两种错误报告格式。他们是-Xvc选项和-Xgnu选项。 GNU格式是默认的,如下所示:

filename.asm:65:错误:特定的错误消息

其中filename.asm是检测到错误的源文件的名称,65是源文件

检测到错误的文件行号,错误是错误的严重程度(可能是警告),具体的错误信息是一个更详细的文字信息,这应该有所帮助精确确定问题。

另一种由-Xvc指定的格式是Microsoft Visual C ++和其他一些程序使用的样式。它看起来像这样:filename.asm(65):错误:特定的错误消息

唯一的区别是行号在括号内,而不是由冒号分隔。

 

-Z 选项:将错误发送到文件

在MS-DOS下,它可能很难(虽然有办法)重定向的标准错误输出程序到一个文件。 由于NASM通常在stderr上产生警告和错误信息,这可以如果(例如)要将它们加载到编辑器中,则很难捕获错误。因此,NASM提供了-Z选项,并带有导致错误发送到的文件名参数指定的文件而不是标准错误。 因此,您可以通过键入将错误重定向到文件中

nasm -Z myfile.err -f obj myfile.asm

在NASM的早期版本中,这个选项被称为-E,但是它被改变了,因为-E是一个选项通常只用于预处理,结果是灾难性的。

 

-s 选项:将错误发送到标准输出

-s选项将错误消息重定向到标准输出而不是标准错误,因此可以在下面重定向MS-DOS。 要组装文件myfile.asm并将其输出传递给更多程序,可以键入:

nasm -s -f obj myfile.asm | more

 

-i 选项:包含文件搜索目录

当NASM在源文件中看到%include或%pathsearch指令时,它将不仅在当前目录中搜索给定的文件,而且还将搜索任何文件通过使用-i选项在命令行中指定的目录。所以你可以包含文件从一个宏库,例如,通过键入

nasm -ic:\ macrolib \ -f obj myfile.asm

(像往常一样,-i和路径名之间的空格是允许的,并且是可选的)。

为了完整的源代码可移植性,NASM不理解文件命名正在运行的操作系统的约定;您提供的字符串作为参数的-i选项将是与写入包含文件的名称完全相同。因此在后面的反斜杠上面的例子是必要的。在Unix下,同样需要一个尾随的正斜杠。(你可以使用这个优点,如果你真的反常,注意选项-ifoo会导致%include“bar.i”搜索文件foobar.i ...)如果你想定义一个标准的包含搜索路径,类似于Unix系统上的/ usr / include,那么你应在NASMENV环境变量中放置一个或多个-i指令。对于许多C编译器的Makefile兼容性,此选项也可以指定为-I。

 

-p 选项:预先包含文件

NASM允许您使用-p选项指定要预先包含在源文件中的文件。 所以赛跑

nasm myfile.asm -p myinc.inc

相当于运行nasm myfile.asm并将指令%include“myinc.inc”放在文件的开始。为了与-I,-D和-U选项保持一致,这个选项也可以被指定为-P。

 

-d 选项:预定义一个宏

正如-p选项提供了在源文件开始处放置%include指令的替代方法,-d选项给出了放置%define指令的替代方案。 你可以编码

nasm myfile.asm -dFOO = 100

作为放置指令的替代方法

%定义FOO 100

在文件的开始。 您也可以错过宏观价值:选项-dFOO相当于编码%定义FOO。 这种形式的指令对于选择组装时间选项可能是有用的然后使用%ifdef进行测试,例如-dDEBUG。对于许多C编译器的Makefile兼容性,此选项也可以指定为-D。

 

-u 选项:取消定义宏

-u选项取消定义一个宏,否则它将被自动或者预定义通过前面在命令行中指定的-p或-d选项。

例如,下面的命令行:

nasm myfile.asm -dFOO = 100 -uFOO

会导致FOO不是程序中的预定义宏。 这对覆盖选项很有用在Makefile的不同位置指定。对于许多C编译器的Makefile兼容性,此选项也可以指定为-U。

 

-E 选项:仅预处理

NASM允许预处理器自己运行,直到一点。 使用-E选项(需要没有参数)将导致NASM预处理其输入文件,展开所有的宏引用,全部删除注释和预处理器指令,并将结果文件打印到标准输出(或保存到一个文件,如果-o选项也被使用)。

该选项不能应用于需要预处理器评估表达式的程序这取决于符号的值:所以代码如%assign tablesize($ --tablestart)会在预处理模式下导致错误。

为了兼容老版本的NASM,这个选项也可以写成-e。 -E在旧版本的NASM相当于现在的-Z选项。

 

-a 选项:根本不要预处理

如果将NASM用作编译器的后端,则可能需要抑制预处理完全假设编译器已经完成了它,以节省时间和增加编译速度。 -a选项,不需要参数,指示NASM替换其强大的预处理器与不做任何事情的存根预处理器。

 

-O 选项:指定多通道优化

使用-O选项,您可以告诉NASM执行不同级别的优化。语法是:

-O0:没有优化。如果没有指定一个简短格式,所有操作数都采用长格式有条件的跳转。这是为了匹配NASM 0.98的行为。

-O1:最小化优化。如上所述,但是符合有符号字节的立即操作数是优化,除非长表格被指定。条件跳转默认为长格式,除非否则指定。

-Ox(其中x是实际字母x):Multipass优化。最小化分支偏移并签名即时字节,除非已经使用strict关键字,否则覆盖大小规范)。为了与早期版本兼容,字母x也可以是更大的数字比一个。这个数字对实际的传球次数没有影响。-Ox模式被推荐用于大多数用途,并且是自NASM 2.09以来的默认模式。

请注意,这是一个大写字母O,与用于指定输出文件的小o不同名称。

 

-t 选项:启用TASM兼容模式

NASM包含与Borland的TASM兼容的有限形式。 当使用NASM的-t选项时,做出以下更改:

本地标签可以用@@替代前缀。

括号内支持大小覆盖。 在TASM兼容模式下,广场内的尺寸覆盖括号会更改操作数的大小,而不是操作数的地址类型NASM语法。 例如。 mov eax,[DWORD val]在TASM兼容模式下是有效的语法。 注意您将无法覆盖该指令的默认地址类型。

支持某些指令的前缀形式(arg,elif,else,endif,if,ifdef,ifdifi,ifndef,include,local)

 

-v 选项:显示版本信息

键入NASM -v将显示您正在使用的NASM的版本以及它所在的日期编译。如果您报告错误,您将需要版本号。对于与Yasm的命令行兼容性,格式--v也可以用于此选项NASM版本.

 

-y 选项:显示可用的调试信息格式

键入nasm -f <选项> -y 将显示给定的可用调试信息格式的列表输出格式。 默认格式用星号表示。 例如:

nasm -f elf -y

 

--prefix和--postfix选项。

--prefix和--postfix选项将给定的参数前置或附加到全部全局或外部变量。 例如。 --prefix _将在全局和全部前面加上下划线外部变量,因为C需要在一些系统调用约定中,但不是全部。

 

示例:

1、将myfile.asm组装成一个ELF对象文件myfile.o

nasm -f elf myfile.asm

 

2、将myfile.asm组装成一个原始的二进制文件myfile.com

nasm -f bin myfile.asm -o myfile.com

 

3、要生成列表文件,在原始文件左侧显示从NASM输出的十六进制代码来源,使用-l选项给出一个列表文件名;

nasm -f coff myfile.asm -l myfile.lst

 

4、要从NASM获得更多使用说明,请尝试输入

nasm -h

 

NASM效果与评价:

虽然说我目前不懂汇编,但是感觉还是很不错的,因为此软件毕竟有官网,而且还有英文的帮助文档(Html和PDF格式),想详细的学习的请查看NASM官网:http://www.nasm.us;

 

在线视频:

优酷:http://v.youku.com/v_show/id_XMzI2NDM3MzEwOA==.html

腾讯:https://v.qq.com/x/page/y05242xkpkx.html

爱奇艺:http://www.iqiyi.com/w_19rwhmd5r1.html

乐视:

付杰
花牛苹果 甘肃天水 李宏恩家自种 1斤 包邮
花牛苹果 甘肃天水 李宏恩家自种 1斤 包邮
  • ¥ 6.8元
  • 市场价:8.8元
免费SSL证书服务 HTTPS申请 安装 配置 支持通配符*
免费SSL证书服务 HTTPS申请 安装 配置 支持通配符*
  • ¥ 199.9元
  • 市场价:20000元
刷流量、刷人气、刷点击、刷收藏、刷APP关键词服务
刷流量、刷人气、刷点击、刷收藏、刷APP关键词服务
  • ¥ 1.0元
  • 市场价:9.9元
wp discux 帝国 dedecms phpcms等快速建站
wp discux 帝国 dedecms phpcms等快速建站
  • ¥ 99.9元
  • 市场价:499.9元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: