安卓逆向工具的使用(一)

1.?JVM、DVM與ART的含義與區(qū)別
JVM(Java虛擬機)是一種基于棧架構的解釋性虛擬機,用于執(zhí)行Java字節(jié)碼。它負責將字節(jié)碼轉換為機器“可以理解”的機器碼,以便于操作系統(tǒng)在計算機中執(zhí)行。JVM虛擬機主要用于運行java代碼編譯后的.class文件。
DVM(Dalvik虛擬機)是一種用于運行Android應用程序的虛擬機,它是基于寄存器架構的。Dalvik是一種字節(jié)碼格式,它是專門為Android設計的,旨在使系統(tǒng)更有效地運行。DVM虛擬機在安卓系統(tǒng)4.4及以前的版本使用。在Dalvik虛擬機運行移動應用程序之前,首先需要將.java格式的代碼通過javac編譯成.class文件,然后通過DX工具(DX工具是一款強大的安卓開發(fā)工具,它可以幫助開發(fā)者創(chuàng)建和調試Android應用,支持Java和XML代碼。)將.class文件轉換成.dex文件。最終,Dalvik虛擬機所執(zhí)行的是這個.dex文件。DVM虛擬機在運行和啟動時,會將.dex文件轉換為機器碼。同時,如果一個APK文件中打包了多個dex文件,DVM虛擬機需要先將多個DEX文件合并然后再執(zhí)行轉換邏輯。 這個轉換成機器碼的過程體現(xiàn)了Dalvik虛擬機的JIT(Just-in-Time)特性。

ART(Android運行時)是Android的新的虛擬機,它提供了一種更快的、更高效的方法來執(zhí)行Android應用程序。與DVM不同,ART將應用程序的字節(jié)碼編譯為機器碼,以便計算機可以更快地執(zhí)行。ART虛擬機具備AOT特性(ahead of time),這種特性決定了APK在安裝至手機設備的時候,dex文件直接被轉換為機器碼得到.oat文件,ART直接執(zhí)行oat文件。同時,如果APK文件包含多個.dex文件,ART虛擬機在執(zhí)行的過程中也不需要將多個dex文件合并,這樣相較于DVM虛擬機APP運行的速度就會得到大幅度提升。

2.?JDK開發(fā)工具的安裝配置
JDK是JAVA語言的開發(fā)工具,是JAVA開發(fā)所需要的軟件集合,主要包括Java運行環(huán)境(jre,Java Runtime Environment)和JAVA工具。
第一步,確定操作系統(tǒng)的對應版本,以便選擇對應版本的JDK開發(fā)工具。可以通過右擊桌面上的計算機,點擊“屬性”按鈕,進入到計算機的“系統(tǒng)”界面查看系統(tǒng)版本。本例為64位的windows7操作系統(tǒng)。

?第二步,訪問JAVA官網(wǎng),https://www.oracle.com/java/technologies/downloads/#jdk17-windows,找到符合操作系統(tǒng)位數(shù)要求的JDK軟件包下載,這里建議下載jdk18。

第三步,找到下載到本地的exe可執(zhí)行文件,雙擊該文件,點擊“下一步”進行安裝。如果遇到“更改”選項按鈕,可以輸入自己的文件夾路徑進行自定義安裝路徑。這里可能需要更改兩次目錄,一次為JDK本身的目錄,另外一次是JRE的安裝路徑。?

第四步,配置JDK的系統(tǒng)環(huán)境變量。右擊計算機,依次點擊“屬性->更改系統(tǒng)設置->環(huán)境變量”按鈕,新建一個名為JAVA_HOME的環(huán)境變量,將環(huán)境變量的值設置為JAVA本地的安裝目錄,同時在Path系統(tǒng)變量中新增一個值為“%JAVA_HOME%\bin\”的環(huán)境變量。
?

第五步,測試JDK是否安裝成功,打開通過“WIN+R”打開“cmd”命令行,通過輸入命令“java -version”來測試,如果輸出版本號、運行環(huán)境和虛擬機信息,則表明JDK安裝和配置是成功的。

