baksmali和smali源碼分析(二)-創(chuàng)新互聯(lián)

這一節(jié),主要介紹一下 baksmali代碼的框架。

創(chuàng)新互聯(lián)公司長期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為峨邊彝族企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計,峨邊彝族網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

我們經(jīng)常在反編譯android apk包的時候使用apktool這個工具,其實本身這個工具里面對于dex文件解析和重新生成就是使用的baksmali 和smali這兩個jar包
其中 baksmali是將 dex文件轉(zhuǎn)換成便于閱讀的smali文件的,
具體使用命令如下:
java -jar baksmali.jar classes.dex -o myout
其中myout是輸出的文件夾

而smali是將smali文件重新生成回 dex文件的
具體使用的命令如下:
java -jar smali.jar myout -o classes.dex

這兩個工具在源碼中分別對應(yīng)兩個文件夾,下面見圖三,源碼文件夾的樣子

baksmali和smali源碼分析(二)

在分析源碼之前,這里我先將這些文件夾下的主要作用來說明一下,讓大家有個總體的認(rèn)識

baksmali    該文件夾下面主要實現(xiàn)的是將 dex轉(zhuǎn)換成smali文件的代碼,需要分析的重點

deodexerant 該文件夾下面的文件是一個可執(zhí)行文件,筆者嘗試用ndk編譯了一下,能夠編譯出可執(zhí)行文件根據(jù)里面的描述,是為了 拷貝出來dalvik虛擬機(jī)中的函數(shù)表,有興趣的同學(xué)可以試試,就是用dlopen 將 libdvm.so 打開,然后得到 dvmGetInlineOpsTable 這個導(dǎo)出表,看看里面的內(nèi)容

dexlib2     這個文件夾其實是dex和smali轉(zhuǎn)換真正起到作用的代碼,不管是baksmali還是smali都需要用到這個庫中的接口和方法,才能解析和生成相應(yīng)的smali文件,這個在后面會重點分析的

examples    一些有代表意義的smali文件

externaljar 這個是我為第三方j(luò)ar建立的一個目錄

gradle      管理工具,沒有特別關(guān)注,跟源碼分析無關(guān)

scripts     執(zhí)行smali和baksmali的腳步文件,跟源碼無關(guān)

smali       該文件夾下面主要實現(xiàn)的是將 smali文件轉(zhuǎn)換成dex文件的代碼,需要重點分析

smali-integration-tests  整合測試的一個文件夾,里面也是一些smali文件,跟源碼無關(guān)

util       一些能夠提取出來的輔助類的實現(xiàn)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站欄目:baksmali和smali源碼分析(二)-創(chuàng)新互聯(lián)
文章位置:http://bm7419.com/article22/ceoijc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄營銷型網(wǎng)站建設(shè)、小程序開發(fā)、ChatGPTGoogle、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司