首页
论坛
课程
招聘
[原创]shellccode注入c#DLL到非托管程序
2022-5-9 14:37 3361

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

2022-5-9 14:37
3361

对非.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#程序。

1
第一步

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

1
第二步

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

1
第三步

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

 

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


看雪2022 KCTF 秋季赛 防守篇规则,征题截止日期11月12日!(iPhone 14等你拿!)

最后于 2022-5-9 14:39 被mudebug编辑 ,原因:
收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 3575
活跃值: 活跃值 (948)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
chinasmu 活跃值 2022-5-13 22:46
2
0
学习
游客
登录 | 注册 方可回帖
返回