通过C++学习倒车,但这条线有什么作用
Learning reversing via C++, but what does this line do?
typedef int(__stdcall *__MessageBoxA)(HWND, LPCSTR, LPCSTR, UINT);
正如我所说,我试图学习如何使用C++/Assembly对程序进行逆向工程,所以我正在浏览我在互联网上找到的一些开源项目。但是谁能解释一下这条线的作用?我在C++方面没有进步,这就是我通过来源的原因。
你的代码是C语言。所以它在C++中也能很好地编译。
让我们一步一步来。
- 下面是函数声明或原型或签名。
它返回一个 int,接受 4 个参数:
int __stdcall MessageBoxA(HWND, LPCSTR, LPCSTR, UINT);
- 这里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);
- 这里__MessageBoxA是一种类型,它有助于定义一个变量,该变量是指向函数的指针:
typedef int(__stdcall *__MessageBoxA)(HWND, LPCSTR, LPCSTR, UINT);
因此,可以声明指向函数变量的指针。
__MessageBoxA ptr1 = NULL;
编译器调用函数的方式__stdcall(参数是从左到右还是反向传递?返回值是通过堆栈内存还是 CPU 寄存器传递的?- 细节 大多数人不在乎只要来电者和被叫者同意
问候
相关文章:
- archive_read_support_filter_all() 有什么作用?
- 当我们为(;;) 写作时,它做了什么?for 循环中的双分号有什么作用?
- 这个递归函数有什么作用?运行时的复杂性是多少?
- DrawShadow 中的 Elevation 究竟有什么作用?
- 测试"stream >> char"有什么作用?
- "uFlags &= ~CHN_PANNING"命令有什么作用?
- GCC 的 -Wpsabi 选项究竟有什么作用?压制它意味着什么?
- int** a = new int*[n]();这个函数有什么作用?
- C++ 此函数调用之前的(void)有什么作用?
- i+=(i&-i) 有什么作用?它是便携式的吗?
- 这个size_t在 lambda 中有什么作用?C++代码
- 数组下标运算符 ([ ]) 对数组有什么作用?
- 结构之外的节点 * head 有什么作用?
- 重载括号运算符有什么作用?
- clang的"-Ofast"选项在实践中有什么作用,特别是对于与gcc的任何差异?
- std::make_unique_for_overwrite() 对 std::make_unique() 有什么作用?
- 运算符 delete[] 有什么作用?
- 下面的代码有什么作用?c++
- 这个陈述'p = I.ptr<uchar>(i);有什么作用?
- 这个嵌套的名称空间定义有什么作用