我使用ConfuserEx發佈之前混淆我的計劃,我希望程序顯示一個警告,如果它正在運行不混淆。以減少未被混淆的可執行文件被運送的機會。 所以在運行時,我想要一個函數返回true/false取決於是否應用了模糊處理。如何以編程方式檢測VB.NET混淆?
回答
我可以看到這樣做有兩種方式。
如果使用模糊處理過程是把加密部分的發佈版本的一部分,因此你的發佈版本已經內置指令,你可以做這樣的事情。
AppValidator.Validate()
驗證將驗證它是一個發佈版本或者如果不是,該應用程序運行允許的用戶(DEV。團隊爲例)。
我還添加了一種通過命令行來驗證調用Myapp.exe的驗證
不過。這不驗證混淆,它驗證應用程序處於發佈模式。
你混淆,如果嵌入的發佈版本,應該如果他不能混淆發行版本或該驗證的前提是不好的失敗。
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,它是免費的,它有一個命令行,並且可以直接執行你所尋找的任務。
謝謝,我喜歡你的驗證邏輯例子。但我確實想檢查實際的混淆,而不是假設它在構建過程中正確應用。 –
檢查我的文章末尾的鏈接:Obfucation Checker是一個由紅門提供的免費工具,它允許您直接進行搜索。 –
謝謝,我是通過試圖反彙編exe來手動檢查的。紅門工具看起來很有用,但我擔心它只是他們混淆產品的營銷工具,因此低估了其他人混淆工具的結果。我最初要求在運行時進行檢查,因此如果運行非混淆版本,我可以顯示錯誤。此外,程序可以記錄沒有混淆。我仍然沒有解決方案。 –
您可以使用類似ILSpy
並使其後自動運行建立與WM_COPYDATA
API參數,就像這樣:
https://github.com/icsharpcode/ILSpy/blob/master/doc/Command%20Line.txt
有它定位到要混淆類型名稱;如果失敗,則知道混淆成功。
- 1. 以編程方式檢測Chrome中的混合內容阻塞
- 2. 以編程方式檢測VMWare
- 3. Freeswitch以編程方式檢測傳真
- 4. 以編程方式檢測SQL Server版
- 5. 以編程方式檢測類參數
- 6. 如何防止以編程方式上傳到Dydra時三元組混淆?
- 7. VB.NET位移混淆
- 8. 繼承混淆vb.net
- 9. vb.net列表混淆
- 10. 如果磁盤脫機,如何以編程方式檢測[c#]?
- 11. 如何以編程方式檢查NSMicrophoneUsageDescription
- 12. 如何以編程方式檢查如果一個應用程序在VB.NET
- 13. 如何以編程方式檢測屏幕撕裂?
- 14. 如何以編程方式檢測ASP.NET 3.5?
- 15. 如何以編程方式檢測html版本
- 16. 如何在Android中以編程方式檢測死鎖?
- 17. 在Revit中如何以編程方式進行干擾檢測?
- 18. 如何以編程方式檢測Mac OS X Server Edition?
- 19. 如何以編程方式檢測圖像的背景?
- 20. 如何以編程方式檢測背光在iOS上?
- 21. 如何以編程方式檢測自動引用計數?
- 22. 如何以編程方式檢測iPhone中的聽筒?
- 23. UIPickerView - 如何檢測以編程方式更改的值?
- 24. 如何以編程方式檢測iphone中的傳入郵件?
- 25. 如何以編程方式檢測系統熱鍵?
- 26. 如何以編程方式檢測iOS設備
- 27. 如何以編程方式檢測一個新的文件中
- 28. 如何在android中以編程方式禁用耳機檢測?
- 29. 如何以編程方式檢測亮度
- 30. 如何以編程方式檢測android前置攝像頭
誰能爲什麼你失望投票有何看法?這似乎是完全合理的問題。 –
混淆器應該發出[assembly:ObfuscateAssemblyAttribute]。如果您不知道自己的行爲是否存在,或者您找不到,請聯繫供應商的支持以獲取正確的方式。 –
我是新來的反射,我將如何測試裝配:ObfuscateAssemblyAttribute? –