首页
社区
课程
招聘
[原创]记录一次日常学习笔记
发表于: 2020-6-3 17:26 5929

[原创]记录一次日常学习笔记

2020-6-3 17:26
5929

内联汇编是C/C++的一个重要特性,内联汇编顾名思义是可以在C/C++ 语法内嵌套使用汇编指令,使用内联汇编的好处就是可以更灵活便捷,我觉得尤其是在做逆向这一块,简直不要太爽。

内联汇编Demo:

运行结果
在这里插入图片描述

以上是32 位C/C++ 使用内联汇编的小Demo,在x32 开发中,使用__asm 关键字就可以在其代码块内嵌入x32 汇编代码,好不方便。但是突然发现,x64 开发中,不支持这种内联汇编,尴尴尬尬,那我要是逆向一个x64 程序的时候怎么调用CALL(其实可以使用函数指针),而且也不灵活,不方便呀。好在有属于x64 的“内联汇编”

接下来,可以写入汇编指令
注:

汇编格式
```
.CODE ;这是开始

这里我说一下我的思路,之前x64 程序我调用call 都是使用函数指针来调用,这种方式虽然可以很方便的调用call,但是无奈不灵活(也可能是因为我太太太太太太太太太太菜)只能去使用已有的功能,所以这次使用汇编调用call,实现功能的修改,以下所有程序都是自写测试用:

项目大概:
在这里插入图片描述
运行效果:
运行前:
在这里插入图片描述
运行后:
在这里插入图片描述

3.1. ASM

3.2 CPP

github 地址:https://github.com/JiaJinRong12138/TestAsmX64.git
[CSDN 地址]
(https://blog.csdn.net/qq_40535097/article/details/106524259)

 
 
 
 
#include <stdio.h>
#include <windows.h>


int asmFunc()
{
    int a = 0;
    __asm
    {
        // 变量a 地址复制给eax
        mov eax, a
        // eax 地址做加点运算
        add eax, 0x1213
        // 将计算后的值传递a
        mov a, eax
    }
    // 返回eax
    return a;

}

int main()
{
    printf("0x%X\r\n", asmFunc());
    system("pause");

}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 4
支持
分享
最新回复 (2)
雪    币: 922
活跃值: (1813)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
yes,学习了,建议大佬改一下标题
2023-1-29 15:45
0
雪    币: 548
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
yes
2023-1-30 14:14
0
游客
登录 | 注册 方可回帖
返回
//