zoukankan      html  css  js  c++  java
  • 通过rundll32运行C#DLL转储内存

    在网上看到一个用rundll32调用c#的dll的案例,感觉还不错,就拿来复现一下

    原文:https://blog.xpnsec.com/rundll32-your-dotnet/

    借助mimikatz的项目https://github.com/GhostPack/SafetyKatz

    一、VS加载项目

    由于SafetyKatz是.NET PE程序实现,所以在VS中的属性 -> 应用程序 -> 输出类型中更改为 “类库”

    二、修改代码

    首先需要将Main函数改成如下

    [DllExport]
    static void RunSafetyCatz()

    这时候已经定义好入口点之后,设置输出在父程序终端

    [DllImport("Kernel32.dll")]
    private static extern bool AttachConsole(int processId);


    AttachConsole(-1);

    如果不设置,在之后调用rundll32的时候是没有回显的

    最后的代码大致如下

    ...
     [DllExport]
            static void RunSafetyCatz()
            {
                AttachConsole(-1);
                string[] args;
    
                if (!IsHighIntegrity())
                {
                    Console.WriteLine("
    [X] Not in high integrity, unable to grab a handle to lsass!
    ");
                }
    ...

    三、Nuget下载DllExport依赖

    在工具->Nuget包管理中下载DllExport

     下载完后卸载掉,这时候在项目路径中会出现一个DllExport.bat,点击运行

     按照上述参数进行配置,然后点击Apply再重新加载项目到VS中

    照常编译后

     在项目的生成目录下会出现两个版本的dll

     

     选择自己系统相匹配的版本然后运行

     

  • 相关阅读:
    python day01
    Mac上安装pexpect
    raid
    SSL证书制作
    linux grep命令详解
    第一轮迭代小组成员分数分配
    M1事后分析报告(Postmortem Report)
    软件发布说明
    测试报告
    week 9 scenario testing
  • 原文地址:https://www.cnblogs.com/wh4am1/p/12244851.html
Copyright © 2011-2022 走看看