首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET混淆[SmartAssembly]

.NET混淆[SmartAssembly]
EN

Stack Overflow用户
提问于 2014-07-02 12:06:33
回答 1查看 1.2K关注 0票数 4

关于SmartAssembly和.NET应用程序,只是一个简单的问题。-我现在正在试验这个软件,它似乎混淆了代码,但是My.Settings仍然可以用纯文本显示吗?

因此,在获取代码之前(使用.NET反射器),我几乎可以看到所有的东西。包括包含大量信息的My.Settings类,如密码、ip、MySQL连接字符串等。

所以我混淆了使用RedGate的SmartAssembly的代码,确定所有的类/函数等都是随机符号出现的,但是有几个项目(同样包括My.Settings)没有被碰过?

SmartAssembly截图

模糊在.NET反射器中的应用

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-02 12:56:44

大多数混淆工具所能做的都有局限性,这就是其中之一。设置值并不存储为字符串文本或备份字段,而是作为属性值存储:

代码语言:javascript
复制
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,但如您所见,它使用一个属性来存储初始值,而不是:

代码语言:javascript
复制
Private _foo As String = "bar"

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

代码语言:javascript
复制
<Description("Bar String")>
<DefaultValue("bar")>
<DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)>
Property BarString As String

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

由于您有少量的设置,所以只需编写一个小类来管理它们,并将其保存到Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)中的一个文件中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24530708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档