.NET混淆器 Dotfuscator如何保護應用程序?控制流了解一下!

Dotfuscator是一個.NET的Obfuscator。它提供企業級的應用程序保護,大大降低了盜版、知識產權盜竊和篡改的風險。Dotfuscator的分層混淆、加密、水印、自動失效、防調試、防篡改、報警和防御技術,為世界各地成千上萬的應用程序提供保護。

Dotfuscator提供了一種應用程序保護的多層方法。這些層中的每一層都提供了一個重要的整體保護策略。如果一層受到損害,其他層繼續提供有效保護,使攻擊者更難以實現其目標。并且不僅有多個層,而且每個層都具有比其他混淆產品使用的簡單技術更強大的高級功能。

從本文開始我們一起了解Dotfuscator如何對應用程序進行多層保護,層層遞進,大致可分為:

  • 第一層保護——Obfuscation轉換:它對編譯的代碼進行操作,使逆向工程變得困難或不可能。
  • 第二層保護——保護程序運行時發生的檢查:當程序檢測到攻擊者試圖篡改或反向工程時,它可以使用自定義邏輯進行自我防御。
  • 其余加強保護——包括切除和水印。
  • Dotfuscator提供某些功能幫您構建、部署和調試混淆的程序集

>>下載Dotfuscator最新試用版

第一層保護:Obfuscation轉換——控制流

Dotfuscator的工作原理是修改反編譯器用來重新創建源代碼的代碼模式。Dotfuscator引入了錯誤的條件語句和其他具有誤導性的構造,以混淆和破壞反編譯器。這個過程綜合了分支、條件和迭代構造,這些構造產生有效的正向(可執行)邏輯,但是在嘗試反編譯時產生不確定的語義結果。

除了添加代碼構造之外,Dotfuscator還破壞反編譯器用于重新創建源代碼的代碼模式。最終得到的代碼在語義上與原始代碼等價,但不包含關于代碼最初是如何編寫的線索。該特性的目標是防止MSIL自動反編譯回高級源代碼。最終用戶仍然可以查看MSIL本身,但要完全理解它并對其功能進行較大的更改就比較困難了。

例如:

之前

之后

▲限制

在控制流混淆之后測試應用程序性能是很重要的,特別是任何執行了很多次的代碼(例如游戲循環或計算/算法密集型方法)。

控制流混淆只有在方法包含足夠多的基本塊時才能有效地擊敗反編譯器。

▲排除

控制流排除與重命名排除以相同的方式工作,包括特定的排除和自定義規則。然而,控制流除外僅適用于方法。如果用戶在測試過程中發現性能下降,那么應該將排除應用到執行計算密集型工作的任何方法或類(基本上是CPU是性能限制因素的任何情況)。

▲選項

High是唯一設計用來擊敗自動反編譯器的關卡。如果高導致性能下降而不能通過排除來解決,則可以使用中值或低值,如果控制流被認為是導致運行時錯誤的原因,則可以使用中值或低值進行調試。

如果你有任何問題或意見,可在下方評論區留言,點擊資源列表查看更多教程資源~


轉載于:https://juejin.im/post/5d00a3e5f265da1b6e659b8b

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448641.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448641.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448641.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

到底什么才是人生最大的投資

不是房子,不是股票, 是人,跟什么人交往,跟隨什么人, 交什么樣的朋友,其實就是你投資什么人, 而這,是對人生影響最大的。 錢不會給人機會,房子也不會, 只有人會…

tcpdump抓包命令

