android应用发布时需要设置签名,以此来确定应用的唯一行,在7.0之前只有V1签名,V2是为解决V1对未压缩文件没有签名问题推出的,该文章只是针对7.0以下设备有效。该方法不会破坏原APP的原始签名。
需要一点反编译APP的知识
- android开发环境
- Python运行环境
- 解压缩APK
- 要修改的APP
得到原有的APP的包名,以及要修改的累名路径,这个不难,新建Android项目,保持包名和路径一致,调试运行,确保自己新建的项目正常运行,正常运行后可以打包,修改后缀名.APK为.ZIP,得到classes.dex文件。
#!/usr/bin/python
import sys
import struct
import hashlib
from zlib import adler32
def update_checksum(data):
m = hashlib.sha1()
m.update(data[32:])
data[12:12+20] = m.digest()
v = adler32(buffer(data[12:])) & 0xffffffff
data[8:12] = struct.pack("<L", v)
def main():
if len(sys.argv) != 4:
print("usage: %s dex apk out_apk" % __file__)
return
_, dex, apk, out_apk = sys.argv