Doldrums:一款功能強(qiáng)大的逆向工程分析工具
Doldrums介紹
Doldrums是一款功能強(qiáng)大的逆向工程分析工具,主要針對的是Android端Flutter應(yīng)用程序。具體來說,Doldrums是一個(gè)針對Flutter/Dart Android代碼(一般稱之為libapp.so)的解析器和信息提取器,支持所有的Dart v2.10發(fā)行版。在運(yùn)行時(shí),Doldrums可以導(dǎo)出隔離快照中存在的所有類。
注意:該工具當(dāng)前處于測試版本,還缺少某些反序列化功能和一些類的信息。
關(guān)于Flutter和Dart
Flutter是谷歌的移動(dòng)UI框架,可以快速在iOS和Android上構(gòu)建高質(zhì)量的原生用戶界面。 Flutter可以與現(xiàn)有的代碼一起工作。在全世界,F(xiàn)lutter正在被越來越多的開發(fā)者和組織使用,并且Flutter是完全免費(fèi)、開源的。
而Dart則是谷歌開發(fā)的計(jì)算機(jī)編程語言,后來被Ecma (ECMA-408)認(rèn)定為標(biāo)準(zhǔn)。它被用于web、服務(wù)器、移動(dòng)應(yīng)用和物聯(lián)網(wǎng)等領(lǐng)域的開發(fā)。它是寬松開源許可證(修改的BSD證書)下的開源軟件。
工具要求
Doldrums的運(yùn)行需要使用pyelftools來解析ELF格式內(nèi)容,我們可以使用下列命令安裝該組件:
- pip3 install pyelftools
工具使用
該工具的使用非常簡單,我們可以直接運(yùn)行下列命令,將libapp.so和output分別替換為相應(yīng)的二進(jìn)制文件以及目標(biāo)輸出文件。需要注意的是,verbose選項(xiàng)僅支持 Dart snapshot v2.12:
- python3 src/main.py [-v] libapp.so output
工具期待的輸出即為導(dǎo)出的所有類,下面給出的是導(dǎo)出類的格式:
- class MyApp extends StatelessWidget {
- Widget build(DynamicType, DynamicType) {
- Code at absolute offset: 0xec85c
- }
- String myPrint(DynamicType, DynamicType) {
- Code at absolute offset: 0xeca80
- }
- }
絕對代碼偏移量表明的是原生函數(shù)在libapp.so文件中的具體位置。
項(xiàng)目地址
Doldrums:【GitHub傳送門】