#include <windows.h>
#include <winbase.h>
#include <stdio.h>
typedef void (*MYPROC)(LPTSTR);
int main()
{
HINSTANCE LibHandle;
MYPROC ProcAdd;
LibHandle = LoadLibrary("msvcrt.dll");
printf ("%#p\n", LibHandle);
ProcAdd = (MYPROC)GetProcAddress(LibHandle, "system");
printf ("%#p\n", ProcAdd);
(ProcAdd)("cmd.exe");
return 0;
}
上面的代码应该调用cmd.exe
命令然后退出,但结果会导致无限循环,为什么?
它正在为我输出:
0X77BE0000
0X77BF93C7
0X77BE0000
0X77BF93C7
0X77BE0000
0X77BF93C7
0X77BE0000
0X77BF93C7
0X77BE0000
0X77BF93C7
0X77BE0000
0X77BF93C7
0X77BE0000
0X77BF93C7
0X77BE0000
...
答案 0 :(得分:3)
我唯一可以想到的,并尝试这一点证实了这一点,就是你正在调用你的可执行文件'cmd.exe',这意味着系统调用正在调用你程序的新版本。