我想从hex / dalvik apk代码替换单个字符串。我意识到这将需要找到字符串在从Android类项目转换为签名的apk文件时如何编码。
这可能吗?嗯,我知道在代码中,任何可能的事情......但是这里有人知道怎么做吗?我已经了解到可以在Windows平台上使用简单的zip存档(例如替换SystemUI.apk的图标)删除和添加.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 新APK.apk = 399 kb并且不安装,apk被“破坏”,Android系统将无法安装apk。
答案 0 :(得分:0)
您无法添加字符串比原始字符串更高的字符串。您必须使用相同大小的字符串替换特定大小的字符串。试试幸运的补丁。它仅替换Android中的字符串..无需将其带到您的电脑上。 : - )