Net内存程序集通用脱壳机实现原理(一注入)

简介: 正如前面提到的DotNet 程序的脱壳和普通PE文件的脱壳是有密切关系的。传统PE文件dump大部分都是进程外dump,这里我们介绍的DotNet程序集的脱壳使用进程内dump。所以第一步就是注入问题,如何让我们的程序在目标进程内运行?传统的win32 注入dll,相信大家都熟悉了吧,得益于C++/CLI的特性,我们能依靠传统的方式注入我们的程序到目标进程中。

正如前面提到的DotNet 程序的脱壳和普通PE文件的脱壳是有密切关系的。
传统PE文件dump大部分都是进程外dump,这里我们介绍的DotNet程序集的脱壳
使用进程内dump。

所以第一步就是注入问题,如何让我们的程序在目标进程内运行?
传统的win32 注入dll,相信大家都熟悉了吧,
得益于C++/CLI的特性,我们能依靠传统的方式注入我们的程序到目标进程中。

用VS2005新建一个mfc dll,然后在工程属性里面开启 clr支持,这样在这个dll就能使用 CLR 了。
而这个dll又能像传统dll一样被注入到目标进程中。

注入实现原理请参考这里
http://bbs.pediy.com/showthread.php?s=&threadid=21123
ShellCode的另外一种玩法(远程线程注入ShellCode)

注入启动之后就会显示我们的dumper 对话框了。
这里我用反射枚举出当前进程中所有的程序,将其路径显示在列表中。

界面可以参考前一篇帖子的贴图。


目录
打赏
0
0
0
0
6
分享
相关文章
Benchmark.NET:让 C# 测试程序性能变得既酷又简单
Benchmark.NET是一款专为 .NET 平台设计的性能基准测试框架,它可以帮助你测量代码的执行时间、内存使用情况等性能指标。它就像是你代码的 "健身教练",帮助你找到瓶颈,优化性能,让你的应用跑得更快、更稳!希望这个小教程能让你在追求高性能的路上越走越远,享受编程带来的无限乐趣!
176 13
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
107 1
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
结构体和类在内存管理方面的差异对程序性能有何影响?
【10月更文挑战第30天】结构体和类在内存管理方面的差异对程序性能有着重要的影响。在实际编程中,需要根据具体的应用场景和性能要求,合理地选择使用结构体或类,以优化程序的性能和内存使用效率。
内存程序崩溃
【10月更文挑战第13天】
176 62
.NET 内存管理两种有效的资源释放方式
【10月更文挑战第15天】在.NET中,有两种有效的资源释放方式:一是使用`using`语句,适用于实现`IDisposable`接口的对象,如文件流、数据库连接等,能确保资源及时释放,避免泄漏;二是手动调用`Dispose`方法并处理异常,提供更灵活的资源管理方式,适用于复杂场景。这两种方式都能有效管理资源,提高应用性能和稳定性。
133 2
.NET 内存管理两种有效的资源释放方式
【10月更文挑战第14天】在 .NET 中,`IDisposable` 接口提供了一种标准机制来释放非托管资源,如文件句柄、数据库连接等。此类资源需手动释放以避免泄漏。实现 `IDisposable` 的类可通过 `Dispose` 方法释放资源。使用 `using` 语句可确保资源自动释放。此外,.NET 的垃圾回收器会自动回收托管对象所占内存,提高程序效率。示例代码展示了如何使用 `MyFileHandler` 类处理文件操作并释放 `FileStream` 资源。
107 2
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
311 22
|
5月前
|
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
245 0
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测
本文介绍了使用MTuner软件进行Qt MinGW编译程序的内存泄漏检测的方法,提供了MTuner的下载链接和测试代码示例,并通过将Debug程序拖入MTuner来定位内存泄漏问题。
114 4
基于MTuner软件进行qt的mingw编译程序的内存泄漏检测