您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:关于使用python反编译apk签名出包的问题

51自学网 2021-10-30 22:48:53
  python
这篇教程关于使用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)

到此这篇关于使用python反编译apk签名出包的文章就介绍到这了,更多相关python反编译apk内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


pandas 使用insert插入一列
python用pyecharts实现地图数据可视化
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。