有没有办法在 C# 中解压 Fody-Costura 生成的 exe?

逆向工程 解压 C# 可执行程序 视窗 10 网络间谍
2021-06-23 18:51:23

有一个程序可能是RAT,我想查看源代码。在 dnSpy 中打开 .exe 后,我可以看出它是用 Fody-Costura 压缩的。( https://github.com/Fody/Costura ) 有没有办法解压缩文件?如果是这样,如何?

1个回答

嵌入式程序集在使用之前需要解压缩,以便您可以检查程序集中执行此操作的所有代码。只需去Costura.AssemblyLoader检查它是如何完成的。下面是一个使用Costura.Fody.

Assembly executingAssembly = Assembly.GetExecutingAssembly();
if (fullName.EndsWith(".compressed"))
{
    using (Stream manifestResourceStream = executingAssembly.GetManifestResourceStream(fullName))
    {
        using (DeflateStream deflateStream = new DeflateStream(manifestResourceStream, CompressionMode.Decompress))
        {
            MemoryStream memoryStream = new MemoryStream();
            AssemblyLoader.CopyTo(deflateStream, memoryStream);
            memoryStream.Position = 0L;
            return memoryStream;
        }
    }
}

您可以修改此代码以通过添加一行File.WriteAllBytes(fullName.Replace(".compressed", ""), memoryStream.ToArray());或仅提取 dll 资源并通过 python 或其他任何可以执行 deflate 的方法在外部解压缩来将解压缩的程序集保存到磁盘