博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
x64汇编第一讲,Vs系列配置x64环境与x86环境
阅读量:5237 次
发布时间:2019-06-14

本文共 1931 字,大约阅读时间需要 6 分钟。

目录

x64汇编环境配置

一丶x64环境配置

现在windows系统都是64位了,那么对应的汇编也就是说已经升级到64位了.

一直没有时间写博客将64位汇编写出来.所以现在细心整理一下.
首先我们先配置好开发环境,然后我们才能进行开发.

1.1 VS系列编译器配置X64Asm开发环境.

1.1新建一个项目.项目里面添加一个.asm后缀的文件.

1197364-20190511183031174-1899578249.png

当然后缀.asm文件没有,所以我们随便添加一个文本文件.或者一个.cpp文件.在添加的时候将后缀名改为.asm即可.

1.2 配置x86 /x64汇编环境

我们要生成一个应用程序,可以进行选择是生成x86还是x64

现在汇编中也是一样的.直接进行配置.

1197364-20190511185240744-1687097822.png

当然你也可以自定义一个解决方案,是专门编译汇编的.

只需要你在 上方Debug哪里新建一个解决方案即可.这个自己研究不在累赘,如果嫌麻烦自己只用用x64的即可.

1.3 设置asm属性.

右键对.asm文件 点击属性,如下图表示

从项目中排除选择否, 然后项目类型改正自定义类型

1197364-20190511183204197-1011407565.png

1.4 asm属性继续设置

如果第三不应用之后则会出现如下显示界面

1197364-20190511185638070-1943805643.png

此时在自定义生成工具里面,点击常规. 里面会出现很多内容.我们只关心

命令行跟输出即可.

如下;

命令行: ml64 /Fo $(IntDir)%(fileName).obj /c %(fileName).asm

输出: $(IntDir)%(fileName).obj;%(Outputs)

1.5设置程序入口点以及子系统

如果单纯的编写x64汇编.那么你就需要设置了.

解决方案右键点击属性.找到链接->子系统
1197364-20190511190400153-1855674380.png
设置子系统位console控制台

然后设置入口点.

1197364-20190511190445716-1906162732.png

你写的x64汇编入口是哪个你就指定那个即可.

x64汇编代码

.DATA        ;定义数据段IBinary DQ ?  ;自定义了一个常量为IBinary.CODE         ;定义代码段 Fun PROC    ;定义函数    retFun ENDP Main PROC        sub rsp,20h    xor r9,r9    xor r8,r8    xor rdx,rdx    xor rcx,rcx    call Fun    add rsp,20h    retMain ENDPEND

最后编译执行即可.

x64dbg 下的内容

1197364-20190511190747894-1334896112.png

1.6配置生成依赖项

如果上方编译不成功,则设置一下生成依赖项.

1197364-20190511200723705-1870647460.png

1197364-20190511200754491-1695672343.png

1.7 配置高亮插件

当时配置高亮插件是在Vs2019上面,点击扩展更新. 搜索ASM会出现两个

一个是 AsmHighlighter,另个好想是 AsmHxxxx
两个安装那个都可以.

二丶Vs配置X86汇编环境.

2.1.设置编译环境为win32

首先我们要选择编译为win32程序.这个自己直接在配置管理器选择即可.

2.2.设置附加依赖项.

附加依赖项在x64可设置可不设置,我没有设置.

如下:

1197364-20190511200723705-1870647460.png

1197364-20190511200754491-1695672343.png

2.3.设置Asm文件属性.

右键对.asm文件 点击属性,如下图表示

从项目中排除选择否, 然后项目类型改正自定义类型

1197364-20190511202403030-1257650414.png

此时跟X64设置的不一样了,我们选择项目类型为 Microsoft Macro Assembler即可.

1197364-20190511202512447-243633069.png

设置 use safe Excetion Handlers 设置为是即可.

此时就设置成功了.

x86汇编代码测试

INCLUDELIB kernel32.lib.MODEL flat,stdcall;.codeExitProcess PROTO,              ; exit programdwExitCode:DWORD        ; return code.data.codeMain PROC    mov eax,10000h      ; EAX = 10000h    add eax,40000h      ; EAX = 50000h    sub eax,20000h      ; EAX = 30000h    push 0h    call ExitProcessmain ENDPEND Main

直接拷贝到自己工程即可.直接编译即可.

此时你还需要 在解决方案属性里面的连接器里面 设置一下系统具体如下

解决方案 -> 连接器 -> 系统 -> 子系统 : 设置为 console (控制台)

解决方案 -> 连接器 -> 高级 -> 入口点 : 设置为你汇编代码的入口点. 如我的就是 Main

x32Dbg代码截图

1197364-20190511202840861-1636583210.png

转载于:https://www.cnblogs.com/iBinary/p/10849915.html

你可能感兴趣的文章
Java线程面试题
查看>>
Paper Reading: Relation Networks for Object Detection
查看>>
Java IO流学习总结
查看>>
day22 01 初识面向对象----简单的人狗大战小游戏
查看>>
递归函数,二分运算,正则表达式
查看>>
Flutter之内置动画(转)
查看>>
MySql优化相关概念的理解笔记
查看>>
数据库解决方案
查看>>
DataContract和DataMember的作用
查看>>
js如何获取response header信息
查看>>
python_文件的打开和关闭
查看>>
ADO.NET介绍
查看>>
iOS: 数据持久化方案
查看>>
【C#】【Thread】Monitor和Lock
查看>>
UVALive - 3635 - Pie(二分)
查看>>
Scala入门系列(十):函数式编程之集合操作
查看>>
pulseaudio的交叉编译
查看>>
Cracking The Coding Interview 1.1
查看>>
vb.net 浏览文件夹读取指定文件夹下的csv文件 并验证,显示错误信息
查看>>
NetworkInterface的使用
查看>>