x64汇编环境配置

一丶x64环境配置

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

一直没有时间写博客将64位汇编写出来.所以现在细心整理一下.

首先我们先配置好开发环境,然后我们才能进行开发.

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

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

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

1.2 配置x86 /x64汇编环境

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

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

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

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

1.3 设置asm属性.

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

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

1.4 asm属性继续设置

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

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

命令行跟输出即可.

如下;

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

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

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

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

解决方案右键点击属性.找到链接->子系统



设置子系统位console控制台

然后设置入口点.

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

x64汇编代码


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

最后编译执行即可.

x64dbg 下的内容

1.6配置生成依赖项

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

1.7 配置高亮插件

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

一个是 AsmHighlighter,另个好想是 AsmHxxxx

两个安装那个都可以.

二丶Vs配置X86汇编环境.

2.1.设置编译环境为win32

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

2.2.设置附加依赖项.

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

如下:

2.3.设置Asm文件属性.

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

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



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

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

此时就设置成功了.

x86汇编代码测试

INCLUDELIB kernel32.lib

.MODEL flat,stdcall

;.code
ExitProcess PROTO, ; exit program
dwExitCode:DWORD ; return code .data
.code
Main PROC mov eax,10000h ; EAX = 10000h
add eax,40000h ; EAX = 50000h
sub eax,20000h ; EAX = 30000h push 0h
call ExitProcess main ENDP
END Main

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

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

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

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

x32Dbg代码截图

x64汇编第一讲,Vs系列配置x64环境与x86环境的更多相关文章

  1. x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式

    目录 x64汇编第二讲,复习x86汇编指令格式,学习x64指令格式 一丶x86指令复习. 1.1什么是x86指令. 1.2 x86与x64下的通用寄存器 1.3 OpCode 1.4 7种寻址方式 二 ...

  2. 32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用

    32位汇编第一讲x86和8086的区别,以及OllyDbg调试器的使用 一丶32位(x86也称为80386)与8086(16位)汇编的区别 1.寄存器的改变 AX 变为 EAX  可以这样想,16位通 ...

  3. Windows X64汇编入门(1)

    最近断断续续接触了些64位汇编的知识,这里小结一下,一是阶段学习的回顾,二是希望对64位汇编新手有所帮助.我也是刚接触这方面知识,文中肯定有错误之处,大家多指正.文章的标题包含了本文的四方面主要内容: ...

  4. x64汇编第四讲,c / C++中调用x64汇编

    目录 x64汇编第四讲,c / C++中调用x64汇编 一丶简介 1.说明 二丶C/C++调用 asm64.asm函数. 1.配置asm参与生成 2.给Asm文件添加函数代码 3.C/C++调用asm ...

  5. Windows x64汇编函数调用约定

    最近在写一些字符串函数的优化,用到x64汇编,我也是第一次接触,故跟大家分享一下. x86:又名 x32 ,表示 Intel x86 架构,即 Intel 的32位 80386 汇编指令集. x64: ...

  6. DDK编写64位驱动时加入x64汇编的方法

    上篇讲了如何在编写x64应用程序时加入x64汇编,这里来说说如何在编写x64驱动时加入x64汇编. 一.在asm文件中单独编写功能函数 比如要实现一个64位的加法函数,原型如下: ULONG64 my ...

  7. VS2010中编写x64汇编的具体方法

    编写涉及系统特性的一些底层程序,特别是ShellCode,不可避免地要采用直接编写汇编代码的方式. 在目标平台为x86模式时,可以直接使用内联汇编,这个很多人都比较熟悉了,也非常地方便. 但是当目标平 ...

  8. x64汇编第三讲,64位调用约定与函数传参.

    目录 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 二丶x64汇编 2.1汇编详解 x64汇编第三讲,64位调用约定与函数传参. 一丶复习X86传参 在x86下我们汇编的传参如下: ...

  9. 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数

    32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数 (如果想看所有代码,请下载课堂资料,里面有所有代码,这里会讲解怎么生成一个窗口程序) 一丶32位汇编编写Windows窗口程序 首 ...

随机推荐

  1. GitLab CI/CD的官译【原】

    CI / CD方法简介 软件开发的持续集成基于自动执行脚本,以最大限度地减少在开发应用程序时引入错误的可能性.从新代码的开发到部署,它们需要较少的人为干预甚至根本不需要干预. 它涉及在每次小迭代中不断 ...

  2. Java自学-类和对象 枚举类型

    枚举类型 步骤 1 : 预先定义的常量 枚举enum是一种特殊的类(还是类),使用枚举可以很方便的定义常量 比如设计一个枚举类型 季节,里面有4种常量 public enum Season { SPR ...

  3. comet oj #7

    A 签到题 题目描述 多次询问,每次询问给一个值域范围 [l,r][l,r],要回答下列四个问题: 从这个范围内选出两个整数(两个数可相同), (1) 这两个数的最小公倍数最大是多少? (2) 这两个 ...

  4. MySQL--mysqldmp命令参数set-gtid-purged

    在MySQL 5.7版本中使用mysqldump导出数据时,如果未显式指定set-gtid-purged参数,会报下面错误: Warning: A partial dump from a server ...

  5. 用Nodejs遍历云存储文件

    起因 最近想要将云存储中的文件去重.因为有现成的Nodejs的API,所以打算用Nodejs实现此功能. 伪代码如下: scanDir = function(uri){ return new Prom ...

  6. angular8 打包时 文件过大 导致内存溢出解决方案(记录)

    在package.json 中添加 "scripts": { "ng": "ng", "start": "ng ...

  7. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  8. dfs 二叉树中序遍历迭代解法——求解BST中第k小元素

    BST中第K小的元素 中文English 给一棵二叉搜索树,写一个 KthSmallest 函数来找到其中第 K 小的元素. Example 样例 1: 输入:{1,#,2},2 输出:2 解释: 1 ...

  9. php调停者模式(mediator pattern)

    差不多了,睡一觉,下次再弄. <?php /* The more classes we have in our software, the more complex their communic ...

  10. Android中UID和PID的作用和区别

    PID:为Process Identifier, PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID.进程中止后PID被系统回收,可能会被继续分配给新运行的程序,但是在a ...