我想使用 dll 注入监控外部程序我设法按照本教程进行操作,它可以工作 http://www.codeproject.com/Articles/4118/API-Monitoring-Unleashed
现在我希望能够在不知道外部程序签名的情况下监视外部程序中的任何函数我希望能够复制发送到原始函数的参数并将它们传递给包装函数而不是返回原始函数
怎么做?我宁愿不使用汇编语言,因为我不习惯它。
这是一些代码来演示我正在尝试做的事情:
#include "stdafx.h"
void (*pointerToOriginalFunctionForOverride)(...);
void (*copyPointerOfOriginalFucntion)(...);
//let say we dont know the signature of this function
void _cdecl originalFunction(char *s)
{
printf("%s",s);
}
void functionWrapper(void *first)
{
printf("Some debug info\n");
//HERE IS MY PROBLEM
copyPointerOfOriginalFucntion(?????????????);
}
int _tmain(int argc, _TCHAR* argv[])
{
pointerToOriginalFunctionForOverride = (void (*)(...))(&functionWrapper);
copyPointerOfOriginalFucntion = (void (*)(...))(&originalFunction);
//let say this line runs from an external program that we injected a dll into
pointerToOriginalFunctionForOverride("some text in external program");
}