[原创]shellccode注入c#DLL到非托管程序-编程技术-看雪论坛-安全社区|安全招聘|bbs.pediy.com
2022-10-7 23:13:49 Author: bbs.pediy.com(查看原文) 阅读量:36 收藏

[原创]shellccode注入c#DLL到非托管程序

2022-5-9 14:37 3057

[原创]shellccode注入c#DLL到非托管程序

对非.net程序注入一个c#写的dll

常规做法是先注入一个C++写的dll然后在c++Dll中加载.net DLL
对上面的方法实现可以翻我之前发的帖子有代码可以抄
弊端:会在进程中遍历到c#的DLL而且还额外多了一个c++的DLL

此处对这个注入做一次优化
用shellcode的方法丢弃c++DLL工程
然后隐藏c#dll 防止被PC Hunter这样的工具直接在dll列表查看到
最终实现的效果是 原进程只看到.net环境被加载到目标进程。
自己写的c#dll通过字节形式被加载无路径。

InjectAssembly 为注入器
TragetAssembly2 注入的C#程序。

通过OpenProcess目标程序
申请内存
写入shellcode
写入c#dll
写入shellcode需要的函数地址
创建CreateRemoteThread 。
以上都是基础的注入方法

shellcode 执行过程
获取.net环境初始化API
初始化.net环境 v4.0.30319
通过pDefaultAppDomain->raw_Load_3接口调用加载byte[]
再获取入口函数,调用c#dll入口
注入完毕

c#DLL中在入口函数实现自己想要做的事情
c#dll如果使用了大量第三方库建议使用Costura.Fody包装一下
wpf我自己加载失败了。用winfrom吧
c#的dll实际上是一个控制台程序。

代码地址
https://github.com/mudebug77/InjectAssembly

看雪招聘平台创建简历并且简历完整度达到90%及以上可获得500看雪币~

最后于 2022-5-9 14:39 被mudebug编辑 ,原因:


文章来源: https://bbs.pediy.com/thread-272660.htm
如有侵权请联系:admin#unsafe.sh