typedef int(__stdcall *__MessageBoxA)(HWND, LPCSTR, LPCSTR, UINT);
私が言ったように、C++ / アセンブリを使用してプログラムをリバース エンジニアリングする方法を学ぼうとしているので、インターネットで見つけたいくつかのオープン ソース プロジェクトを調べています。しかし、誰かがこの行が何をするのか説明できますか? 私は C++ の上級者ではありません。そのため、ソースを調べています。
あなたのコードはC言語です。したがって、C++ でも問題なくコンパイルされます。
一歩一歩進みましょう。
int __stdcall MessageBoxA(HWND, LPCSTR, LPCSTR, UINT);
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);
typedef int(__stdcall *__MessageBoxA)(HWND, LPCSTR, LPCSTR, UINT);
したがって、関数変数へのポインターを宣言できます。
__MessageBoxA ptr1 = NULL;
__stdcall は、関数がコンパイラによって呼び出される方法です (パラメーターは左から右または逆に渡されますか? 戻り値はスタック メモリまたは CPU レジスタを介して渡されますか?) - 呼び出し元と呼び出された人が一致する限り、ほとんどの人は気にしません。
よろしく