函数指针赋值

来源:互联网 发布:js 字符串转对象 编辑:程序博客网 时间:2024/05/22 12:21

在远程注入的时候特别需要给函数指针赋值。

 

有以下2种方法,

第一定义方法。主要用于给大量同参数的函数注入。

 

#include "stdafx.h"#include "windows.h"typedef int (_stdcall * p_MessageBoxA)(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType) ;int _tmain(int argc, _TCHAR* argv[]){p_MessageBoxA My_M;FARPROC Func_add;Func_add=GetProcAddress(LoadLibraryA("user32.dll"),"MessageBoxA");//获取该函数的地址My_M =(p_MessageBoxA) Func_add;My_M(NULL,"PLC报警!","对话框",MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON1|MB_SYSTEMMODAL); return 0;}

第二种方法 直接定义一个函数指针,并给这个指针赋值。

 

#include "stdafx.h"#include "windows.h"int (_stdcall * p_MessageBoxA)(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType) ;int _tmain(int argc, _TCHAR* argv[]){FARPROC Func_add;Func_add=GetProcAddress(LoadLibraryA("user32.dll"),"MessageBoxA");//获取该函数的地址p_MessageBoxA =(int (__stdcall *)(HWND,LPCSTR,LPCSTR,UINT))Func_add;p_MessageBoxA(NULL,"PLC报警!","对话框",MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON1|MB_SYSTEMMODAL); return 0;}