使用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)

猜你喜欢

转载自blog.csdn.net/zmjwf521/article/details/114885390