Android Apk反編譯指令碼(python)

2021-10-08 00:13:32 字數 4298 閱讀 4923

#!/usr/bin/env python3

import os

if'__main__'

== __name__:

print

('*****===python start*****===\n'++

'請確保apktool.jar和apk在同一資料夾內'

) in_temp =

input

("請輸入指令:(f:反編譯)\n"

)if in_temp ==

"f":

print

('**********=開始反編譯**********='

)# apk path

apkpath =

input

('請輸入需要反編譯的apk所在路徑:\n'

)# output file path

if apkpath.strip()==

'':print

('請輸入正確的路徑'

)else

: outpath =

(apkpath.split(

'.')[0

]+'_new'

)# use apktool

cmd =

'apktool d -f '

+ apkpath +

' -o '

+ outpath

print

('-----------start working with apktool-----------'

) os.system(cmd)

print

('**********=反編譯完成**********='

) temp =

input

("請輸入指令:(b:回編譯)\n"

)if temp ==

'b':

print

('**********=開始回編譯**********='

)# apk file path

# apkfile = input('請輸入反編譯後的資料夾所在路徑:\n')

# output file name

backapk =

'apktool b -f '

+ apkpath.split(

'.')[0

]+'_new'

print

('-----------start working with apktool-----------'

) os.system(backapk)

print

('**********=回編譯完成**********='

) in_num =

input

("有無證書?請輸入:1.有 2.沒有\n"

)if in_num ==

"2":

print

('**********=開始生成簽名檔案**********='

)# apk file path

# apkfile = input('請輸入反編譯後的資料夾所在路徑:\n')

# 在dist資料夾下生成keystore

# 別名

alias =

input

('請輸入證書別名(四個字以上)\n'

)# keystore名

keyname =

input

('請輸入keystore名\n'

)# 證書

keyalg =

input

('請輸入加密方式\n'

)# 有效期限

validity =

input

('請輸入有效期限\n'

) cmd_key =

'keytool -genkey -v -keystore '

+ apkpath.split(

'.')[0

]+'_new'

+'\\dist\\'

+ keyname +

' -alias '

+ alias +

' -keyalg '

+ keyalg +

' -validity '

+ validity

print

(cmd_key)

print

('-----------start working with apktool-----------'

) os.system(cmd_key)

print

('**********=簽名檔案已生成**********='

)print

('**********=開始對apk進行簽名**********='

)# apk file path

# apkfile = input('請輸入反編譯後的dist資料夾所在路徑:\n')

# 1.keystore檔案的絕對路徑

# keypath = input('請輸入keystore所在路徑:\n')

# 2.keystore檔案的密碼

keypsd =

input

('請輸入keystore的密碼:\n'

)# 3.新的apk包名

newapk =

input

('請輸入新的apk名(.apk結尾)\n'

)# 4.要簽名的apk包路徑

# apkpath = input('請輸入要簽名的apk包路徑\n')

# 5.keystore的別名

# alias = input('請輸入keystore別名\n')

cmd_sign =

'jarsigner -verbose -keystore '

+ apkpath.split(

'.')[0

]+'_new'

+"\\dist\\"

+ keyname +

' -storepass '

+ keypsd +

' -signedjar '

+ apkpath.split(

'.')[0

]+'_new'

+"\\dist\\"

+ newapk +

' '+ apkpath +

' '+ alias

os.system(cmd_sign)

print

('**********=簽名完成**********='

)else

:print

('**********=開始對apk進行簽名**********='

)# apk file path

apkfile =

input

('請輸入反編譯後的dist資料夾所在路徑:\n'

)# 1.keystore檔案的絕對路徑

keypath =

input

('請輸入keystore所在路徑:\n'

)# 2.keystore檔案的密碼

keypsd =

input

('請輸入keystore的密碼:\n'

)# 3.新的apk包名

newapk =

input

('請輸入新生成的apk名(.apk結尾)\n'

)# 4.要簽名的apk包路徑

apkpath =

input

('請輸入要簽名的apk包路徑(.apk結尾、即dist資料夾下的那個apk)\n'

)# 5.keystore的別名

alias =

input

('請輸入keystore別名\n'

) cmd_sign =

'jarsigner -verbose -keystore '

+ keypath +

' -storepass '

+ keypsd +

' -signedjar '

+ apkfile +

'\\'

+ newapk +

' '+ apkfile +

'\\'

+ apkpath +

' '+ alias

os.system(cmd_sign)

print

('**********=簽名完成**********='

)print

("*****===python end*****==="

)

初學,**可能還不夠完善,後面繼續完善!!

歡迎各位大佬指正錯誤

反編譯Android apk檔案

2.找到安裝軟體的 dex譯檔案 執行安裝軟體後,會在android檔案系統下生成乙個 dex檔案,一般在目錄 data dalvik cache下,也可以通過adb命令找到 adb shell cd data dalvik cache cd data dalvik cache ls 指令引數解釋 ...

android apk 檔案反編譯

android 反編譯apk 的好處 第一,當自己 加混淆的時候,找不到class 可以反編譯下看看,到底是沒有遮蔽,還是有其他的問題 第二,參考下別人的 是怎麼寫的 使用工具 就乙個 apktool 2.1.1.jar dex2jar.sh的包 apktool 是反編譯xml 的 dex2jar....

Android apk反編譯方法

準備工具 1.dex2jar 2.jdgui 3.android apktool 將準備反編譯的apk的字尾由.apk改為.zip。然後解壓這個zip檔案,結構如圖 將裡面的classes.dex拷貝到dex2jar的解壓目錄下,開啟terminal並進入到dex2jar的解壓目錄下,在termin...