Android應用安全防護實踐一辣敵方眼睛之代碼混淆成空白字符和亂碼(四)

代碼混淆應該很多人聽過 但是很少使用 因爲他會修改編譯後的最終代碼 可能會導致軟件閃退啊 什麼亂七八糟的 對此敬而遠之 不想去碰他

下面來簡單說下我的使用經驗

混淆 不能混淆四大組件名字和路徑、自定義view的名字和部分方法名字(什麼動畫要用到)、ndk的類 不能混淆名字 方法名字、以及之前說過的ndk調java的 那個java方法名字、還有webview的一些東西也和被反射的類不能混淆
以上的網上都有說明和每個混淆參數的簡潔 我這裏就不多講了 自己先把基礎瞭解下
例如這個博客的文章或者其他的文章 去了解下各個指令的用途

其他的就無所謂了

一般的配置按照你學習的辦法搞就行了 然後我這裏只重點說明一下

  1. 不要使用網上的那些什麼狗勞子 第三方庫通用混淆配置大全 沒籃子用ojbk
  2. 使用的開源庫 如果沒有說明混淆要配置什麼 就不要去配置他的排除
  3. 如果因爲第二條出現運行時錯誤 先去仔細找一下官方有沒有混淆說明 是不是之前沒注意到 然後再通過-keep等相關的之類去排除 寫代碼這些都行怎麼搞都懂 這裏懶得講
  4. 一定要了解項目 和自己使用的第三方庫(低優先級) 其中代碼可能用到反射等操作 這時候一定要排除被反射的類名 和方法 也儘量避免使用反射 第三方庫用到反射一般會說明混淆排除的 除非那個開源十分不負責任
  5. 項目使用了webview的要注意混淆配置 以及使用了h5 js交互的 要排除

Json實體類混淆參照我之前的文章Json混淆辦法

記得我說的重點 然後開始你的混淆配置 編譯混淆包後 測試一遍檢查是否存在問題 沒有其他問題就可以開始瞭解一下下面幾個指令

	#混淆時重打包 把你包名裏面的代碼抽取到你指定的包名底下 沒有會創建
	#比如我這裏就比較皮了 僞裝到v4包裏面 玩幾秒鐘的捉迷藏
    -repackageclasses 'android.support.v4'

	#自定義混淆字典 配和名字一樣 成員的名字 類名 包名 各種都可以設置字典
    -obfuscationdictionary dict.txt
    -classobfuscationdictionary dict.txt
    -packageobfuscationdictionary dict.txt

這個字典比較重要了 我們默認的規則就是一些字母 混淆後也不算很難閱讀

但是這個字典就比較騷了 空白字符+特殊字符 看起來完全分不清啥是啥看下圖 手段極其殘忍
效果圖
這裏是字典下載地址 我找了很久才找到這個開源的字典生 我copy了一份點我爲飛機直達
簡單混淆就到這裏了
下面再補充一發 字符串混淆 防止別人通過文本搜索定位到某個功能代碼段
下面是混淆後的字符串(來呀 你搜啊 哇咔咔
字符串全部變成byte了 完全卡不出是個啥
在這裏插入圖片描述
混淆工具github地址 這個也不是我的 我只是copy了一份點我飛機直達
按照github上面的說明使用就行 這裏不說了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章