齐天大圣孙悟空是家喻户晓的神话传说名人,大家都知道他有一个很强大的技能——拿出一根猴毛“biu”一吹实现分身。
那么我们程序猿也和咱们的齐天大圣是同类,程序猿怎么实现分身呢?我们拔一根头发吹肯定是不好使的……那就是通过修改APP的包名来实现应用分身。
也就是说在同一个设备上可以打开两个或多个相同的APP。
一.如何修改APK的包名
那么如何修改apk的包名呢?我们以“土豆视频为例”来进行一个分析。首先,找到“工程管理器”,打开工程管理器进入界面,点开土豆视频的下行文件数据
从中找到“AndroidManifest.xml”文件
里面有“manifest”这样一个标签,
找到这个标签里面的一个“package”属性,这个值就是我们要找到应用程序的包名
第二步,把“package”属性改为“hou”或者“123”等等都可。
这个值我们可以通过删减几个字母或者是任意添加几个字母或数字来进行修改,切记注意只能使用添加或删减数字和字母,不可以用汉字!
建议通过“添加数字或字母实现”,删除容易把握不准,当然删除以后一定要记得保存。然后点击“回编译”按钮,进行回编译过程
二.如何修改内容提供者
启动模拟器,进行应用安装,然后把我们“回编译”好的拖到模拟器里面
发现安装失败,提示“存在同名的内容提供者”。错误的原因由于我们只修改了包名,没有修改内容提供者。那么如何修改“内容提供者”?
首先,输入“内容提供者”的标签,进行搜索
搜索结束后显示我们需要修改的是“provider”里面有个“android;anthorities”的值
修改的方法同修改“package”值的属性是一样的,可以添加或删减字母或者是数字(绝对不能是汉字)
将搜索到的结果进行逐一全部修改,修改完成后千万不能忘记保存
完成之后找到其所在的目录进行安装,方法同样,直接拖进模拟器里面即可
※这里补充一点:有的apk由于没有内容提供者,就只需要一步到位——修改包名就可以直接实现应用分身了。
三.程序无法运行安装及对应解决方案
那么在什么情况下会导致程序无法运行以及安装,它们对应的解决方案是什么呢?
Q1· 只修改apk的包名会引发内容提供者冲突
解决方案:修改配置文件中所有内容提供者的标签“provider”里面“android:authorities”属性的值
Q2·应用程序分身的签名信息不同导致无法运行
解决方案:使用相同的签名工具对所有分身进行统一的签名
Q3·有些apk在内部使用的包名只修改包名会导致程序崩溃
解决方案:全局搜索应用程序的包名查看搜索结果,如果是字符串就进行一个替换,将原有的字符串修改为修改后的包名否则不进行替换
这就是如何修改apk的包名实现应用程序分身的具体方法了,在实际操作中可能会遇到更多的小细节问题,我们要具体问题具体分析。总之多动手多思考多实操,安卓逆向没有什么太难的。当然分享的相关经验,如果有哪处不妥也欢迎在评论区回复讨论或者私聊交流哈。