ApkTool---反編譯,回編譯

準備工作:
1,apktool.jar (重點,需要最新的?或者比較新的)
2,aapt.exe
3,apktool.bat

將上訴文件放在一起,配置環境。

反編譯:

apktool d -f <文件路徑> -o <反編譯後存放的文件路徑>

注意:反編譯後存放的文件夾下東西會被"清空",實際上是新建一個同名文件。
還有就是文件有一個apktool.yml文件,回編譯時需要。

回編譯:

apktool b <反編譯後存放的文件路徑>

文件路徑和反編譯的文件路徑一樣,需要一個apktool.yml。
除非把整個文件遷移到別的地方,單單複製apktool.yml,apk內容爲空。

回編譯後會生成兩個文件:bulid,dist。

回編譯的apk在dist文件夾下。

這時候apk還不能安裝,會顯示,文件與原先的簽名不一樣。

簽名

keytool -genkey -alias key.keystore -keyalg RSA -validity 30000 -keystore key.keystore

#############################
Keytool 選項 描述
-genkey 產生一個鍵值對(公鑰和私鑰)
-v 允許動作輸出
-alias 鍵的別名。只有前八位字符有效。
-keyalg 產生鍵的加密算法。支持DSA和RSA。
-keysize 產生鍵的長度。如果不支持,keytool用默認值1024 bits.通常我們用2048 bits 或更長的key。
-dname 專有名稱,描述誰創建的密鑰。該值被用作自簽名證書的頒發者和主題字段。注意你可以不在命令行指定。如果沒有指定keytool會提示你(CN,
OU, and so on)。
-keypass 鍵的密碼。 主要爲了安全起見,如果沒提供,keytool會提示你輸入。
-validity 鍵的有效期,單位:天
-keystore.keystore 用於存儲私鑰的文件。
-storepass 私鑰存儲文件的密碼。 主要爲了安全起見,如果沒提供,keytool會提示你輸入。這個密碼不會存儲在你的shell歷史記錄中

最後輸入y確定。

在當前目錄下回生成一個key.keystore文件,就是所需要的簽名。
#############################

然後就可以安裝了。

內容有一部份參考這裏


對於上面的操作,我們可以做一個小練習:
對輸入進行MD5加密“,將這個程序編譯好的apk。對其進行破解。原程序中時,對輸入的進行MD5加密,經過一些列流程後生成註冊碼,對註冊碼的一個驗證。我們這裏將其進行破解。

在smali-》com…-》目錄下找到MainActivity$1.smali文件

找到以下if-nez。將其改成if-eqz就可以了。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章