使用ApkTool工具将app变为debug状态的方法

一、问题场景:

有同事想获取某一个应用中的图片资源,在反编译apk之后,发现这些图片没有直接打包在apk中,猜想是从服务器加载,是都会在应用本地有缓存,从而提升应用 流畅度,在应用SD卡创建的目录中查看一番,无果,然后想到是否会在/data/data/应用包名 目录下面,于是想查看一下,结果显示 Permission denied。这也正常,别人发布出来的应用自己的数据岂能让你随便想看就看?真是验证了慕容晓晓那句话,数据不是你想看,想看就能看。怎么办? 

 

二、解决思路

平时我们自己开发APP,即使手机不是root, 不是就随便看么,那是因为App 是debug版本,既然如此,那是否有方法将三方APP变成debug状态? 心念一闪,震动四方。忽然想起之前别人写的逆向工程中有重新打包的功能,于是在网上查了下,原来Apktool 除了反编译,也还有打包编译的功能。

https://blog.csdn.net/huaxun66/article/details/52288969

于是捋起袖子加油干,蹭蹭蹭地将APP先反编译,然后什么都不改,直接在重新打包编译,还真成了,出来的APP不能直接安装,因为没有签名,于是又先零时生成了签名key:

keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore 

然后将app签名:

jarsigner -verbose -keystore demo.keystore  -signedjar qf_signed.apk qf.apk demo.keystore

然后竟然成功地安装了。

 

PS:

该arsigner命令在jdk中可以找到,

简单说明一下具体参数:

-verbose:签名命令标识符。 
-keystore:后面跟着的是你签名使用的密钥文件(keystore)的绝对路径。 
-signedjar:此后有三个参数: 
参数一:签名后生成的apk文件所要存放的路径。 
参数二:未签名的apk文件的存放路径。 
参数三:你的证书名称,通俗点说就是你keystore文件的别名,就是在你eclipse进行签名打包时的Alias的值

 

接下来就在原来反编译的基础上,在AndroidManifest.xml中增加了

android:debuggable="true"

然后再次打包,签名,最后在手机上跑起来,接着使用adb, 以 run-as 包名的方式进入,成功攻入data目录:

但是在里面找了一番,还是没有找到缓存图片的目录,没有完成同事的任务,有点小pity, 但是感觉学会了个新技能,有点小happy, 所以留文mark 一下。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值