VS 编写 x64 内联汇编

 

From:https://www.cnblogs.com/talenth/p/9135626.html

VS 中使用 X64 汇编:https://blog.csdn.net/kingswb/article/details/64108715

 

 

编写涉及系统特性的一些底层程序,特别是ShellCode,不可避免地要采用直接编写汇编代码的方式。

在目标平台为x86模式时,可以直接使用内联汇编,这个很多人都比较熟悉了,也非常地方便。

但是当目标平台为x64时,微软不再允许直接内联汇编了。Visual C++ 至今都禁止 x64 编译模式下使用 __asm 关键字内联汇编。
每次要用汇编的时候都得另外开一个 ASM 文件写,然后 call 过去。

怎么解决这个问题呢? 一种办法是改用Intel的编译器,它仍然支持内联汇编。

另一种办法还是用VS了,但是不能内联,需要把汇编部分单独写到一个asm文件里,然后在其它源文件中引用。

我参考了一些网上的说明,在这里把过程写详细些,方便自己,也方便他人。

 

主要过程:

 

 

一、在asm文件中单独编写功能函数

 

比如要实现一个64位的加法函数,原型如下:

ULONG64 myAdd(ULONG64 u1,ULONG64 u2);

那么新建一个文件,写入以下内容

.CODEmyAdd PROCadd rcx,rdxmov rax,rcxret
myAdd ENDPEND

将以上内容保存为myadd.asm,然后加其加入到工程中。

在其它需要引用该函数的源文件中,添加以下声明:

#include "stdafx.h"
#include <windows.h>//声明引用外部函数
EXTERN_C ULONG64 myAdd(ULONG64 u1,ULONG64 u2);int _tmain(int argc, _TCHAR* argv[])
{ULONG64 result = myAdd(0x111111111,0x333333333);printf("result = 0x%I64X\n",result);return 0;
}

 

二、设置asm文件的生成方式

在asm文件上点击右键,选择“属性”:

然后点击左侧的“常规”,“从生成中排除”选择“否”,“项类型”选择“自定义生成工具”,然后点击应用。

此时在“常规”下面就会出现“自定义生成工具”的条目。

点击它,设置“命令行”为  ml64 /Fo $(IntDir)%(fileName).obj /c %(fileName).asm

设置输出为 $(IntDir)%(fileName).obj, 该项必须配置,否则VS认为该文件没有设置输出就会不处理它,同时它也告诉链接器到哪里去找这个obj文件。

上面的 $(IntDir)是一个宏,表示当前生成配置的目录,比如"x64\Debug"。

经过以上配置之后,asm文件编译生成的obj文件就会自动生成到相应配置的目录。

 

三、生成工程

全部配置完成以后,就可以愉快地生成工程了。正常的输出结果如下:

1>------ 已启动生成: 项目: testasm, 配置: Release x64 ------
1>生成启动时间为 2016/4/10 9:45:36。
1>InitializeBuildStatus:
1>  正在创建“x64\Release\testasm.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1>CustomBuild:
1>  Performing Custom Build Tools
1>   Assembling: myAdd.asm
1>  Microsoft (R) Macro Assembler (x64) Version 10.00.40219.01
1>  Copyright (C) Microsoft Corporation.  All rights reserved.
1>  
1>ClCompile:
1>  stdafx.cpp
1>  testasm.cpp
1>Link:
1>  正在生成代码
1>  已完成代码的生成
1>  testasm.vcxproj -> F:\x64Program\testasm\x64\Release\testasm.exe
1>FinalizeBuildStatus:
1>  正在删除文件“x64\Release\testasm.unsuccessfulbuild”。
1>  正在对“x64\Release\testasm.lastbuildstate”执行 Touch 任务。
1>
1>生成成功。
1>
1>已用时间 00:00:01.11
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/495519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

结构思考力~设定主题

一、确定结论&#xff1a;一个为目标服务的结论 二、包装主题&#xff1a;一个打动人心的主题 SPA主题确认法 确定主题&#xff0c;让表达观点明确&#xff0c;如果我们自己要写报告&#xff0c;就需要思考两个问题&#xff1a; 你要说服对方接受你什么观点&#xff1b;如何…

