다음은 어셈블리에서 리소스를 가져 오는 몇 가지 간단한 코드입니다. 당신은 그것이 얼마나 쉽고 안전한지 결정합니다 ...
class Program
{
static void Main(string[] args)
{
var assemblies = from file in args
let assembly = TryLoad(file)
where assembly != null
from rName in assembly.GetManifestResourceNames()
select new { assembly, rName };
foreach (var item in assemblies)
using (var rs = item.assembly
.GetManifestResourceStream(item.rName))
SaveTo(rs, item.rName);
}
static void SaveTo(Stream stream, string name)
{
var buffer = new byte[32*1024];
var bufferLen = 1;
using (var fs = new FileStream(name, FileMode.Create))
while (bufferLen > 0)
if ((bufferLen = stream.Read(buffer, 0, buffer.Length)) > 0)
fs.Write(buffer, 0, bufferLen);
}
static Assembly TryLoad(string filename)
{
if (string.IsNullOrEmpty(filename) ||
!File.Exists(filename))
return null;
try
{
var fullName = Path.GetFullPath(filename);
return Assembly.LoadFile(fullName);
}
catch (Exception ex)
{
Debug.WriteLine(ex);
return null;
}
}
}
정확히 어떻게 암호화 되었습니까? –
많은 도구가이를 수행 할 수 있습니다. 예를 들면 ILSpy가 그것을 할 수 있습니다. 자원을 쉽게 검색 할 수 있습니다. 그리고 .NET 어셈블리에서 내부적으로 사용하는 암호 해독 방법은 쉽게 되돌릴 수 있습니다. – BrainSlugs83