linuxandroidapk
1. linux和安卓具體是存在什麼關系
Android一種基於Linux的自由及開放源代碼的操作系統。Linux操作系統的內核,安卓則是基於Linux內核開發的操作系統,安卓在Linux的基礎上提供了驅動以及用戶編程介面。
操作系統管理計算機硬體與軟體資源的計算機程序,同時也是計算機系統的內核與基石。操作系統需要處理如管理與配置內存、決定系統資源供需的優先次序、控制輸入設備與輸出設備、操作網路與管理文件系統等基本事務。操作系統也提供一個讓用戶與系統交互的操作界面。
Android以Bionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。Android 為了達到商業應用,必須移除被GNU GPL授權證所約束的部份,例如Android將驅動程序移到 Userspace,使得Linux driver 與 Linux kernel徹底分開。
Bionic/Libc/Kernel/ 並非標準的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所產生的,這樣做是為了保留常數、數據結構與宏。
(1)linuxandroidapk擴展閱讀
APK安卓應用的後綴,是AndroidPackage的縮寫,即Android安裝包(apk)。APK是類似Symbian Sis或Sisx的文件格式。通過將APK文件直接傳到Android模擬器或Android手機中執行即可安裝。
apk文件和sis一樣,把android sdk編譯的工程打包成一個安裝程序文件,格式為apk。 APK文件其實是zip格式,但後綴名被修改為apk,通過UnZip解壓後,可以看到Dex文件,Dex是Dalvik VM executes的全稱,即Android Dalvik執行程序,並非java ME的位元組碼而是Dalvik位元組碼。
Android在運行一個程序時首先需要UnZip,然後類似Symbian那樣直接執行安裝,和Windows Mobile中的PE文件有區別;
這樣做對於程序的保密性和可靠性不是很高,通過dexmp命令可以反編譯,但這樣做符合發展規律,微軟的 Windows Gadgets或者說WPF也採用了這種構架方式。
在Android平台中dalvik vm的執行文件被打包為apk格式,最終運行時載入器會解壓然後獲取編譯後androidmanifest.xml文件中的permission分支相關的安全訪問,但仍然存在很多安全限制,如果你將apk文件傳到/system/app文件夾下會發現執行是不受限制的。
最終平時安裝的文件可能不是這個文件夾,而在android rom中系統的apk文件默認會放入這個文件夾,它們擁有著root許可權。
2. 如何查看安卓apk程序的源代碼
將apk文件拷貝至sdcard上。
命令順序如下:
進入Android sdk文件夾/tools目錄下
輸入adb shell
輸入su
輸入cd data
輸入cd app
這時就可以看到你安裝的所有的apk文件。輸入cp 空格 對應的apk 空格 /sdcard/
這樣就將apk文件拷貝出來了。
將apk文件後綴直接變成rar格式,可以看到熟悉的目錄結構了,
其中xml文件打開後都是二進制的,無法查看。
這時就用到了一個android4me的AXMLPrinter2工具。(請自行網路搜索)
輸入以下命令,將xml文件解析出來
java -jar AXMLPrinter2.jar showtimes_list.xml
此命令是在命令行中查看此showtimes_list.xml
將showtimes_list.xml生成xml文件,則輸入以下命令:
java -jar AXMLPrinter2.jar showtimes_list.xml > h.xml
目前進行到這一步,只能看到xml文件的內容,其工程中的java源文件還是看不到,看目錄結構下有一個classes.dex文件,我們需要將dex文件變為jar文件。
這里用到了另一個工具dex2jar。(自行搜索下載)
在Windows下解壓之後的目錄如下圖所示:
在命令行中,進入到此目錄下:
在Windows下,輸入以下命令:
dex2jar.bat c:\classes.dex
運行完之後,在C盤會多一個classes.dex.dex2jar.jar文件,此文件就是我們需要的jar文件。
利用jd-gui,將jar文件反向工程為java代碼。(請自行搜索下載)
它分為Windows、Linux、和max三個版本,這里我下載的是Windows版本的。
解壓之後,雙擊運行exe文件,選擇classes.dex.dex2jar.jar文件,相應的jar文件中的Java文件就被反向工程顯示出來了!
3. 安卓APK超過2g怎麼安裝
截止2021年11月,所有的安卓手機都支持2g文件的安裝,直接點擊安裝即可。
我們windows電腦較常見的文件系統是NTFS、FAT32、exFAT,而基於Linux的安卓系統常見的文件系統是Ext2、Ext3、Ext4等等,其中FAT32單個最大文件不能超過4GB,Ext2不能超過2GB,而有些安卓手機自帶的存儲器文件系統是Ext2,這就是為什麼超過2GB大型文件不能存儲進去的原因。
從安卓2.3以後,谷歌意識到了Ext2的一些不足於是開始加入了Ext3和Ext4文件系統格式支持,Ext3最大支持2TB的文件,Ext4最大支持16TB的文件,所以只要手機廠商有意改進這個問題的話手機還是可以支持大於2GB甚至4GB的文件。
支持納秒級時間戳:
Ext4之前的擴展文件系統的時間戳都是以秒為單位的,這已經能夠應付大多數設置,但隨著處理器的速度和集成程度(多核處理器)不斷提升,以及Linux開始向其他應用領域發展,它將時間戳的單位提升到納秒。
Ext4給時間范圍增加了兩個位,從而讓時間壽命在延長500年,Ext4的時間戳支持的日期到2514年4月25日,而Ext3隻達到2038年1月18日。
4. PHP獲取安卓apk包里的apk簽名
所需工具:aapt,Android SDK中的工具,只有一個exe,可以直接運行。
keytool,JDK中的工具,需要安裝JDK環境。
需要提供目標應用的apk
1、獲取包名
例如:aapt.exe mp badging C:\Users\Administrator\Desktop\demo-apk-1.0.1.8791.apk > C:\Users\Administrator\Desktop\1.txt
獲取到的包名是com.pakgname.swbg
2、獲取簽名
SHA1: 56:BD:02:6B:9D:53:D7:F5:32:B2:BC:BD:BB:34:5B:F1:CD:EF:7F:C0
這里藉助github開源的類apkparser
在項目composer.json中執行下面命令或修改composer.json引入即可
方法二適用於沒有JAVA環境的情況下,一般linux都會有openssl環境。
原理:通過分析方法一中,發現apk包解壓之後,裡面會有.rsa簽名證書,此證書是一個符合pki體系的x509證書,通過openssl命令即可查看信息。