apk包反编译,签名
原创
©著作权归作者所有:来自51CTO博客作者程序员kunpengku的原创作品,请联系作者获取转载授权,否则将追究法律责任
jdk1.7
反编译,如果 目标文件 为 halou.apk 反编译输出到 一个 temp 文件 中 ,命令为
java -jar apktool.jar d -f -s halou.apk -o temp
apktool.jar 下载地址 http://pan.baidu.com/s/1bnxrt4F
重建build命令
java -jar apktool.jar b temp -o new_halou.apk
这样重建时候,隐藏文件是 没法 打new_halou.apk的。但隐藏文件 可以反编译出来 。
隐藏文件在assets中的话,可以这样加入到new_halou.apk中
z = ZipFile('new_halou.apk', 'a')
asset_file = r'%s/assets' % temp
if os.path.isdir( asset_file ):
for dirpath, dirnames, filenames in os.walk( asset_file ):
for filename in filenames:
if filename[0:1] == '.':
z.write(os.path.join(dirpath,filename), os.path.join(dirpath,filename)[len(temp_file):])
logger.info( 'write .* resource file: %s' % os.path.join(dirpath,filename)[len(temp_file):])
z.close()
其实反编译 也会有一些文件 无法 反编译出来。 可以用zipfile提取。LIke:
z = zipfile.ZipFile(apkpath, 'r')
for f in z.namelist():
if (f[0:len('res/drawable/')] == 'res/drawable/' and f.endswith('.bin')):
z.extract(f, './%s' % temp_file)
logger.info('extract file: %s' % f)
z.close()
签名
jarsigner -digestalg SHA1 -sigalg MD5withRSA -verbose -keystore %s -storepass %s -keypass %s -signedjar signedjar unsignedjar 'alianame'
最后 查看包 的签名
jarsigner -verify -verbose -certs new_halou.apk
查看包的一些信息,比如包名
aapt d badging new_halou.apk