-
當(dāng)前位置:首頁(yè) > 綜合 > 杭州 > 專(zhuān)題列表 > 正文
應(yīng)用程序(APPLICATIONS)
應(yīng)用程序框架(APPLICATIONS FRAMEWORK)
Android運(yùn)行時(shí)(ANDROID RUNTIME)
核心庫(kù)
DVM(Dalvik Virtual Machine)
函數(shù)庫(kù)(LIBRARIES)
Linux內(nèi)核(LINUX KERNEL)
fork(),創(chuàng)建一個(gè)Zygote進(jìn)程(這種方式不會(huì)被調(diào)用,因?yàn)橹挥幸粋€(gè)Zygote進(jìn)程)
forkAndSpecialize(),創(chuàng)建一個(gè)非Zygote進(jìn)程
forkSystemServer(),創(chuàng)建一個(gè)系統(tǒng)服務(wù)進(jìn)程
dalvik字節(jié)碼編輯器(dalvik字節(jié)碼編輯器2.6)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于dalvik字節(jié)碼編輯器的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具:開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫(xiě)出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶(hù)端
官網(wǎng):https://ai.de1919.com
本文目錄:
一、Dalvik虛擬機(jī)是如何執(zhí)行程序的
Android系統(tǒng)架構(gòu)采用分層思想,這樣可以減少層與層之間的依賴(lài)性
Android系統(tǒng)由以下幾個(gè)部分組成:
Android系統(tǒng)運(yùn)行過(guò)程:
1.加載內(nèi)核
2.執(zhí)行init進(jìn)程,init進(jìn)程完成設(shè)備初始化,然后讀取init.rc文件并且啟動(dòng)外部程序Zygote。
3.Zygote進(jìn)程初始化Dalvik虛擬機(jī),啟動(dòng)system_server并且進(jìn)入Zygote模式,通過(guò)Socket等候命令。
4.當(dāng)執(zhí)行一個(gè)Android應(yīng)用程序的時(shí)候,system_server進(jìn)程通過(guò)Binder IPC方式發(fā)送命令給Zygote,Zygote收到命令之后通過(guò)fork自身創(chuàng)建一個(gè)Dalvik虛擬機(jī)的實(shí)例來(lái)執(zhí)行應(yīng)用程序的入口函數(shù),這樣一個(gè)程序就啟動(dòng)完成了(每一個(gè)應(yīng)用程序獨(dú)自占據(jù)一個(gè)dalvik虛擬機(jī)實(shí)例)。
執(zhí)行流程:
zygote創(chuàng)建進(jìn)程的方法:
特點(diǎn):
zygote進(jìn)程可以再fork出其他進(jìn)程
非zygote進(jìn)程則不能fork出其他進(jìn)程
system_server進(jìn)程在終止后他的子進(jìn)程也必須終止
執(zhí)行過(guò)程:
當(dāng)進(jìn)程fork成功之后,執(zhí)行的工作就交給了Dalvik虛擬機(jī)
Dalvik虛擬機(jī)首先通過(guò)loadClassFromDex()函數(shù)完成類(lèi)的加載工作,每個(gè)類(lèi)被成功解析后都會(huì)擁有一個(gè)ClassObject類(lèi)型的的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在運(yùn)行時(shí)環(huán)境(Android Runtime)中,虛擬機(jī)使用gDvm.loadClasses全局哈希表來(lái)存儲(chǔ)和查詢(xún)所有裝載進(jìn)來(lái)的類(lèi)
字節(jié)碼驗(yàn)證器使用dvmVerifyCodeFlow()函數(shù)對(duì)裝入的代碼進(jìn)行校驗(yàn)
接著虛擬機(jī)調(diào)用FindClass()函數(shù)查找并且裝載main方法類(lèi)
隨后調(diào)用dvmInterpret()函數(shù)初始化解釋器并且執(zhí)行字節(jié)碼流。
Dalvik虛擬機(jī)的JIT
JIT(Just-in-time Compilation,即時(shí)編譯),又稱(chēng)動(dòng)態(tài)編譯,通過(guò)在運(yùn)行時(shí)將字節(jié)碼翻譯為機(jī)器碼的技術(shù),使得程序的運(yùn)行速度更快。
冷路徑和熱路徑
在函數(shù)中代碼很少順序執(zhí)行,多數(shù)代碼有很多執(zhí)行路徑。如果有些路徑很少被執(zhí)行,就被稱(chēng)為“冷路徑”,如果有些路徑經(jīng)常被執(zhí)行就被稱(chēng)為“熱路徑”。
主流的JIT包括兩種字節(jié)碼編譯方式
method方式:以函數(shù)或者方法為單位進(jìn)行編譯,編譯整個(gè)方法的代碼,在“冷路徑”上浪費(fèi)過(guò)多的編譯時(shí)間。并且耗費(fèi)更多內(nèi)存。
trace方式:以trace為單位進(jìn)行編譯,trace方式可以快速獲得熱路徑,使用更短的時(shí)間更少的內(nèi)存來(lái)編譯代碼。
二、有什么手機(jī)軟件可以修改apk軟件?
你好,建議使用小米人APK改之理:
小米人APK改之理是一款可視化的用于修改安卓Apk程序文件的工具,集成了ApkTool、Dex2jar、JD-GUI等Apk修改工具,集Apk反編譯、Apk打包、Apk簽名,支持語(yǔ)法高亮的代碼編輯器,基于文件內(nèi)容的關(guān)鍵字(支持單行代碼或多行代碼段)搜索、替換引擎,打造成可視的、一體化的APK修改工具,從而大大簡(jiǎn)化Apk修改過(guò)程中的繁瑣操作,修改更輕松。
APK簡(jiǎn)單認(rèn)識(shí):
APK是AndroidPackage的縮寫(xiě),即Android安裝包(apk)。
APK是類(lèi)似Symbian Sis或Sisx的文件格式。
通過(guò)將APK文件直接傳到Android模擬器或Android手機(jī)中執(zhí)行即可安裝。
apk文件和sis一樣,把a(bǔ)ndroid sdk編譯的工程打包成一個(gè)安裝程序文件,格式為apk。
APK文件其實(shí)是zip格式,但后綴名被修改為apk,通過(guò)UnZip解壓后,可以看到Dex文件,Dex是Dalvik VM executes的全稱(chēng),即Android Dalvik執(zhí)行程序,并非Java ME的字節(jié)碼而是Dalvik字節(jié)碼。
Android在運(yùn)行一個(gè)程序時(shí)首先需要UnZip,然后類(lèi)似Symbian那樣直接,和Windows Mobile中的PE文件有區(qū)別。
在Android平臺(tái)中dalvik vm的執(zhí)行文件被打包為apk格式,最終運(yùn)行時(shí)加載器會(huì)解壓然后獲取編譯后的androidmanifest.xml文件中的permission分支相關(guān)的安全訪問(wèn),但仍然存在很多安全限制,如果你將apk文件傳到/system/app文件夾下會(huì)發(fā)現(xiàn)執(zhí)行是不受限制的。
安裝的文件可能不是這個(gè)文件夾,而在android rom中系統(tǒng)的apk文件默認(rèn)會(huì)放入這個(gè)文件夾,它們擁有著root權(quán)限。
三、電腦apk文件怎么打開(kāi) 電腦打開(kāi)apk文件的方法?
你可以右鍵點(diǎn)擊文件選擇打開(kāi)方式,然后選擇用winrar打開(kāi) 來(lái)查看文件中的內(nèi)容。或者更改文件后綴名為.rar 然后解壓 會(huì)得到一個(gè)文件夾,里面就是改程序的源文件了。將APK 文件拷貝入手機(jī)的存儲(chǔ)卡,在手機(jī)上運(yùn)行文件管理類(lèi)軟件,找到拷貝的APK 文件進(jìn)行安裝。代碼如下:META-INF (注:Jar文件中??梢钥吹剑?;res (注:存放資源文件的目錄) ;AndroidManifest.xml (注:程序全局配置文件) ;classes.dex (注:Dalvik字節(jié)碼);resources.arsc (注:編譯后的二進(jìn)制資源文件)。
四、求助:Android逆向涉及到的dalvik字節(jié)碼和smali文件,ARM匯編三者的聯(lián)系和區(qū)別是什么
dalvik字節(jié)碼就是smali或者(java)用編譯產(chǎn)生的dalvik可執(zhí)行文件
ARM匯編,是操作芯片級(jí)的指令集。這三個(gè)東西不在一個(gè)層面
android
|(編譯產(chǎn)生.dex,也可理解為smali壓縮文件,也就是虛機(jī)可執(zhí)行文件)
dalvik虛機(jī)
|
ARM匯編
|
硬件
以上就是關(guān)于dalvik字節(jié)碼編輯器相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢(xún),客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
risd景觀設(shè)計(jì)(rda景觀設(shè)計(jì))
杭州英語(yǔ)培訓(xùn)學(xué)校有哪些(杭州英語(yǔ)培訓(xùn)學(xué)校有哪些地方)
抖音經(jīng)常訪問(wèn)的人突然沒(méi)了(抖音個(gè)人主頁(yè)經(jīng)常訪問(wèn)的人不見(jiàn)了)