2、将apk以压缩包的形式打开删除原签名再签名,安装之后打开异常的,则基本可以断定是签名检验。如果在断网的情况下同样是会出现异常,则是本地的签名检验;如果首先出现的是提示网络没有连接,则是服务器端的签名校验要反编译。直接解压后无法再压缩回去了,首先要反编译,修改后再选定文件夹进行回编译。回编译之后还需要对apk包进行签名。需要注意的是修改后的apk不能和已经安装的原APK共存,也不能覆盖。只能先删除原安装的程序后再安装修改后的apk。点击除签名验证即可。根据查询apk服务器连接介绍可知,点击除签名验证即可去除。服务器(serer)指在网络环境中或在具有客户-服务器结构(参见客户-服务器计算)的分布式管理环境中,为客户的请求提供服务的节点计算机。
基本过程如下:
1、将apk解包成一个文件夹
2、修改AndroidManifestxml中对应的包名
3、修改smali目录下中的包
4、将文件夹打包成apk
5、将apk重新签名
6、验证apk的签名
7、优化apk
8、安装apk,并测试
基本前提条件:
1、java的环境
2、Eclipse及android的开发环境(这个主要是用来进行调试)
3、text文本编辑器,本人用的是UEdit,也可以用类似的,主要是利用其查找及替换功能
这篇文章主要用来反编译apk得到源码,但google进行了反制,只能得到一些可读性不高的源码,这里主要是利用反编译apk生成程序的源代码和、XML配置、语言资源等文件
参考文献里提到的apktool-100tarbz2和apktool-install-windows-21_r01-1zip均可以从>
参考了国内的技术文章后,有人发帖以上面的思路进行 *** 作,但没有发技术文章,所以笔者只能去国外论坛中逛逛了,在Stack Overflow中,找到了相关的帖子,有老外留言"you can't do this",这个的确有违技术道德,但这里只做学习参考或交流。找到了一片帖子>
下面就按照上面的步骤一步步 *** 作:我是已QQ浏览器40版的apk来 *** 作的。
1、我的apktool安装到了E盘下的apktool目录下,所以的 *** 作也在这个目录下进行 E:\apkTool
将apk复制到E:\apkTool目录下,重命名为qq40apk(这个没有要求,随意就好)
将apk解包 命令行下cd到E:\apkTool这个目录 apktool d qq4oapk qq4 将apk解包到qq4(这个也可以随意)这个目录
E:\apkTool\qq4这个目录下内容如下:
2、修改AndroidManifestxml中的包名,
将package后面的包名comtencentqbx改为你想要的新包名,我改为了comtianxiaotencentweb
将涉及原包名的comtencentqbx的相关activity的声明中的包名均改为新包名comtianxiaotencentweb
至于intent-filter里面的action名中包含原包名的,则可以不改,如果改的话,代码中也要相应的改变
另外,如果有provider,provider的authorities也得改,这个在同一手机上必须唯一,否则安装会失败
3、在E:\apkTool\qq4\smali目录下,有很多子目录,子目录下的文件多以smali结尾,这中文件的语法有点类似于汇编语言,具体原理就不深究了。
将smali目录下的所有文件中的原包名的声明形式com/tencent/qbx改为新包名com/tianxiao/tencentweb
具体如下,用UEdit在文件中替换即可,将目标目录指向E:\apkTool\qq4\smali,这个将近1000条左右
如果之前改为action里面的包名,也要将字符串形式的包名comtencentqbx改为comtianxiaotencentweb
如果有provider也要讲原来的authorities值改为在AndroidManifestxml中新改的authorities值。
4、将E:\apkTool\qq4重新打包为apk
apktool b qq4 newqqapk
5、将新的newqqapk 重新签名
签名的方法很多,一主要是手动生成签名,用命令行签名
我采用的现成的,下载了一个Auto-sign的文件夹,进行了签名,这个比较简单,网上帖子很多,就不赘述。
新签名后的apk名为 newqq4signedapk
6、验证签名 是否正确
jarsigner -verify -verbose -certs newqq4signedapk
一般来说,没问题,略过
7、优化apk
zipalign -v 4 newqq4signedapk latestqqapk 优化过的apk名为latestqqapk
8、安装新的apk,验证是否成功
这个最好把Eclipse打开,手机连上,查看logcat的安装信息。
我尝试了3次才成功,主要是忘了 provider的authorities的处理,
出错信息如下: Can't install because provider name qbx_bookmarks (in package comtianxiaotencentweb) is already used by comtencentqbx
原因很清楚,所以debug还是相当给力的,原来不喜欢debug,看debug过程可以更好的了解执行过程。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)