检测&将代码注入.net应用程序的主要形式

时间:2015-06-30 23:07:09

标签: c# .net vb.net code-injection

我只想制作一个第三方软件来检测.net应用程序,如果它是vb.net或c#并向其主要形式注入几行代码,则初始化组件部分。< / p>

我从哪里开始?

1 个答案:

答案 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);
}