.NET混淆器 Dotfuscator如何保护应用程序?控制流了解一下!
Dotfuscator是一個(gè).NET的Obfuscator。它提供企業(yè)級(jí)的應(yīng)用程序保護(hù),大大降低了盜版、知識(shí)產(chǎn)權(quán)盜竊和篡改的風(fēng)險(xiǎn)。Dotfuscator的分層混淆、加密、水印、自動(dòng)失效、防調(diào)試、防篡改、報(bào)警和防御技術(shù),為世界各地成千上萬的應(yīng)用程序提供保護(hù)。
Dotfuscator提供了一種應(yīng)用程序保護(hù)的多層方法。這些層中的每一層都提供了一個(gè)重要的整體保護(hù)策略。如果一層受到損害,其他層繼續(xù)提供有效保護(hù),使攻擊者更難以實(shí)現(xiàn)其目標(biāo)。并且不僅有多個(gè)層,而且每個(gè)層都具有比其他混淆產(chǎn)品使用的簡單技術(shù)更強(qiáng)大的高級(jí)功能。
從本文開始我們一起了解Dotfuscator如何對(duì)應(yīng)用程序進(jìn)行多層保護(hù),層層遞進(jìn),大致可分為:
- 第一層保護(hù)——Obfuscation轉(zhuǎn)換:它對(duì)編譯的代碼進(jìn)行操作,使逆向工程變得困難或不可能。
- 第二層保護(hù)——保護(hù)程序運(yùn)行時(shí)發(fā)生的檢查:當(dāng)程序檢測到攻擊者試圖篡改或反向工程時(shí),它可以使用自定義邏輯進(jìn)行自我防御。
- 其余加強(qiáng)保護(hù)——包括切除和水印。
- Dotfuscator提供某些功能幫您構(gòu)建、部署和調(diào)試混淆的程序集。
>>下載Dotfuscator最新試用版
第一層保護(hù):Obfuscation轉(zhuǎn)換——控制流
Dotfuscator的工作原理是修改反編譯器用來重新創(chuàng)建源代碼的代碼模式。Dotfuscator引入了錯(cuò)誤的條件語句和其他具有誤導(dǎo)性的構(gòu)造,以混淆和破壞反編譯器。這個(gè)過程綜合了分支、條件和迭代構(gòu)造,這些構(gòu)造產(chǎn)生有效的正向(可執(zhí)行)邏輯,但是在嘗試反編譯時(shí)產(chǎn)生不確定的語義結(jié)果。
除了添加代碼構(gòu)造之外,Dotfuscator還破壞反編譯器用于重新創(chuàng)建源代碼的代碼模式。最終得到的代碼在語義上與原始代碼等價(jià),但不包含關(guān)于代碼最初是如何編寫的線索。該特性的目標(biāo)是防止MSIL自動(dòng)反編譯回高級(jí)源代碼。最終用戶仍然可以查看MSIL本身,但要完全理解它并對(duì)其功能進(jìn)行較大的更改就比較困難了。
例如:
| 之前 | 之后 |
▲限制
在控制流混淆之后測試應(yīng)用程序性能是很重要的,特別是任何執(zhí)行了很多次的代碼(例如游戲循環(huán)或計(jì)算/算法密集型方法)。
控制流混淆只有在方法包含足夠多的基本塊時(shí)才能有效地?fù)魯》淳幾g器。
▲排除
控制流排除與重命名排除以相同的方式工作,包括特定的排除和自定義規(guī)則。然而,控制流除外僅適用于方法。如果用戶在測試過程中發(fā)現(xiàn)性能下降,那么應(yīng)該將排除應(yīng)用到執(zhí)行計(jì)算密集型工作的任何方法或類(基本上是CPU是性能限制因素的任何情況)。
▲選項(xiàng)
High是唯一設(shè)計(jì)用來擊敗自動(dòng)反編譯器的關(guān)卡。如果高導(dǎo)致性能下降而不能通過排除來解決,則可以使用中值或低值,如果控制流被認(rèn)為是導(dǎo)致運(yùn)行時(shí)錯(cuò)誤的原因,則可以使用中值或低值進(jìn)行調(diào)試。
如果你有任何問題或意見,可在下方評(píng)論區(qū)留言,點(diǎn)擊資源列表查看更多教程資源~
轉(zhuǎn)載于:https://juejin.im/post/5d00a3e5f265da1b6e659b8b
總結(jié)
以上是生活随笔為你收集整理的.NET混淆器 Dotfuscator如何保护应用程序?控制流了解一下!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: upload_labs_pass17_二
- 下一篇: PHP 处理金额