将DLL放入到资源中,运行时自动加载的小例子
程序员文章站
2023-12-22 10:19:34
今天在看到 一个小软件,考勤用的 attendancesheet_v_1_2,只有一个exe文件,绿色的随便考到哪里都可以运行。
顺手反编译后发现,他将需要的dll也放入...
今天在看到 一个小软件,考勤用的 attendancesheet_v_1_2,只有一个exe文件,绿色的随便考到哪里都可以运行。
顺手反编译后发现,他将需要的dll也放入到资源文件了,在启动的时候自动加载:
代码如下:
复制代码 代码如下:
internal static class program
{
// methods
[stathread]
private static void main()
{
application.enablevisualstyles();
application.setcompatibletextrenderingdefault(false);
appdomain.currentdomain.assemblyresolve += delegate (object sender, resolveeventargs senderargs) {
assembly executingassembly = assembly.getexecutingassembly();
string name = new assemblyname(executingassembly.fullname).name;
string str2 = new assemblyname(senderargs.name).name;
string str3 = name + "." + str2 + ".dll";
using (stream stream = executingassembly.getmanifestresourcestream(str3))
{
byte[] buffer = new byte[stream.length];
stream.read(buffer, 0, buffer.length);
return assembly.load(buffer);
}
};
application.run(new 考勤表生成工具());
}
}