Dexcalibur是一個針對儀器自動化的Android反向工程平台。它的特殊性是使用動態分析來改善靜態分析啟發式方法。它旨在自動化與動態儀器有關的無聊任務,例如:
您想分享一些東西還是需要一些幫助?加入我們的官方聊天:
電報 - 最快的回複方法
可以在此處提供官方文檔(網站 - 正在進行的工作)。
請參閱此處的最新消息:http://docs.dexcalibur.org/news.html
顯示Dexcalibur演示視頻:演示:不到1分鐘的掛鉤61方法?沒問題。 (youtube)
貢獻 !
不要猶豫!有幾種貢獻方法:
去安裝文檔
替代方案:使用Docker
adb (如果適當的話,以及Android模擬器)docker-compose build android-dexcaliburdocker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bash對於Linux和MacOS
NPM安裝:如果使用npm( -g選項)安裝了全球核心,則可以通過進行$ dexcalibur ,否則它可以通過$ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js啟動。
從來源安裝:從dexcalibur文件夾,運行$ dexcalibur或$ node dexcalibur.js 。
對於Windows
NPM安裝:如果使用npm( -g選項)安裝了dexcalibur,則必須通過從終端啟動dexcalibur,通過從終端node <NPM_ROOT>/dexcalibur/dexcalibur.js啟動以下命令。
從源:從dexcalibur文件夾到終端,運行命令node dexcalibur.js 。
您正在使用以前的dexcalibur版本嗎?
按照相同的步驟進行操作,而不是新安裝,當您應該輸入工作區路徑時,請輸入當前的工作區位置。
只是這樣做:
$ npm install -g dexcalibur
將自動檢測現有的配置和工作區。
屏幕截圖說明在運行時自動更新XREF 。
實際上,最大的限制是Dexcalibur無法生成掛鉤定位本機函數的源代碼(進入JNI庫)。但是,您可以通過編輯鉤子來手動聲明弗里達的攔截器。
假設Dexcalibur(暫時)不提供分析天然部分(例如JNI庫或JNA)的特徵,則僅確定了與Java部分相關的特徵和局限性。
分析精度取決於分析早期步驟中使用的Android API圖像的完整性。這意味著,如果您使用Android SDK從Android.jar文件生成的DEX文件,則可能會丟失對內部方法,字段或類的一些引用。當分析從直接從運行預期Android版本的真實設備提取的“ boot.oat”文件啟動時,將獲得更好的結果。
托多:寫文字
托多:寫文字
追踪行為
涉及“運行Smali(VM)”動作的靜態分析儀能夠發現和接受,但跟踪以下行為:
實際上,不支持此類無效指令的處理程序/聽眾,但會跟踪和渲染事件。
Dexcalibur ir
VM產生了自定義和簡化的中間表示(IR),僅顯示該表示,以幫助分析師執行其分析。
根據Callstack深度和配置的值,IR可以包含或不包括或不執行的指令。如果執行進入試驗塊並繼續返回,但從未兌現捕獲,則不會呈現捕獲塊。實際上,Dexcalibur ir的目的是僅渲染“執行的內容”或“可以根據某些符號的值執行的內容”到VM上下文中。
Dexcalibur IR通過刪除無用的goto和不透明的謂詞來幫助閱讀清潔版本的字節碼。可以通過2個簡化級別的VM生成Dexcalibur IR:
第一級IR,如果您不信任第二級IR,則可以使用:
第2級:
Android API模擬
托多
細節
Smali VM遵循步驟:
VM如何處理Invoke-*指令?
清單分析(有限)
在第一次運行之前,應用程序的Android清單進行解析。實際上,在此級別上確實檢測到了清單中這種不安全配置的異常。
Android明顯解析的唯一目的是填充其他類型的分析儀。
許可分析
從清單中提取的所有權限均列出和識別,並將其與目標Android API版本的Android規范進行了比較。
dexcalibur提供 - 僅在某些情況下提供了權限目的的描述,即最小Android API版本,...
活動分析
提供者分析
服務分析
接收器分析
網絡監控
意圖監視
文件訪問監視
您找不到多用戶菜單?沒有問題,沒有菜單,但是可以實現簡約的協作工作。
Dexcalibur運行Web服務器。因此,如果幾個人在該Web服務器的同一網絡上,並且配置了主機防火牆,則可以在同一Dexcalibur實例上使用幾個。
實際限制是:
特別感謝貢獻者:
在更深入之前:
dexcalibur --reinstall命令來重新安裝它?如果沒有,請嘗試。首先,檢查全局設置是否已保存到<user_directory>/.dexcalibur/
$ ls -la ~/.dexcalibur
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user staff 2784 29 avr 11:47 ..
-rw-r--r-- 1 test_user staff 204 29 avr 11:41 config.json
$ cat ~/.dexcalibur/config.json
{
"workspace":"/Users/test_user/dexcaliburWS3",
"registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
"registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}
接下來,檢查Dexcalibur工作區的結構是否如下( /api文件夾的內容可能有所不同)。
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
drwxr-xr-x 8 test_user staff 256 29 avr 11:41 sdk_androidapi_29_google
/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x 4 test_user staff 128 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rwxr-xr-x 1 test_user staff 17661172 29 avr 11:41 apktool.jar
drwxr-xr-x 18 test_user staff 576 29 avr 11:41 platform-tools
/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rw-r--r-- 1 test_user staff 314 29 avr 11:41 config.json
/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
如果您使用通過USB連接的物理設備,請確保啟用開發器模式和USB調試。
如果使用虛擬設備,請訪問/splash.html ,選擇Device Manager ,請單擊Connect over TCP ...並遵循說明。如果您不知道設備的IP地址,請通過檢查框automatic configuration來檢測到它。
您需要在能夠使用目標設備之前註冊目標設備。在註冊期間,Dexcalibur收集設備元數據並推動兼容版本的Frida Server。
這樣的元數據用於選擇右Frida-Server和Frida-gadget目標。
如果紅色感嘆號!出現在設備列表中的線上,然後設備不允許您的桌面。您可能需要確認
如果您的設備已列為DeviceManager並檢查了online ,請單擊enroll
如果您的設備已列為DeviceManager並檢查了online ,請單擊enroll
Dexcalibur版本<v0.7無法檢測到自動模擬設備,並由於ADB輸出不完整而使用它。
由於版本> = V0.7,一旦您的虛擬設備運行,請訪問/splash.html或單擊DEXCALIBUR進入導航欄。單擊Device Manager按鈕進入左菜單,然後單擊數組頂部的Refresh按鈕。
您應該有一個由虛擬設備的ADB ID開始的行。
首先,作為任何目標設備,您應該註冊它。
單擊Connect over TCP ...以通過TCP添加新設備或通過TCP連接註冊的設備。
如果設備從未被註冊過,則將通過TCP進行註冊。在某些情況下,TCP上的連接比USB上的連接慢。因此,註冊可能需要額外的時間。
如果該設備已在USB上註冊,則該設備的新型運輸類型將成為TCP。
在此存儲庫上創建拉動請求或創建問題。
在Dexcalibur-Doc存儲庫上創建拉動請求。
文檔可在此處(文檔網站)和此處(Wiki)提供
![]() |
|---|
| 他們為所有產品提供許可證<3 |
實際上,關於Dexcalibur的文檔和培訓資源很少。如果您成功使用Dexcalibur來贏得CTF挑戰或發現脆弱性,我強烈建議您分享自己的經驗。