汇编 内联汇编与混合编程 (逆向分析)

目录

内联汇编与混合汇编的原理

底层原理:

x86与x64架构差异

X86内联汇编

X64混合编程


内联汇编与混合汇编的原理

  • 内联汇编:在C++中嵌入汇编代码,直接操作硬件资源,如寄存器和内存。

    • 示例:x86内联汇编.cpp中使用_asm块插入x86指令。
  • 混合汇编:C++与独立.asm文件结合,通过extern "C"调用汇编函数。

    • 示例:x64.cpp调用myasm.asm中的myadd函数,实现64位加法。

底层原理:

  1. 内联汇编:编译器(如Visual Studio)解析_asm块,将汇编指令直接转换为机器码,与C++代码整合。开发者手动管理寄存器和堆栈。

  2. 混合汇编:汇编代码编译为.obj文件,链接器合并C++和汇编符号。调用约定定义参数传递规则。

  3. 底层交互:通过寄存器(eax/rax)和堆栈传递数据。x86使用32位寄存器,x64使用64位并遵循Microsoft x64约定。

  4. 编译流程:预处理头文件,编译生成.obj,链接整合符号,生成可执行文件。

  5. 执行步骤:CPU取指、解码、执行、写回结果,推进程序计数器。

x86与x64架构差异

x86:32位寄存器(如eax、ebx),栈帧由esp和ebp管理,调用约定如__stdcall或__cdecl(参数压栈)。

x64:64位寄存器(如rax、rcx),新增r8/r9,栈帧依赖rsp;Microsoft x64约定前4参数通过rcx/rdx/r8/r9,其余压栈,调用者清理;栈16字节对齐(x86为4字节)。

底层原理:

  1. 寄存器扩展:x64将x86寄存器扩展为64位,提高数据处理效率。

  2. 调用约定优化:x64优先寄存器传参,减少内存访问,提升性能。

  3. 内存对齐:确保数据访问效率,避免对齐惩罚。

  4. 架构演进:x64兼容x86,但引入新指令集和ABI(应用二进制接口)。

  5. 兼容步骤:编译器根据目标架构生成代码,链接时检查约定一致性。

X86内联汇编

复制代码
#include <iostream>
#include<windows.h>

// 实现两个整数加法 
int myadd(int a, int b) {
	return a + b;
}

int main() {
	int nNum = 0;
	_asm {
		xor eax,eax
		mov eax,10
		add eax,nNum
		mov nNum,eax
		push 1
		push 2
		call myadd
		add esp,8


	}
	system("pause");
	return 0;
}

X64混合编程

  • 直接调用这个asm文件就可以了链接器会带我们找到的

    /*
    1 函数声明 myadd
    2 声明外部汇编函数 计算两个64位整数和
    3 通过extren c链接汇编实现myadd
    4 C++ 与汇编通过链接器整合,遵循 Microsoft x64 调用约定
    5
    */
    extern "C" long long myadd(long long llNumberA, long long llNumberB);

    int main()
    {
    long long llRes = myadd(1, 2);
    std::cout << llRes << std::endl;

    复制代码
      system("pause");
      return 0;

    }

asm文件

复制代码
.code
myadd proc
	sub rsp,28h
	xor rax,rax
	add rax,rcx
	add rax,rdx
	add rsp,28h
	ret
myadd endp
end

相关推荐
2601_962296513 天前
C/C++:编译全过程——预处理、编译、汇编、链接(包含预处理指令:宏定义,文件包括、条件编译)
汇编·预处理·链接·c/c++·编译过程
Freak嵌入式3 天前
Pico PIO 汇编语法深度详解:标识符、指令、伪指令全解析
汇编·stm32·单片机·嵌入式硬件·fpga开发·硬件架构
kyle~9 天前
x86 汇编LOCK前缀 --- 硬件架构向软件提供的核心同步原语
汇编·c++·性能优化·硬件架构·实时系统
典典分享指南9 天前
飞书 + 企业微信 + 微信文档多端协同实践指南
汇编·flask·intellij-idea·fastapi
极客互动API14 天前
企业微信 iPad 协议服务搭建与 AI 回调实战
网络·汇编·人工智能·微信·企业微信·ipad
wechatbot88819 天前
极客互动企业微信 SCRM 私域运营实战效果全景
大数据·汇编·微信·自动化·企业微信·rpa
祈禾24 天前
计算机组成原理之编译、汇编、链接、解释
开发语言·汇编·笔记·学习
水饺编程1 个月前
AT&T 汇编语言学习笔记开篇语
c语言·汇编·c++
iCxhust1 个月前
8088单板机VScode集成开发环境使用方法二(汇编版)
汇编·单片机·微机原理·8088单板机
·薯条大王1 个月前
经济实惠玩云服务器|一台云服务器多人共用,子账号配置教程
java·linux·运维·服务器·汇编·c++·python