目錄: 命令格式選項expression表達式示例【命令格式】 man手冊顯示如下 1 tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]2 [ -c count ]3 [ -C file_size ] [ -G rotate_seconds ] [ -F file ]4 [ -i …

百度Ueditor編輯器wordimage踩坑

背景 改造公司老項目后臺編輯器,使用百度的Ueditor做替換。 發現問題 1、ue編輯器初始化后部分參數無法覆蓋ueditor.config.js中的選項。2、wordimage(word圖片轉存)始終是灰色,無法使用。解決辦法 1、將ueditor.config.js中的inp…

IntelliJ IDEA 配置JDK

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 IDEA配置JDK 1、點擊File -->Project Structure; 2、點擊左側標簽頁SDKs選項,再點擊左上角“”,…

get和post 兩種基本請求方式的區別

GET和POST是HTTP請求的兩種基本方法,要說它們的區別,接觸過WEB開發的人都能說出一二。 最直觀的區別就是GET把參數包含在URL中,POST通過request body傳遞參數。 你可能自己寫過無數個GET和POST請求,或者已經看過很多權威網站總結出…

無論是工作還是生活都要記住這些話

1.如果你不喜歡現在的工作,要么辭職不干,要么就閉嘴不言。初出茅廬,往往眼高手低,心高氣傲,大事做不了,小事不愿做。不要養成挑三揀四的習慣。不要雨天煩打傘,不帶傘又怕淋雨,處處表…

蘇嵌第一天,shell中一些基礎知識

一、常用環境變量 1、HOME變量 Linux系統中的每個用戶都有一個相關的稱作HOME的目錄。 2、PATH變量 包含一列用冒號定界的目錄的路徑名字,便于可執行程序的搜索。 3、PS1變量 PS1變量包含了shell提示符,$符號 4、LOGNAME變量 包含用戶的注冊名字…

Java異常處理001:Maven clean package時Failed to clean project: Failed to delete

Java異常處理001:Maven打包時Failed to clean project: Failed to delete 異常日志: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.6.1:clean (default-clean) on project fmk-web: Failed to clean project: Failed …

Weekly Contest 141

做了第一道后,看了下中間兩道題目,沒怎么看懂就先放著,做完最后一道,然后就沒時間了。 1089. Duplicate Zeros Given a fixed length array arr of integers, duplicate each occurrence of zero, shifting the remaining element…

IntelliJ IDEA 中配置、使用 SVN

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1.配置svn 如下圖: file -- setting -- version control -- subversion -- 選擇 SVN安裝路徑 -- apply -- OK 2.直接檢出…

切記!職場郵件需注意的細節

電子郵件是如今工作場所重要的通信工具之一,但不是每個人都知道如何很好地使用這個工具。工作郵件也是人際溝通的一種方式,和打電話、面談一樣,有很多學問講究,所以在發送郵件之前一定要深思熟慮。 【發送,抄送&…

李洋瘋狂C語言之初

1.sizeof 是看數據類型所占空間大小,這個大小是以 字節(B)為單位 char 是C語言的字符數據類型 %d 用在printf 中表示往屏幕打印一個數字 printf ("char: %d\n", sizeof(char)); 數據類型之間的關系,shor…

時時流量查看工具-ifsta,nload,iftop

為什么80%的碼農都做不了架構師?>>> 1、ifstat 是一個網絡流量監測程序。能查看網卡的流出和流入的字節. 概要:ifstat就像iostat/vmstat描述其它的系統狀況一樣,是一個統計網絡接口活動狀態的工具。 參數: -l 監測環路…

10大清宿便排毒方法及簡單排毒瘦小腹運動

早上空腹喝水法:每日起床后空腹喝下500C.C.加鹽的冷開水。只要是冷的飲料或水分,在腸胃空腹時都有刺激腸胃蠕動的效果,而且越冰刺激效果越好,建議不需加鹽,以免高血壓患者因鹽分中的金屬離子造成腎的負擔。 優酪乳加綠…

破解 IntelliJ IDEA 、免費注冊方法、注冊碼

1. 找到hosts文件,在此路徑下 C:\Windows\System32\drivers\etc 2. 修改hosts 文件,在最后 加一行配置: (此操作需要電腦管理員權限) 0.0.0.0 account.jetbrains.com 3. 從idea 注冊碼生成網站生成一組注冊碼。網…

李洋瘋狂C語言之冒泡排序法

今天的課后任務是2種排序方式(冒泡排序和選擇排序) 冒泡排序法1 原理:從a[0]開始,依次將其和后面的元素比較,若a[0]>a[i],則交換他們,一直比較到a[n]。同理對a[1], a[2], ……a[n-1]處理&a…

MySQL水平分區代理Spock Proxy(一)

為什么80%的碼農都做不了架構師?>>> MySQL水平分區代理Spock Proxy 水平分區(sharding)將同一數據表中的數據通過特定的算法進行分離,分別保存在不同的數據表中,從而部署到不同的數據庫服務器上。 水平分區后,數據拆分…

OO第四單元作業

1.作業的架構設計 (1)對于第一次作業中,要求我們實現關于類圖的查詢指令。 在這次作業中,主要采用的儲存方法是哈希表。 在查詢方法上,大多數要求諸如共有多少類等,利用哈希表進行查詢即可。 比較困難的一些…

傷錢傷感情 10件不能和親戚一起干的事兒

關于親戚和理財,網友小盒總結了下十大別和親戚干的事兒,干了之后保管既傷錢又傷感情: 1、別幫親戚炒股 賺了覺得你賺得不如以前吹的那么多,賠了就剩翻臉了,搭時間搭功夫還不落好。 2、別和親戚一起做生意 道理同…

李洋瘋狂C語言之選擇排序

選擇排序法 原理: 選擇法循環過程與冒泡法一致,它還定義了記號mini,然后依次把a[min]同后面的元素比較,若a[min]>a[j],則使kj. 最后看看ki是否還成立,不成立則交換a[k], a[i],這樣就比冒泡法省下許多無用的交換&a…