关于使用python反编译apk签名出包的问题
作者:花了脸 发布时间:2022-12-19 19:39:04
标签:python,反编译,apk,签名出包
demo实现脚本下载
安装工具
需要python3,apktool.jar,apktool
1.用apktool进行反编译
cmd = 'apktool d -f '+apkPath+' -o '+outPath
2.修改需要配置的参数值
说明:如果是AndroidManifest.xml,注意在 parse 前 一定要设置namespace, 不然就会出现 ns0:name错误, 而不是预期的 android:name,设置namespace的方法 ET.register_namespace('android', "http://schemas.android.com/apk/res/android")
curPath = (apktoolPath+'/ihdrm202103161405apk/')
tree = ET.parse(curPath + 'AndroidManifest.xml') #打开xml
root = tree.getroot() #找到manifest的根文件
print(root.tag) #我们输出一下就知道root目录就是manifest目录
print(root.attrib) #输出一下root目录的成员
#获取package
versionName = root.get('package')
#修改
root.set('package', 'com.youxi.jiayou')
#获取application目录
application = root.find('application')
#遍历所有meta-data
for item in application.iter('meta-data'):
name = item.attrib.get(SPACE +'name')
value = item.attrib.get(SPACE +'value')
3.修改应用名字
def appnamechang():
print('--------修改应用名字完成--------')
tree = read_xml(in_path)
text_nodes = get_node_by_keyvalue(find_nodes(tree, "string"), {"name": "app_name"})
change_node_text(text_nodes, "霸道传奇")
# write_xml(tree, "./strings的绝对路径.xml")
write_xml(tree,apktoolPath+"/ihdrm202103161405apk/res/values/strings.xml")
4.修改icon图标
source_path = (apktoolPath+'/icon')
target_path = (apktoolPath+'/ihdrm202103161405apk/res')
def copy_search_file():
print('--------修改icon成功--------')
'''将一个目录下的全部文件和目录,完整地<拷贝并覆盖>到另一个目录'''
# source_path 源目录
# target_path 目标目录
if not (os.path.isdir(source_path) and os.path.isdir(target_path)):
return
for a in os.walk(source_path):
# #创建目录
for d in a[1]:
dir_path = os.path.join(a[0].replace(source_path,target_path),d)
if not os.path.isdir(dir_path):
os.makedirs(dir_path)
#拷贝文件
for p in a[2]:
dep_path = os.path.join(a[0],p)
arr_path = os.path.join(a[0].replace(source_path,target_path),p)
shutil.copy(dep_path,arr_path)
5.删除签名回编译
cmd = 'apktool b -f '+outPath
6.创建证书
def createzu():
cmd = 'keytool -genkey -alias jayoux.keystore -keyalg RSA -validity 20000 -keystore jayoux.keystore'
print('-------- 创建证书--------')
os.system(cmd)
来源:https://blog.csdn.net/zmjwf521/article/details/114885390


猜你喜欢
- 假设当我们只需知道某个数组有没有某个属性,如果找到了直接跳出循环,省略掉剩下的循环步骤是较优化的操作,但是for中是可以利用break跳出循
- 用于处理XML文档的DOM元素属性 childNodes:返回当前元素所有子元素的数组; firstChild:返回当前元素的第一个下级子元
- 本人最近在做字符识别,所以自行在网上寻找方法,接触到tesseract,自己按照网上方法做的时候,也遇到一些问题
- 前言第一次尝试用Pyinstaller打包Pytorch,碰见了很多问题,耗费了许多时间!想把这个过程中碰到的问题与解决方法记录一下,方便后
- 有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而Go从语言层面就支持了并行。gorou
- 一、pycharm配置1、部署配置工具==》部署==》配置2、python解释器文件==》设置==》项目:xx==》python解释器3、运
- 如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父类的构造方法。子类不重写 __init__,实例化子类时,会自动调
- 数组:【重点1】implode(分隔,arr) 把数组值数据按指定字符连接起来例如:$arr=array('1','
- 今天下午主要做了个实验,是针对 测试表的列,进行添加,修改,删除的。做法如下: 增加一列: alter table emp4 add tes
- ThinkPHP提供的视图查询应用功能十分强大,用户利用视图查询功能可以将多个数据表的字段内容按需要进行指定和筛选,组织成一个基于这些数据表
- 区别与联系: 1、get是从服务器上获取数据,post则是向服务器传送数据; 2、get将表单中数据的按照variable=value的 形
- 本文实例讲述了Python常见数据类型转换操作。分享给大家供大家参考,具体如下:类型转换主要针对几种存储工具:list、tuple、dict
- 步骤1:关闭MySQL服务右击【计算机】,选择【管理】,打开“计算机管理”界面选择【服务和应用程序】
- 对于数据库应用程序,数据库的安全是至关重要的。SQL Server的安全功能可以保护数据免受未经授权的泄漏和篡改!下边是对安全一章的总结!首
- 问题:想装tfx,但是提示不支持python3.9。解决方案:新建一个环境tfx专门用来运行流水线,这个环境安装python3.8。1.查看
- set oSQLServer =server.createobject("SQLDMO.SQLServer")oSQLS
- 本文实例讲述了python妹子图简单爬虫实现方法。分享给大家供大家参考。具体如下:#!/usr/bin/env python#coding:
- 爬取一些网站下指定的内容,一般来说可以用xpath来直接从网页上来获取,但是当我们获取的内容不唯一的时候我们无法选择,我们所需要的、所指定的
- 之前看到过很多人写的飞机大战,当然了之前我也写过多个版本,总体来说功能是实现了,但总感觉不够“炫”今天浏览Python资料的时候,意外发现了
- 1. 引言在Python中有很多好玩的花式打印,对厉害的高手来说可能是小菜一碟,对入门的小白来说往往让人望而退步,我们今天就来挑战下面三个常