首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以编程方式检测VB.NET混淆?

如何以编程方式检测VB.NET混淆?
EN

Stack Overflow用户
提问于 2016-05-28 18:00:03
回答 2查看 658关注 0票数 2

我正在使用ConfuserEx来混淆我的程序在发布之前,我希望程序显示一个警告,如果它是运行没有混淆。以便减少未混淆的可执行文件被运送的机会。所以在运行时,我想要一个返回true/false的函数,这取决于是否应用了混淆。

EN

回答 2

Stack Overflow用户

发布于 2016-05-28 22:27:24

我可以看到两种方法。

如果您使用的混淆过程是发布构建的一部分,因此您的发布构建具有用于混淆部分的嵌入式指令,那么您可以这样做。

代码语言:javascript
运行
复制
AppValidator.Validate()

验证将验证它是否为发布版本,如果不是,则验证应用程序是否为允许的用户(开发人员)运行。例如团队)。

我还添加了一种通过命令行调用Myapp.exe validate进行验证的方法

然而。这不会验证每个see的模糊处理,而是验证应用程序是否处于发布模式。

如果您的混淆器嵌入到发布版本中,那么如果他不能混淆发布版本,或者这个验证的前提不好,那么它就会失败。

代码语言:javascript
运行
复制
Public Class AppValidator
#If DEBUG Then
Private Shared ReadOnly IsDebugVersion As Boolean = True
#Else
private Shared ReadOnly IsDebugVersion As Boolean = False
#End If

Private Shared ReadOnly ISValidUser As Boolean = ValidateDevUser()


''' <summary>
'''     Validate the user is authorized to run the program as 
''' </summary>
''' <returns></returns>
Private Shared Function ValidateDevUser() As Boolean
    Try
        ' Custom validation to determine if used in dev. environment such
        'as validating username and domain name or checking agains Dev. Registry key
    Catch ex As Exception
        Return False
    End Try
    Return True
End Function

Public Shared Function Validate() As Boolean
    Dim Args = Environment.GetCommandLineArgs
    Dim ConsoleValidate As Boolean = Args.Count = 2 AndAlso String.Compare(Args(1), "validate") = 0


    If IsDebugVersion Then
        If ConsoleValidate Then
            Console.WriteLine(Not IsDebugVersion)
            Application.Current.Shutdown()
            Return False
        End If

        If Not ValidateDevUser() Then
            MessageBox.Show("Access Denied")
            Application.Current.Shutdown()
            Return False
        End If

    End If

    Return True
End Function
End Class

第一个解决方案是最好的,如果你能确定如果发布版本产生了,那么构建将会失败,并且模糊步骤失败。

如果你不能确定这一点,也许你可以看看Red-gate上的Obfuscation checker,它是免费的,有一个命令行,可以直接做你想做的事情。

票数 1
EN

Stack Overflow用户

发布于 2017-02-06 22:55:27

您可以使用类似ILSpy的代码,并在使用WM_COPYDATA API参数进行构建后自动运行它,如下所示:

https://github.com/icsharpcode/ILSpy/blob/master/doc/Command%20Line.txt

让它导航到应该进行模糊处理的类型名称;如果失败,您就知道模糊处理成功了。

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

https://stackoverflow.com/questions/37497617

复制
相关文章

相似问题

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