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

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

2020-6-3 17:26
6244

内联汇编是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 地址:943K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6v1K9h3q4v1K9h3&6d9L8$3&6Y4x3e0t1I4x3K6S2Q4x3V1k6f1k6i4y4@1b7i4y4E0h3o6j5@1i4K6u0W2k6$3W2@1
[CSDN 地址]
(ea1K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8Y4q4I4i4K6g2X3y4o6l9#2x3K6f1H3z5e0N6Q4x3V1k6S2M7Y4c8A6j5$3I4W2i4K6u0r3k6r3g2@1j5h3W2D9M7#2)9J5c8U0p5H3y4U0f1J5y4o6t1#2z5g2)9J5z5b7`.`.

 
 
 
 
#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");

}

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

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