SootTutorial
1.0.0
該存儲庫包含(將包含)使用SOOT在Java中靜態程序分析的幾個簡單示例。
任何了解Java編程並希望在實踐中進行一些靜態分析但對理論上對煙灰和靜態分析一無所知的人。
如果您對靜態程序分析有一些先驗知識,我建議您從這裡學習煙灰。
簡而言之,使用Java 8並運行./gradlew build 。有關更多信息和Docker設置,請遵循此鏈接。
在本章中,您將訪問一個非常簡單的代碼示例,以熟悉煙灰基本數據結構和Jimple (Soot的原理中間表示)。
./gradlew run --args="HelloSoot"./gradlew run --args="HelloSoot draw"| 標題 | 教程 | 煙灰碼 | 示例輸入 |
|---|---|---|---|
| 你好煙灰 | Doc | Hellosoot.java | fizzbuzz.java |

在本章中,您會熟悉煙灰中的一些基本但有用的方法,以幫助閱讀,分析甚至更新Java代碼。
./gradlew run --args="BasicAPI" :分析類圓。./gradlew run --args="BasicAPI draw" :分析類圓圈並繪製呼叫圖。| 標題 | 教程 | 煙灰碼 | 示例輸入 |
|---|---|---|---|
| 基本API | Doc | basicapi.java | 圓圈 |

在本章中,您將學習如何使用SOOT插入Android應用程序(無需源代碼)。要運行代碼,您需要Android SDK(檢查此鏈接)。
./gradlew run --args="AndroidLogger"./gradlew run --args="AndroidClassInjector" :從頭開始創建一個新類,並將其註入Numix Calculator。儀器APK位於demo/Android/Instrumented中。您需要簽名才能在Android設備上安裝:
cd ./demo/Android
# on Windows, replace 'sign.sh' by 'sign.ps1'
./sign.sh Instrumented/calc.apk key " android "
adb install -r -t Instrumented/calc.apk要查看日誌,請運行adb logcat | grep -e "<SOOT_TUTORIAL>"
| 標題 | 教程 | 煙灰碼 | 示例APK |
|---|---|---|---|
| apk中的日誌方法調用 | Doc | androidlogger.java | Numix計算器(來自F-Droid) |
| 創建並將一類註入APK | Doc | androidClassIndector.java | Numix計算器(來自F-Droid) |

本章為您提供了簡短的概述o呼叫圖和Android中的PointSto分析,您將學習如何使用FlowDroid創建呼叫圖。示例代碼的源代碼在這裡。要運行代碼,您需要Android SDK(檢查此鏈接)。
./gradlew run --args="AndroidCallGraph <CG_Algorithm> (draw)" <CG_Algorithm><CG_Algorithm>可以是SPARK或CHAdraw參數是可選的,如果提供了呼叫圖的可視化。./gradlew run --args="AndroidCallGraph SPARK draw"可視化Spark算法生成的呼叫圖。./gradlew run --args="AndroidPTA"| 標題 | 教程 | 煙灰碼 | 示例APK |
|---|---|---|---|
| 在Android中調用圖形 | Doc | AndroidCallgraph.java | Soottutorial Demo應用程序(源代碼) |
| Android中的Pointsto分析 | Doc | androidpointStoanalysis.Java | Soottutorial Demo應用程序(源代碼) |

./gradlew run --args="UsageFinder 'void println(java.lang.String)' 'java.io.PrintStream"./gradlew run --args="UsageFinder 'void println(java.lang.String)' 'java.io.PrintStream"| 標題 | 教程 | 煙灰碼 | 示例輸入 |
|---|---|---|---|
| 查找方法的用法 | USAGEFINDER.JAVA | usageExample.java | |
| 空指針分析 | 無零分解 | nullpointerexample.java |
| 標題 | 教程 | 煙灰碼 | 示例輸入 |
|---|---|---|---|