-
-
[原创]记录一次日常学习笔记
-
发表于:
2020-6-3 17:26
5930
-
内联汇编是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");
}
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!