x64匯編第一講,Vs系列配置x64環境與x86環境


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代碼截圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM