利用python對app包重簽名

前言:


? ? ? ?筆者最近工作中遇到對app(ipa,apk)進行重簽名的單子,由于筆者以python為主,網(wǎng)上并沒有太多python的重簽名的內(nèi)容,所以下面是介紹利用 python對app包重簽名的過程。

流程:


? ? ? 1.對ipa,apk的包,進行分析。簡單來說,重簽名的過程是對 ipa/apk包的文件或者屬性進行替換或者修改。

? ? ? 2.首先我們利用argparse命令行工具進行接收參數(shù),比如 --appname ,--icon 等,然后使用zipfile,tempfile,apktool,pillow等工具利用解壓-替換(傳參)-壓縮。

過程(以ipa為例):


1、命令行接收參數(shù)(自定義,看原ipa打包需要什么參數(shù)添加即可)

python3?resign.py?

? ? ? ? ? ? ?-c?1111? #客戶號

? ? ? ? ? ? ? -s old.ipa # 原文件路徑

? ? ? ? ? ? ? -d?new.ipa #修改后的路徑

? ? ? ? ? ? ? --server?http://xx.com? #后臺地址

? ? ? ? ? ? ? ?-a newappname #新app名稱

? ? ? ? ? ? ? -i?new_icon.png #新圖標

#命令行參數(shù)解析

import?argparse?

parser?=?argparse.ArgumentParser()?#創(chuàng)建一個解析對象

parser.add_argument()?#向該對象中添加你要關注的命令行參數(shù)和選項

?parser.add_argument(????????

?????'-ic','--icon',?????????#??name?or?flags

?????dest?=?'icon',??????????#??這個參數(shù)相當于把位置或者選項關聯(lián)到一個特定的名字

?????required=True,??????????#??當某個選項指定需要在命令中出現(xiàn)的時候用這個參數(shù)

?????metavar='<icon>',???????#??這個參數(shù)用于help?信息輸出中

?????help?='Path?to?icon'????#??使用這個參數(shù)描述選項作用

?)?

parser.add_argument(

? ? ?'-a','--app_name',

? ? ..........

?)

2、

????def?resignte(self,?old_src,?new_src,? update_table ):

????????#?update_table 傳參統(tǒng)一傳入字典

? ? ? ??#讀取原ipa文件路徑的前綴目錄

????????cur_dir?=?os.path.dirname( old_src )?

? ? ? ?#在同樣目錄下創(chuàng)建臨時文件

????????tmp_fd,?tmp_name?=?tempfile.mkstemp(dir=cur_dir)

????????os.close(tmp_fd)

? ? ? ? #如果傳參有圖片,則進行處理

????????if updata_table[' icon ']:

????????????self.process_icon(icon)

? ? ? ? #進行讀寫替換

????????with?zipfile.ZipFile( old_src ,?'r')?as?zin:

????????????with?zipfile.ZipFile( new_src ,?'w')?as?zout:

????????????????zout.comment?=?zin.comment

????????????????for?item?in?zin.infolist():

????????????????????#?update?file?asset

????????????????????if?item.filename?==?self.update_file:

????????????????????????content?=?zin.read(item.filename)

????????????????????????for?key,?value?in?update_table.items():

????????????????????????????content?=?content.replace(key,?value)

????????????????????????zout.writestr(item,?content)



歡迎各位大神交流,交流QQ群:688933850

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容