【问题标题】:Code Injection to set and extract data from MFC Application代码注入以从 MFC 应用程序中设置和提取数据
【发布时间】:2015-04-15 20:16:47
【问题描述】:

对于我的课堂项目,我必须将代码注入一个带有几个按钮和标签的简单随机分配的应用程序中。经过一番研究,我能够将该应用程序识别为 C++ MFC 应用程序(仍然不能 100% 确定)。

我被教导如何将 C# dll 注入 .Net 应用程序以获取和设置数据。但是,我不知道它是否适用于 MFC 应用程序。我能够将 C# dll 注入 MFC 应用程序,甚至启动一个消息框。我不太了解 C++,无法获取/设置数据。

我是否可以使用 C# 在 C++ MFC 应用程序中获取/设置数据,或者我是否已将 C++ dll 注入 MFC 应用程序并以某种方式使用它来获取/设置几个按钮和标签?


更新 1:我意识到我的 C++ 假设可能不正确。请参考这个link

【问题讨论】:

    标签: c# c++ dll mfc code-injection


    【解决方案1】:

    听起来像是一个奇怪的类项目,但是您可以使用 pinvoke 从 c# 中使用 winapi 将自己的 dll 注入其他进程。

    用于 dll 注入的主要方法是 OpenProcess、WriteProcessMemory、CreateRemoteThreadEx、VirtualAllocEx、GetProcAddress。

    像下面这样调用它们:

    [DllImport("kernel32.dll")]
    public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);
    

    How to inject a dll into a remote process c#

    How to inject a managed assembly DLL

    【讨论】:

    • 我已经知道如何将 C# dll 注入 MFC 应用程序。如何从应用程序中调用任何 MFC GUI 属性?在 .Net 应用程序中,我会通过 Applications.OpenForm 或 Applications.Current.Windows 调用。我对c++一无所知。
    • 您能否举一些例子来说明“GUI 属性”是什么意思。MFC 是围绕 Win32 API 构建的。它对采用 HWND(窗口句柄)的参数进行操作。例如,设置文本对于静态控件,您可以调用 SerWindowText API 或 PostMessage(hand, WM_TEXT, ...)。
    • @DavidChing 在 C# 中,GUI 属性如 Textbox.Text。当我第一次学习 C++ 时,他们从未教过任何 GUI,只是控制台。是否有我可以使用注入的 DLL 轮询的静态句柄?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多