MSSQL中实现多表更新

续2010年11月09日的《SQL语句中CASE WHEN以及CAST的运用》一文&#xff0c;如果在基础数据教师表中添加了新的教师用户&#xff0c;而恰好添加的教师已经存在于教学成果数据中&#xff0c;则需要更新教学成果数据中该教师的信息&#xff0c;即&#xff1a;之前存储的是教师的姓…

VS2019 使用 C/C++ 动态链接库 并 进行调用

vs2019生成dll并调用的实现示例&#xff1a;https://www.jb51.net/article/179759.htm vs2017创建linux c程序&#xff1a;https://blog.csdn.net/qingyulove/article/details/86659726 vs2019编写Linux c/c项目&#xff1a;https://blog.csdn.net/mmmsss987/article/details/…

智能制造深度报告发布:工业机器人、视觉与工业物联/互联网新方向

来源&#xff1a;亿欧智库摘要&#xff1a;选取了先进制造领域中的先进机器人、工业视觉以及工业互联网/物联网几个重点方向&#xff0c;对数百家相关企业的梳理与研究&#xff0c;总结了各领域发展的机遇与及挑战。近几年&#xff0c;随着《中国制造2025》的发布&#xff0c;以…

结构思考力~设计序言

一、 初步设计&#xff1a;完善序言的基本要素&#xff1a; 序言是沟通前将对方吸引过来的一种方式&#xff0c;就是所谓的开场白。序言包括 SCQA 四要&#xff0c;下面就是一个包含四要素的例子&#xff1a; S&#xff08;情景&#xff09;需要让对方产生共鸣&#xff0c;必须…

ASP.NET 用户控件自定义属性、方法、事件

原文件链接&#xff1a;http://www.cnblogs.com/stalwart/archive/2010/12/16/1908302.html 之前一直写MVC的&#xff0c;本来就不大喜欢.NET中的服务器控件&#xff0c;里面的缺点很多&#xff0c;但有时候用起来方便&#xff0c;而且现在的项目开发中也要用到。 所以就找了好…

C++ AFX_MANAGE_STATE(AfxGetStaticModuleState())的作用

https://www.cnblogs.com/linlf03/archive/2011/11/16/2251318.html 从AFX_MANAGE_STATE(AfxGetStaticModuleState())说起https://blog.csdn.net/optman/article/details/332277 AFX_MANAGE_STATE(AfxGetStaticModuleState())的作用&#xff1a;用于模块切换时的状态保护&…

欧盟首个数据保护条例GDPR明日生效,你可能需要这份中文版的全文(丁晓东译) |上...

来源&#xff1a;腾讯研究院摘要&#xff1a;经过欧盟议会长达四年的讨论&#xff0c;欧盟《一般数据保护条例》&#xff08;General Data Protection Regulation&#xff0c;简称GDPR&#xff09;终于将在2018年5月25日也就是明天生效。经过欧盟议会长达四年的讨论&#xff0c…

UML和模式应用~面向对象分析和设计

OOD的原则和模式 应该如何为对象类分配职责&#xff08;responsibility&#xff09;&#xff1f;对象之间应该如何协作&#xff1f;什么样的类应该做什么样的事情&#xff1f;这些都是系统设计中的关键问题&#xff0c;OO设计之象征的职责驱动设计&#xff08;responsibility-…

C++ windows 平台的 Hook

From&#xff1a;https://www.jianshu.com/p/1cbde2276752 Windows Hook(钩子)函数详解&#xff1a;https://wenku.baidu.com/view/fd9088aaf46527d3250ce059.html 环境&#xff1a;vs 2019&#xff0c;添加Windows.h头文件。 核心函数&#xff1a;SetWindowsHookEx()&#x…

欧盟首个数据保护条例GDPR生效,你可能需要这份中文版的全文(丁晓东译) |下...

