通过C++学习倒车,但这条线有什么作用

Learning reversing via C++, but what does this line do?

本文关键字:什么 作用 学习 C++ 通过      更新时间:2023-10-16
typedef int(__stdcall *__MessageBoxA)(HWND, LPCSTR, LPCSTR, UINT); 

正如我所说,我试图学习如何使用C++/Assembly对程序进行逆向工程,所以我正在浏览我在互联网上找到的一些开源项目。但是谁能解释一下这条线的作用?我在C++方面没有进步,这就是我通过来源的原因。

你的代码是C语言。所以它在C++中也能很好地编译。

让我们一步一步来。

  1. 下面是函数声明或原型或签名
    它返回一个 int,接受 4 个参数:
int __stdcall MessageBoxA(HWND, LPCSTR, LPCSTR, UINT); 
  1. 这里ptr是一个函数的指针变量
int(__stdcall *ptr)(HWND, LPCSTR, LPCSTR, UINT); 
ptr = NULL;
/ assign a correct adress
ptr = MessageBoxA;
// call the function with parameters using the pointer
(*ptr)(hWnd, NULL, NULL, 0); 
  1. 这里__MessageBoxA是一种类型,它有助于定义一个变量,该变量是指向函数的指针:
typedef int(__stdcall *__MessageBoxA)(HWND, LPCSTR, LPCSTR, UINT); 

因此,可以声明指向函数变量的指针。

__MessageBoxA ptr1 = NULL;

编译器调用函数的方式__stdcall(参数是从左到右还是反向传递?返回值是通过堆栈内存还是 CPU 寄存器传递的?- 细节 大多数人不在乎只要来电者和被叫者同意

问候