这里是通过AndroidManifest.xml中的allowbackup属性去盗取手机中存储的信息,只要有信息存储在本地都可盗取出来(前提是你能拿到手机)
为什么研究这个技术:1,应用市场上修改游戏金币的软件很多,但是大概都需要root权限,所以就想能不能在不root的情况下修改金币和血量,2预防被盗信息
原因:当
AndroidManifest.xml中的allowBackup标志为true时,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复,这可能会带来一定的安全风险
首先先介绍介绍一下allowBackup这个允许adb backup通过usp连接手机,去备份到电脑上,在电脑上生成.ab的文件,但是我们还需要借助一个工具来解析这个ab文
件这样我们就能拿到任何一个在
AndroidManifest.xml中设置allowbackup属性为true的app数据,再修改该数据后还原回去,这样就实现了,修改金币的目的
废话不多说先上项目
首先这里我选得是一个<魔塔大冒险>的这样一个Android游戏(为啥选这个那,当初被虐的被)
我们可以反编译去得到apk的信息
<application android:icon="@drawable/icon" android:label="@string/app_name" android:name="com.pt.MoTa.MyApplication">
<meta-data android:name="agentid" android:value="2168-2173-79"/>
<meta-data android:name="leancloud" android:value="xiaomi"/>
<activity android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name"
android:launchMode="singleTop"
android:name="com.pt.MoTa.newMoTa"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<service android:name="com.pt.gamesdk.common.MQTTService"/>
</application>
我们可以看到这个并没有
allowbackup属性,所以这里我们需要自己添加上以后再重新打包签名,可能签名和之前不同,但是没关系我们这里只教改金币
我们用数据线链接上手机以后,通过
第一步:使用adb backup -f applock.ab com.pt.MoTa.mi 进行数据的备份(别问我这个包名怎么来的,自己反编译找去)
adb backup [-system|-nosystem] -all [-apk|-noapk] [-shared|-noshared] -f <档案名称> [需要备份的应用包名]
详解
[-system|-nosystem]
这个指令是告诉adb 在备份时是否要连同系统一起备份
如果将系统一起备份的话,当还原的时候会将系统一起还原,目前对非root用户不会有太大影响,不过建议还是加上
2> -all
这个指令除非只是要备份单一APP 不然是一定要打上去的
这个是问你是否要备份全部的APP 若有加上-nosystem的指令
那么他就只会备份你目前已经安装上去的APP 而不会连系统APP一起备份
3> [-apk|-noapk]
默认是-noapk 这个的意思是是否连安装的APK一起备份
默认是-noapk 这个的意思是是否连安装的APK一起备份
若为-noapk 则只会备份APK的资料档(像是游戏存盘 设定 之类的)
4> [-shared|-noshared]
默认是-noshared 这个会问你是否连手机储存空间或是SD卡的档案一起备份
5>包名
既然都会反编译了,获取个包名应该对你来说不是啥问题吧
通过cmd控制台调用adb backup -f applock.ab com.pt.MoTa.mi
会在手机上出现一个问你是否备份界面,并让你输入密码,这里为了方便密码我设为空(不填)
会在生成一个
applock.ab的文件,下面,我们还需要借助一个工具来解析这个ab文件。
第二步:使用android-backup-extractor(
abe)工具来解析ab文件
把 备份好的
applock.ab移动到abe文件夹下
通过cmd cbe>
java -jar abe.jar -help就可以查看指定方法了
看到我们使用unpack参数来将ab文件转化成tar文件:
java -jar abe.jar unpack applock.ab applock.tar
推荐个软件,通过7z.exe这个软件打开tar文件比较好,因为这个可以直接修改
通过修改sp的文件中的值,达到修改血量的目的,以此类推我们可以修改其他app的值,db的文件也适用
通过7z这个软件我们不用解压就可以修改里面的文件,然后通过
>java -jar abe.jar pack applock.tar applock.ab 反生成ab文件,
再通过adb命令adb restore applock.ab
还原到手机中就OK了
但是最后说两句,想用这个技术盗取别账号密码的就别懂心思了,顶多能破解个手势密码,一般app的密码都不会存在本地,都存在服务器
通过进一步的学习学会了另外一种查看apk资源文件的方法
我们下载apk,之后使用aapt查看他的AndroidManifest.xml内容:
aapt dump xmltree applock.apk AndroidManifest.xml > D:\demo.txt
注:我们在拿到一个apk的时候,如果想知道apk中的一些资源和配置信息,aapt命令是个不错的选择,同时,他能够删除apk中的一些资源,添加一些资源到apk中都是可以的。
题外话,各位最好学会反编译和从新打包技术,这样可以随意破戒app的信息,不然一但allowBackup属性设置为false的话那就不能通过这个方法破解修改信息,曾经可以通过这个方法去获取微信的聊天记录,但是现在已被修复
附上截图,不过不小新给改死了