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");
}