国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android和iOS包批量重簽名

2019-10-21 21:46:29
字體:
供稿:網(wǎng)友

本文實(shí)例為大家分享了Android和iOS包批量重簽名的具體代碼,供大家參考,具體內(nèi)容如下

Android篇

環(huán)境要求

1 安裝winrar,然后配置winrar的環(huán)境變量,要用到winrar指令

2 配置java的bin目錄到環(huán)境變量,要用到j(luò)arsigner指令

重簽名步驟說明:

1 從母包復(fù)制一個(gè)子包

2 刪除子包的簽名文件META-INFO

3 根據(jù)需要修改子包的文件,比如渠道號(hào)文件之類

4 重簽名子包 

對(duì)應(yīng)的python腳本

import osimport sysimport shutilimport json ORIGINAL_APK='母包.apk'UNSIGN_APK='unsign.apk'SIGNED_APK={"/"子包1.apk/"":1,"/"子包2.apk/"":2,"/"子包3.apk/"":3,"/"子包4.apk/"":4} KEY_STORE='keystore文件.keystore'KEY_PASS='key密碼'STORE_PASS='store密碼' def copy_apk(src_f,dst_f): if not os.path.isfile(src_f): print("%s not exist"%(src_f)) else: fpath,fname=os.path.split(dst_f) shutil.copyfile(src_f,dst_f) print("copy %s -> %s"%(src_f,dst_f))  def zip_del_file(apk_f,del_f): os.system("winrar d %s %s"%(apk_f,del_f)) print('zip_del_file:'+del_f) def zip_add_file(apk_f,channel): del_dir("assets") os.makedirs("assets") f=open("assets//AppParamSetting.txt",'w') f.write('{"channel":%s,"bundleIdentifier":""}'%(channel)) f.close() os.system("winrar a -ad %s %s"%(apk_f,"assets//AppParamSetting.txt")) def del_file(f): os.remove(f) print('del_file:'+f) def del_dir(f_dir): if os.path.exists(f_dir): shutil.rmtree(f_dir) print("del_dir:"+f_dir) def sign_app(unsigned_app, signed_app): signcmd='jarsigner -verbose -keystore %s -keypass %s -storepass %s -signedjar %s -digestalg SHA1 -sigalg MD5withRSA %s sfish' % (KEY_STORE,KEY_PASS,STORE_PASS,signed_app,unsigned_app) os.system(signcmd) print(signcmd) if __name__ == '__main__': cur_dir=os.getcwd() print('cur_dir'+cur_dir) copy_apk(ORIGINAL_APK,"tmp_"+ORIGINAL_APK) zip_del_file("tmp_"+ORIGINAL_APK,"META-INF") for key in SIGNED_APK.keys(): channel=SIGNED_APK[key] zip_add_file("tmp_"+ORIGINAL_APK,channel) sign_app("tmp_"+ORIGINAL_APK,key) del_dir("assets") del_file("tmp_"+ORIGINAL_APK) input("Done")

iOS篇

環(huán)境要求:

1 mac機(jī)子

2 證書文件,打開:Launchapd(火箭圖標(biāo))->其他 -> 鑰匙串訪問,就在那里

3 .mobileprovision文件

重簽名步驟說明:

1 從.mobileprovision文件生成entitlements.plist文件

2 解壓ipa,會(huì)得到一個(gè)Payload目錄,再往里是一個(gè)xxx.app,顯示包內(nèi)容可以看到里面的東西

3 刪除簽名文件,即:Payload/xxx.app/_CodeSignature目錄

4 根據(jù)需要修改文件,比如渠道文件

5 重簽名

6 壓縮ipa

對(duì)應(yīng)的python腳本

#!/usr/bin/python import osimport sysimport json ORIGINAL_IPA='母包.ipa'SIGNED_APK={"/"子包1.ipa/"":1,"/"子包2.ipa/"":2,"/"子包3.ipa/"":3,"/"子包4.ipa/"":4}CERT_FILE='證書文件'MOBILE_PROVISION_UUID = 'mobileprovision的uuid' def get_mobile_provision_dir(): return os.path.join(os.getenv('HOME'),'Library/MobileDevice/Provisioning Profiles/') def get_mobile_provision_file(uuid): return os.path.join(get_mobile_provision_dir(), uuid + ".mobileprovision") def unzip_app(): os.system('unzip -qo ./%s -d ./'%(ORIGINAL_IPA)) print('unzip_app %s done!'%(ORIGINAL_IPA))  def del_code_signature(): os.system("rm -rf ./Payload/sfish.app/_CodeSignature") print('del_code_signature done!') def resign_app(): os.system('/usr/bin/codesign --continue -f -s "%s" --entitlements "%s" "%s"'%(CERT_FILE,'./entitlement.plist','./Payload/sfish.app')) print('resign_app done!') def zip_app(f_ipa): os.system('zip -r %s ./Payload'%(f_ipa)) print('zip_app done!') def del_payload(): os.system('rm -r ./Payload') def gen_entitlements(uuid, out_file_name): os.system('security cms -D -i "%s" > entitlement_full.plist '%(get_mobile_provision_file(uuid) )) os.system('/usr/libexec/PlistBuddy -x -c /'Print:Entitlements/' entitlement_full.plist > "%s" '%( out_file_name)) def rep_emb_file(uuid): os.system('cp "%s" ./Payload/sfish/embedded.mobileprovision' % (get_mobile_provision_file(uuid))) def update_channel_file(channel): f_channel='./Payload/xxx.app/Data/Raw/channel.txt' fr=open(f_channel,'r') txt=fr.read() fr.close() js=json.loads(txt) js['channel_id']=channel fw=open(f_channel,'w') fw.write(json.dumps(js)) fw.close() if __name__ == '__main__': gen_entitlements( MOBILE_PROVISION_UUID, "entitlement.plist" ) unzip_app() del_code_signature() for key in SIGNED_APK.keys():  channel=SIGNED_APK[key]  update_channel_file(channel)  resign_app()  zip_app(key) del_payload()

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 营山县| 博湖县| 吉首市| 蒲江县| 开远市| 久治县| 安远县| 汕尾市| 金乡县| 甘南县| 丽江市| 当雄县| 嘉兴市| 全州县| 沽源县| 利津县| 庄浪县| 陇川县| 寻甸| 手游| 浙江省| 扎鲁特旗| 宾阳县| 广安市| 荥经县| 资兴市| 万年县| 陈巴尔虎旗| 合江县| 山阴县| 昌江| 滨州市| 泰顺县| 华容县| 肥乡县| 安仁县| 宁海县| 迭部县| 曲松县| 贵溪市| 治多县|