Android和iOS包中如何实现批量重签名
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"Android和iOS包中如何实现批量重签名",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Android和iOS包中如何实现批量重签名"
千家信息网最后更新 2026年11月03日Android和iOS包中如何实现批量重签名
本篇内容主要讲解"Android和iOS包中如何实现批量重签名",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Android和iOS包中如何实现批量重签名"吧!
Android篇
环境要求
1 安装winrar,然后配置winrar的环境变量,要用到winrar指令
2 配置java的bin目录到环境变量,要用到jarsigner指令
重签名步骤说明:
1 从母包复制一个子包
2 删除子包的签名文件META-INFO
3 根据需要修改子包的文件,比如渠道号文件之类
4 重签名子包
对应的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篇
环境要求:
1 mac机子
2 证书文件,打开:Launchapd(火箭图标)->其他 -> 钥匙串访问,就在那里
3 .mobileprovision文件
重签名步骤说明:
1 从.mobileprovision文件生成entitlements.plist文件
2 解压ipa,会得到一个Payload目录,再往里是一个xxx.app,显示包内容可以看到里面的东西
3 删除签名文件,即:Payload/xxx.app/_CodeSignature目录
4 根据需要修改文件,比如渠道文件
5 重签名
6 压缩ipa
对应的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()到此,相信大家对"Android和iOS包中如何实现批量重签名"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
文件
环境
内容
目录
变量
密码
指令
步骤
渠道
脚本
证书
学习
配置
实用
更深
东西
个子
兴趣
图标
实用性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网金融科技
厦门中拓互联网络科技有限公司
华宇互联网科技
互联网科技小贷
唐信互联网科技
广州宏创互联网科技
壕鑫互联网络科技
科技互联网公司logo
互联网科技的未来发展
科技互联网创业计划书
博兴的互联网电子科技公司
西藏七维空间互联网科技有限公司
阿里互联网科技公司
互联网金融科技展
互联网新科技动漫ppt素材
山东有哪些互联网科技公司
科技互联网的核心竞争力
中国互联网有什么科技
南京一网一红互联网科技有限公司
保山浩联互联网科技有限公司
奇酷互联网络科技
温州喔噻互联网科技有限公司
互联网系的金融科技公司
常德市电业局互联网科技部
互联网大会黑科技排名
互联网科技人工智能实验室
996高科技互联网公司
互联网科技平台产品运营
互联网领先科技成果宣传视频
恒生科技互联网指数十大成分股