sharp重建混淆的代码



我正在使用nlog创建具有不同loglevels foreach类的不同记录器。每个登录都包含类和方法的名称。

我还使用PostSharp来创建我的方法代码。创建的代码基本上获取当前类的记录器并写入logentry。

我的问题是我需要混淆我的程序并想记录班级的未碰撞名称。

混淆我的程序后,它可以正常工作,但记录了混淆的classNames。

我搜索了网络以寻求解决方案,并从PostSharp找到了此博客:

http://www.postsharp.net/blog/post/post/whate28099s-new-inew-inew-in-postsharp-21-support-for-obfuscation-p.-p.-p.-post-28dotfuscator)

问题是我不知道如何实现此"后吞噬步骤(由PostSharp实施)"。

我知道如何创建一个MSBUILD项目文件以及如何使用msbuild.exe运行它,但我不知道" PostSharp.addin.postobfuscation.targets"one_answers" PostObfuscationRemap"是什么?

我希望我正确地描述了我的问题,你们中的一个有答案。

您发现的PostSharp的博客文章实际上是关于解决不同的问题 - PostSharp 2.1本身与混淆工具的不兼容。PostSharp 3.0 已经与混淆工具兼容,并且博客文章与这些较新版本无关。

您的问题是不同的 - 我怀疑您的记录代码在运行时访问了类的名称,因此会收到一个混淆的类名称。您应该尝试在编译时准备一个记录格式字符串,并将其存储在该方面的字段中。这样,您可以将原始类名称存储在字符串中并在运行时访问。

[Serializable]
public sealed class TraceAttribute : OnMethodBoundaryAspect
{
    private string enteringMessage;
    public override void CompileTimeInitialize(MethodBase method, AspectInfo aspectInfo)
    {
        string methodName = method.DeclaringType.FullName + method.Name;
        this.enteringMessage = "Entering " + method.DeclaringType.FullName + method.Name;
    }
    public override void OnEntry(MethodExecutionArgs args)
    {
        Console.WriteLine(this.enteringMessage);
    }
}

感谢您的答案,您对博客文章不再相关的正确。

我现在正在尝试较新版本的PostSharp,并且重新映射似乎现在可以使用。

但是我的代码不是问题。我的代码看起来实际上非常相似。我错过了一些文件,例如.psproj和globalaspect.cs文件。我发现这是我的实际问题。

我错过了这些文件,因为我无法使用Nuget自动安装PostSharp,而Nuget通常会创建这些文件。

相关内容

  • 没有找到相关文章

最新更新