-
-
[原创]shellccode注入c#DLL到非托管程序
-
-
[原创]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
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2022-5-9 14:39
被mudebug编辑
,原因: