中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

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

baksmali 的源碼分析

在baksmali進(jìn)行源碼分析之前,需要讀者掌握一條主線,因?yàn)楸旧砉P者只是由于項(xiàng)目需要用到這套源碼,在工作之余的時間里面來進(jìn)行學(xué)習(xí)也沒有時間和精力熟讀源碼的每個文件每個方法,但是依據(jù)這條主線,至少能夠猜出并且猜對baksmali里面的源碼的文件大概的作用是什么,這樣在修改問題和移植的時候才能做到游刃有余。

創(chuàng)新互聯(lián)專注于臨西企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),成都做商城網(wǎng)站。臨西網(wǎng)站建設(shè)公司,為臨西等地區(qū)提供建站服務(wù)。全流程按需定制開發(fā),專業(yè)設(shè)計,全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

這條主線是,baksmali其實(shí)只是利用了dexlib2提供的接口,將dex文件讀入到一塊內(nèi)存中,這塊內(nèi)存或者說數(shù)據(jù)結(jié)構(gòu)開辟的大小是跟輸入的dex文件相關(guān)的,而這塊內(nèi)存所映射的數(shù)據(jù)結(jié)構(gòu)是一個列表形式的數(shù)組,以類為單位,將dex文件全部解析出來,可以簡單理解為比如這個dex文件中有100個類,這個數(shù)組就有100個對象,每個對象數(shù)據(jù)結(jié)構(gòu)相同,但大小,內(nèi)容各異。

baksmali通過 dexlib2提供的接口獲取到這個對象中以后,自己定義了一種文件組織規(guī)則,當(dāng)然這種組織規(guī)則也絕非無中生有,而是在指令方面遵循 google的dalvik 指令規(guī)范,在文件組織方面遵循了 java jar包對于各個class的組織規(guī)范,自己在寄存器和函數(shù)組織方面有些自己的規(guī)則.

而這套規(guī)則也將來要跟smali這個生成dex文件的工具一一對應(yīng)。通過這樣的一種規(guī)則,baksmali 將獲取的對象生成了一個一個的smali文件,讓冰冷的二進(jìn)制的dex文件變得栩栩如生,方便大家的閱讀。

以這條主線,我們來看一下baksmali源碼的文件組織結(jié)構(gòu)

baksmali源碼有50多個文件,分別是由圖4 圖5 圖6 三副圖表示

baksmali和smali源碼分析(三)

                                                              圖4

其中圖4 下面直接的四個文件

baksmali.java
通過main函數(shù)得到dex文件的內(nèi)存布局,將其生成smali文件

baksmaliOptions.java
生成smali文件的一些選項(xiàng)配置文件

dump.java
類似與dexdump這個工具的作用,是在控制臺輸出dex文件中的各個段的信息的函數(shù),
本身和baksmali源碼無關(guān)

main.java
主程序入口文件,主要檢測參數(shù),通過調(diào)用
//Read in and parse the dex file
DexBackedDexFile dexFile = DexFileFactory.loadDexFile(dexFileFile, options.apiLevel);
將dex映射到內(nèi)存中去,然后再調(diào)用
baksmali.disassembleDexFile(dexFile, options);
這個函數(shù)來生成smali文件

                    baksmali和smali源碼分析(三)

                                                        圖5

圖5 中文件眾多

為了能夠比較好的理解這些文件的作用,這里需要補(bǔ)充一點(diǎn)smali文件生成的規(guī)則,smali文件的生成其實(shí)
只有三種定義,對于一個smali文件而言只有類,成員變量,和方法,對應(yīng)與文件來說就是

ClassDefinition.java
FieldDefinition.java
MethodDefinition.java

不管再復(fù)雜的類,baksmali源碼也認(rèn)為一個類中只有這三種基本元素,當(dāng)然生成一個類的時候是需要從

ClassDefinition.java 文件中的writeTo寫起的,而在這過程中肯定有成員變量,而寫成員變量的時候
就需要從 FieldDefinition.java文件中的 writeTo 寫起

當(dāng)寫成員函數(shù)的時候就需要從 MethodDefinition.java 文件中的 writeTo 寫起了

在理解了上面概念后,我用思維導(dǎo)圖畫了一下這個文件夾下的文件的組織形式,以供讀者整體理解
如圖7

baksmali和smali源碼分析(三)

                                                                圖7

看完圖5的文件夾了,再看圖6中的文件,就很好理解了

baksmali和smali源碼分析(三)

                                                          圖6

這個文件夾下的文件主要是實(shí)現(xiàn)生成smali文件的時候的一些基本數(shù)據(jù)類型的寫入,比如

boolean類型的true和false

char 類型的寫入等等

ok 理解完了整個源碼的目錄組織,以及大部分文件的作用,現(xiàn)在我們可以進(jìn)入baksmali源碼,開始進(jì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ù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享題目:baksmali和smali源碼分析(三)-創(chuàng)新互聯(lián)
文章出自:http://www.2m8n56k.cn/article14/dhiege.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣網(wǎng)頁設(shè)計公司小程序開發(fā)做網(wǎng)站品牌網(wǎng)站設(shè)計自適應(yīng)網(wǎng)站

廣告

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

商城網(wǎng)站建設(shè)
主站蜘蛛池模板: 免费看黄色的网址 | b毛片| 欧美a级毛片 | 欧美成人福利视频 | 日韩欧美国产成人 | 亚洲精品天堂自在久久77 | 香港三级做爰大爽视频 | 久久一级片 | 成人午夜影院 | 一级a毛片免费观看久久精品 | 九九精彩视频在线观看视频 | a级成人毛片免费视频高清 a级高清观看视频在线看 | 一级特黄aa大片欧美网站 | 亚洲精品一区二区三区中文字幕 | 国内自拍网红在线综合 | 欧美视频一区二区在线观看 | 国产成人高清视频在线观看免费97 | 特黄特黄黄色大片 | 欧美成人久久 | 成人国产精品毛片 | 一区二区日韩欧美 | 国产日韩欧美另类 | 日韩三级一区 | 8888奇米四色在线 | 久艹在线观看 | 日韩在线三级 | 午夜国产理论 | 日韩一级片在线免费观看 | 欧美精品国产一区二区三区 | 欧美精品一区视频 | 性色aⅴ在线观看swag | 加勒比一区在线 | 欧美日韩在线播一区二区三区 | 国产真实搭讪系列 | 亚洲天堂网视频 | 国产美女视频做爰 | 一区二区三区四区在线播放 | a级片观看| 免费高清特黄a 大片 | 久久99亚洲精品久久久久99 | 欧美成人欧美激情欧美风情 |