我只想制作一个第三方软件来检测.net应用程序,如果它是vb.net或c#并向其主要形式注入几行代码,则初始化组件部分。< / p>
我从哪里开始?
答案 0 :(得分:0)
在外部DLL
内“更改”代码并不容易,但是如果你想修改一个参数或者一个不容易做到的结果。拦截调用以修改输入或输出的过程称为“Hooking”。
在C#中有一个易于使用的库,可以为你完成大部分工作EasyHook,这将允许你截取调用并用你自己的结果替换返回值。
static IntPtr CreateFile_Hooked(
String InFileName,
UInt32 InDesiredAccess,
UInt32 InShareMode,
IntPtr InSecurityAttributes,
UInt32 InCreationDisposition,
UInt32 InFlagsAndAttributes,
IntPtr InTemplateFile)
{
try
{
Main This = (Main)HookRuntimeInfo.Callback;
lock (This.Queue)
{
if (This.Queue.Count < 1000)
This.Queue.Push(InFileName);
}
}
catch
{
}
// call original API...
return CreateFile(
InFileName,
InDesiredAccess,
InShareMode,
InSecurityAttributes,
InCreationDisposition,
InFlagsAndAttributes,
InTemplateFile);
}