iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0

混淆程式碼 是一反逆向分析的手段 增加APP的安全性 也可以縮小檔案的大小 雖然可能會降低APP 效能 但混淆還是增強APP安全很好的方式

混淆有以下常見的技術

  1. 名稱混淆: 重新命名與縮短 變數,方法 名稱
  2. 改變程式邏輯: 假的loop迴圈 假的Switch Statement 語句
  3. 字串加密: 字串以Const 密文的形式 在APP中 在run time 時解密使用
  4. 方法與類別加密: 也是一樣 只會在APP Run time 時解密
  5. 虛擬代碼插入: 有時候會加入一些不影響應用程序功能的代碼 來使工具失效

在Android 中常見的混淆工具有 R8 與 ProGuard 這裡個都是Android Studio 自帶的可以在 Gradle Scripts/build.gradle 找到相關啟用設定 minifyEnabled = True 以及 proguard-rules.pro

proguard-rules.pro 這個file 會決定在build 程式時 要做那些混淆的動作

# Prevent obfuscation of field names, but allow obfuscation of class and method names
-keep,allowobfuscation class * {
    !private *;
}

-dontoptimize
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-verbose
-repackageclasses 'a.b'
-dontwarn javax.lang.model.element.Modifier

今天介紹完 混淆基本概念 明天會flow 混淆的 java Code 流程 來分析混淆程式 來讀懂猜測邏輯


上一篇
DAY 25 靜態分析 Hybrid APP 下
下一篇
Day 27 靜態分析 - 混淆程式分析 下
系列文
我是不可能一直學Android 絕對不會29
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言