威武的冰棍 · django ListView的使用 ...· 8 月前 · |
玩足球的人字拖 · 使用php- java ...· 1 年前 · |
文质彬彬的香槟 · HttpWebRequest ...· 1 年前 · |
酒量大的篮球 · ORA-01654错误-腾讯云开发者社区-腾讯云· 1 年前 · |
我正在编写一个.NET库,将托管DLL注入外部进程。我目前的做法是:
CreateRemoteThread
强制目标进程在非托管引导DLL上调用
LoadLibrary
。从这一点开始,我们在目标进程中执行代码。然后,
IInjectionPayload
.
payload.Run()
.
ExecuteInDefaultAppDomain
,后者在托管助手DLL中执行一个方法。
AppDomain.CreateInstanceFromAndUnwrap
将执行传递到我的有效负载DLL中,将结果转换为
payload.Run()
.
的思想是,我的有效负载DLL公开了一个实现
IInjectionPayload
的类,因此助手DLL可以简单地调用
payload.Run()
.
我是这样做的,这样就可以通过调用
AppDomain.Unload
(在发送信号清理它之后)完全卸载有效负载代码。
这种方法有效--我的有效负载DLL中的类在目标进程中被实例化,因此可以执行代码--但我不能将
CreateInstanceFromAndUnwrap
返回的对象转换为
IInjectionPayload
;它引发以下异常:
无法将透明代理强制转换为“blah.Blah.IjectionPayload”。
我尝试过使用
CreateInstanceAndUnwrap
,
Activator.CreateInstanceFrom
和
Object.Unwrap
,但这两个方法都会引发相同的异常。
我的有效负载类的签名是:
public class Program : MarshalByRefObject, IInjectionPayload
我很难理解,因为有效负载DLL肯定会被加载,并且类正按预期被实例化。任何帮助都将不胜感激。
发布于 2009-09-17 12:43:27
在这里找到了解决这个问题的方法: http://www.west-wind.com/WebLog/posts/601200.aspx
它看起来像.NET框架中的一个bug。解决方案是向
AppDomain.CurrentDomain.AssemblyResolve
添加一个处理程序,该处理程序在
args.Name
处手动加载和返回程序集。然后,您可以调用
CreateInstanceFromAndUnwrap
而不引发异常。
https://stackoverflow.com/questions/1437831
复制相似问题
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
酒量大的篮球 · ORA-01654错误-腾讯云开发者社区-腾讯云 1 年前 |