gpt4 book ai didi

vb.net - .NET 混淆 [SmartAssembly]

转载 作者:行者123 更新时间:2023-12-02 05:41:28 27 4
gpt4 key购买 nike

这是一个有关 SmartAssembly 和 .NET 应用程序的简单问题。 - 我目前正在试验该软件,它似乎混淆了代码,但 My.Settings 仍然以纯文本形式可见?

因此,在混淆我的代码(使用 .NET 反射器)之前,我几乎可以看到所有内容。包括 My.Settings 类,其中包含大量信息,例如密码、IP、MySQL 连接字符串等。

所以我使用 RedGate 的 SmartAssembly 混淆了代码,果然所有类/函数等都以随机符号出现,但是有几个项目(同样包括 My.Settings)保持不变?

SmartAssembly 屏幕截图 enter image description here

.NET 反射器中的混淆结果 enter image description here

最佳答案

大多数混淆工具的功能都有局限性,这就是其中之一。设置值不存储为字符串文字或支持字段,而是存储为属性值:

Global.System.Configuration.DefaultSettingValueAttribute("bar")> _
Public Property Foo() As String
Get
Return CType(Me("Foo"), String)
End Get
Set(value As String)
Me("Foo") = value
End Set
End Property

VB/VS 生成属性 getter/setter,但正如您所看到的,它使用属性来存储初始值,而不是:

Private _foo As String = "bar"

在大多数情况下,没有理由隐藏属性中使用的字符串内容,因为它们通常是向编译器提供有关类或属性的指令:

<Description("Bar String")>
<DefaultValue("bar")>
<DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)>
Property BarString As String

这些属性文字都不需要隐藏,因为大多数属性既不包含运行时数据也不包含敏感信息。因此,My.Settings 是一个边缘案例,并且是其实现方式的结果。请注意,这仅适用于您在 IDE 中输入的默认初始值。如果您在运行时更新它们,它们不会写回属性,而是保存到文件中。

由于您的设置数量很少,只需编写一个小类来自己管理它们并将其保存到 Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)

中的文件中

关于vb.net - .NET 混淆 [SmartAssembly],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24530708/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com