来源&#xff1a;人大法学院未来法治研究院 翻译&#xff1a;丁晓东&#xff0c;中国人民大学法学院副教授&#xff0c;中国人民大学法学院未来法治研究院副院长。中山大学电子与通信工程专业学士&#xff0c;北京大学、耶鲁大学法学博士、中国人民大学法学博士后。经过欧盟议…

AdoHelper使用MySQL存储过程示例

AdoHelper是MS DAAB中的一个抽象数据访问类&#xff0c;由它派生出的SqlHelper使用很广泛&#xff0c;PDF.NET数据开发框架内部按照AdoHelper的接口做了一个自己的实现&#xff0c;下面简单说明一下怎么用它使用存储过程。 PDF.NET的两个功能&#xff1a;SQL-MAP和OQL在我们的项…

安卓逆向_1 --- 逆向环境配置、APK 文件结构、APK 打包流程

哔哩哔哩&#xff1a;https://www.bilibili.com/video/BV1UE411A7rW?p1 Android 逆向工程师系统培训‹第九期›&#xff08; 课程目录 &#xff09;&#xff1a;https://ke.yijincc.com/course-21.htm 安卓逆向工程师&#xff1a;https://ke.yijincc.com/profession/1.htm 打…

马云最新演讲:未来10年,人类将面临AI、IoT和区块链等三大技术巨大挑战!

来源&#xff1a;互联网风云网5月26日午间消息&#xff0c;在第二十届中国科协年会开幕式上&#xff0c;阿里巴巴集团董事局主席马云出席并发表题为《因为相信&#xff0c;所以看见》的演讲。马云认为&#xff0c;未来10-20年以内&#xff0c;将有三大技术让人类面临挑战&#…

C++ STL简介(转)

一、STL简介 STL&#xff08;Standard Template Library&#xff0c;标准模板库)是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C中&#xff0c;但在被引入C之前该技术就已经存…

互联网大脑加速进化,2018年类脑智能巨系统在中国突然爆发

作者&#xff1a;刘锋 计算机博士&#xff0c;互联网进化论作者前言&#xff1a;2018年新年伊始&#xff0c;在短短的6个月里&#xff0c;包括腾讯超级大脑、浪潮企业大脑、360安全大脑、阿里ET大脑、华为城市神经网络、上海城市大脑、滴滴交通大脑、AIbee行业大脑不断涌现。在…

业务架构·应用架构·数据架构实战~架构实践全景图

1.战略、BA、DA、AA、TA五者的关系 BA&#xff08;Business Architecture&#xff09;&#xff1a;业务架构 DA&#xff08;Data Architecture&#xff09;&#xff1a;数据架构 AA&#xff08;Application Architecture&#xff09;&#xff1a;应用架构 TA&#xff08;Te…

安卓逆向_2 --- Androidkiller,apktool、dex2jar、jd-gui、jadx反编译工具 的 安装、设置及使用教程

From&#xff1a;https://www.52pojie.cn/thread-726176-1-1.html 爱盘 - 在线 PJ 工具包&#xff1a;https://down.52pojie.cn/ 哔哩哔哩 &#xff1a;https://www.bilibili.com/video/BV1UE411A7rW?p6 Android反编译工具的使用-Android Killer - 反编译美柚&#xff1a;h…

业务架构·应用架构·数据架构实战~TOGAF理论全景解读

1、解读TOGAF 9.2的BA、DA、AA、TA内容模型 企业架构&#xff08;Enterprise Architecture&#xff09;包含如下四种架构 BA&#xff08;Business Architecture&#xff09;&#xff1a;业务架构 DA&#xff08;Data Architecture&#xff09;&#xff1a;数据架构 AA&…

京东首次公布L4无人重卡细节!大型无人机和全机器人餐厅也要来了

安妮 发自 凹非寺量子位 出品 | 公众号 QbitAI摘要&#xff1a;京东CUBE大会上&#xff0c;京东一口气公布了一系列项目新进展。不仅推出L4级无人驾驶重型卡车、续航1000公里的无人飞机、机器人做主厨的JOY’S智慧餐厅3个全新项目&#xff0c;还总结了京东在智能零售、家居和智…