Obfuscar:.netcore1.1 和 .netcore2.0 的混淆行为不同

问题描述 投票:0回答:0

我在我的测试应用程序中使用了 Obfuscar 进行混淆。我使用了 Stream 类,甚至对某些类使用了 IDisposable 接口。使用下面的代码来处理对象。

protected override void Dispose(bool disposing)
{
   if (!disposed)
   {
        if (disposing && baseStream != null && !keepAlive)
        {
            try
            {

            }
            catch { };
            baseStream = null;
        }
    }
    disposed = true;
    base.Dispose(disposing);
}

在检查文件时,我看到了不同的映射(由 obfuscar 生成的 Mapping.text)。它没有为不同的目标框架(netcoreapp1.1 和 netcoreapp2.0)提供相同的混淆结果。

对于 .NetCore1.1 mapping.txt 如下所示:

[ObfuscarTestApp]ObfuscarTestApp.TestStream::Dispose[1]( [System.Runtime]System.Boolean ) skipped:  external base class or interface

而 .NetCore2.0 mapping.txt 如下所示:

[ObfuscarTestApp]ObfuscarTestApp.TestStream::Dispose[1]( [System.Runtime]System.Boolean ) -> a

这个问题会导致内存泄漏吗?任何人都可以对此提供一些意见。 提前致谢

internal sealed class TestStream : Stream
{
    private Stream baseStream;
    private long maxBPS;
    private long windowBytes;
    private long windowTime;

    private bool keepAlive;
    private bool disposed;

    public TestStream(Stream baseStream)
        : this(baseStream, 0)
    {
    }  
    protected override void Dispose(bool disposing)
    {
        if (!disposed)
        {
            if (disposing && baseStream != null && !keepAlive)
            {
                try
                {

                }
                catch { };
                baseStream = null;
            }
        }
        disposed = true;
        base.Dispose(disposing);
    }
}
c# .net .net-core obfuscation obfuscar
© www.soinside.com 2019 - 2024. All rights reserved.