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

本文关键字:应用程序 net 注入 amp 代码 检测 | 更新日期: 2023-09-27 18:00:37

简单地说,我想制作一个第三方软件来检测.net应用程序(如果是vb.net或c#),并在其主窗体中注入几行代码,初始化组件。

我从哪里开始?

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

在外部DLL中"更改"代码并不容易,但是,如果您想修改正在进行的参数或返回的结果,这并不难。拦截调用以修改输入或输出的过程称为"挂钩"。

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