如需卸載JDK,可以通過控制面板卸載JDK程序,同時還需要清理JDK的注冊表。清理注冊表可通過“WIN+R”快捷鍵打開“regedit”,依此尋找“l(fā)ocal_machine->software->wow6432node->javasoft/Jremetrics”和“l(fā)ocal_machine->software->javasoft/Jremetrics”刪除清理即可。
3.?adt-bundle安卓開發(fā)環(huán)境配置
第一步,訪問安裝包的下載網(wǎng)站http://tools.android-studio.org/index.php/adt-bundle-plugin,選擇適合自己系統(tǒng)的版本下載到本地目錄(注意目錄不能帶有空格和中文)進行解壓。該軟件不需要安裝,可直接使用。解壓后的文件夾中包括eclipse和sdk文件夾以及SDK Manager.exe可執(zhí)行文件。

第二步,點擊文件SDK Manager.exe,配置安卓開發(fā)的SDK,這里以安卓4.4版本的SDK為例進行配置,只需勾選相應系統(tǒng)版本的SDK平臺下載安裝即可。下載后的SDK存放于SDK文件夾中的platforms文件夾中。?

?第三步,在“SDK/platform-tools”文件夾下存在常用的工具如adb.exe、fastboot.exe等,需要將這個目錄添加到系統(tǒng)環(huán)境變量PATH中。

?第四步,配置eclipse環(huán)境。進入到eclipse文件夾下,雙擊eclipse.exe可執(zhí)行文件打開。打開之后,首先要配置一下工作目錄,這里選擇F盤下的workspace作為項目的工作路徑,然后點擊“ok”。?

打開eclipse開發(fā)工具之后需配置java運行環(huán)境,在左側的選項卡右擊點擊“new”菜單,選擇“Java Project”創(chuàng)建一個java工程項目。在Project name項目名輸入框中輸入自己的項目名稱,這里輸入“demo”,同時需要配置好之前安裝的JRE的環(huán)境。最后,點擊Finish按鈕完成配置。

當打開之前創(chuàng)建的JAVA項目工程之后,會發(fā)現(xiàn)該項目工程下出現(xiàn)了剛才配置的java運行環(huán)境,即JRE System Library。

?除此之外,還需要配置一下項目工程的java編譯環(huán)境,點擊上方的“Projects”菜單,選擇“Properties”子菜單。打開屬性選項卡,點擊“Java Compiler”子選項卡,選擇一個“Compiler compliance level”,本例中選擇的是1.7,最后點擊“ok”按鈕。注意這里選擇的1.7版本的編譯環(huán)境,需要小于或等于目前安裝的jdk運行環(huán)境的版本。

可以通過修改“Java Build Path”選項卡中的內容來修改配置的JDK的運行環(huán)境,使用“Remove”按鈕可移除當前的運行環(huán)境,通過“Add Library”更換成新的java運行環(huán)境。

運行程序之前需要確保項目文件的編碼格式是utf-8,可通過修改“Resource”選項卡中的相應選項來修改編碼格式。

如果需要查看安卓端運行程序的日志,可以通過“Window”菜單下的“Show View”選項,點擊“Other”按鈕,選擇“LogCat”按鈕打開日志窗口。

另外,可通過“Window”菜單下的“Preferences”選項卡來配置代碼提示的功能。本例中將“Content Assist”選項卡中的“Auto activation triggers for Java”選項中的“.”修改為“.abcdefghijklmnopqrstuvwxyz”。表示這些字符串都會觸發(fā)代碼提示的功能。
最后寫一個簡單的java代碼測試下環(huán)境配置是否成功,通過右擊左側選項卡中的src文件,點擊“new”菜單的“class”子菜單。輸入類名稱為“test”,勾選“public static vois main(String[] args)”和“Inherited abstract methods”兩個選項框,完成自動繼承抽象類,聲明主函數(shù)的功能,點擊“Finish”按鈕完成新建class文件的配置。?

在新建的class文件中輸入代碼語句System.out.printlnt("hello"),然后點擊上方的運行按鈕“run”,完成第一個java代碼的運行。?
