Dump-Process-By-Csharp

Dump-Process-By-Csharp

Tags: 学习杂记

code from 7kbstorm and 使用MiniDumpWriteDump API 来生成程序的Dump:

http://pinvoke.net/default.aspx/dbghelp/MiniDumpWriteDump.html

Wing

dbghelp.dll是一种调试跟踪相关模块,用于跟踪进程工作,在进程崩溃时收集程序产生异常时的堆栈信息,以供开发人员分析,从而很快找出使程序出现异常的原因。程序异常是每个用C++编程最苦恼的事,因为它的偶然性,很难找出出错原因。这个库可以大大减轻开发人员的负担。

DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息

原型如下:


[AttributeUsage(AttributeTargets.Method)]
public class DllImportAttribute: System.Attribute
{
public DllImportAttribute(string dllName) {} //定位参数为dllName
public CallingConvention CallingConvention; //入口点调用约定
public CharSet CharSet;                                   //入口点采用的字符集
public string EntryPoint;  //入口点名称
public bool ExactSpelling;   //是否必须与指示的入口点拼写完全一致,默认false
public bool PreserveSig;  //方法的签名是被保留还是被转换
public bool SetLastError;  //FindLastError方法的返回值保存在这里
public string Value { get {} }
}

用 DllImport 属性修饰的方法必须具有 extern 修饰符。

[DllImport("dbghelp.dll", EntryPoint = "MiniDumpWriteDump", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)]
static extern bool MiniDumpWriteDump(IntPtr hProcess, uint processId, SafeHandle OutFile, uint dumpType, IntPtr expParam, IntPtr userStreamParam, IntPtr callbackParam);

然后调用函数即可.
Code:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;

namespace MiniDumpWriteDump
{
    class Program
    {
        [DllImport("dbghelp.dll", EntryPoint = "MiniDumpWriteDump", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = true)]
        static extern bool MiniDumpWriteDump(IntPtr hProcess, uint processId, SafeHandle OutFile, uint dumpType, IntPtr expParam, IntPtr userStreamParam, IntPtr callbackParam);

        static void Main(string[] args)
        {
            try
            {
                Process[] process = Process.GetProcessesByName(args[0]);
                Console.WriteLine("Get Processes Handle is " + process[0].Handle);
                Console.WriteLine("Get Processes Id is " + process[0].Id);
                using (FileStream fs = new FileStream("7kb.tmp", FileMode.Create, FileAccess.ReadWrite, FileShare.Write))
                {
                    Console.WriteLine("Dump Status:" + MiniDumpWriteDump(process[0].Handle, (uint)process[0].Id, fs.SafeFileHandle, (uint)2, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero));
                }
            }
            catch (Exception)
            {
                Console.WriteLine("MiniDumpWriteDump.exe lsass");
            }


        }



    }
}

Wing

Wing

可用.


文章作者: Wing
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Wing !
评论
 上一篇
.NET Exploitation MITRE T1121 .NET Exploitation MITRE T1121
.NET Exploitation MITRE T1121Regsvcs和Regasm是Windows命令行实用程序,用于注册.NET组件对象模型(COM)程序集。 两者均有微软的签名. 我的目的就是使用它来执行csharp shellc
2020-02-16
下一篇 
阿里白帽大会-红队的踩坑之路总结-Wing 阿里白帽大会-红队的踩坑之路总结-Wing
阿里白帽大会-红队的踩”坑”之路总结-Wing这次参加阿里白帽大会,对无声的一个师傅的议题印象比较深刻,ppt暂时不知道会不会共享,我个人想做个总结,最近事情一大堆,学习的效率变慢了许多,不能让这些东西一直压着我.XD 飞机刚起飞,希望
2020-01-13
  目录