我想从 hex/dalvik apk 代码中替换一个字符串。我意识到这需要找到字符串从 Android 类项目转换为签名的 apk 文件时如何编码。
这可能吗?好吧,我知道在代码中,一切皆有可能.. 但是这里有人知道怎么做吗?我了解到,可以使用简单的 zip 存档(例如替换 SystemUI.apk 的图标)在 Windows 平台上删除和添加 .apk 文件,而不会破坏 apk .. 但是如何以编程方式进行呢?特别是在python中?
有人对如何做到这一点有任何想法吗?
我努力了:
import zipfile
zf=zipfile.ZipFile('APK.apk') # my zip file
for filename in ['classes.dex']: # zipped file content file
data=zf.read(filename)
data=data.replace('mystring','newstring') #replace string within the content file
file=open('classes.dex','wb')
file.write(data) # write NEW content file to local disk
file.close()
zin=zipfile.ZipFile('APK.apk','r') # create zip in and zip out
zout=zipfile.ZipFile('APK.apk','w') # iterate through zipped contents and
for item in zin.infolist(): # copy all EXCEPT 'classes.dex' content file
buffer=zin.read(item.filename)
if (item.filename!='classes.dex'):
zout.writestr(item,buffer)
zout.close()
zin.close()
zf=zipfile.ZipFile('APK.apk',mode='a') # finally, add new content file from my local disk
zf.write('classes.dex',arcname='classes.dex')
zf.close()
这将获取原始 APK.apk 文件,并在其中一个压缩内容文件中重写一个字符串,然后将其重新打包回 APK.apk。问题是:ORIGINAL APK.apk = 170 kb NEW APK.apk = 399 kb and NOT INSTALLABLE,apk 被“损坏”,Android 系统不会安装 apk。