对微信的二次打包学习1:重打包

来源:互联网 发布:泉州p2p网络咨询 编辑:程序博客网 时间:2024/05/16 18:43

转自:http://m.blog.csdn.net/article/details?id=49904111

抱着学习的心态,从官网上了下了一个weixin.apk.

版本是:6.3.7


使用Apktool解压weixin.apk没有,但是重新编译会报如下错:

yc@yc:~/temp2$ java -jar apktool/apktool.jar b weixin_622I: Using Apktool 2.0.1I: Checking whether sources has changed...I: Smaling smali folder into classes.dex...I: Checking whether resources has changed...I: Building resources.../home/yc/temp2/weixin_622/res/values/public.xml:165: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/public.xml:497: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/public.xml:674: error: invalid symbol: 'if'/home/yc/temp2/weixin_622/res/values/public.xml:2828: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/public.xml:3004: error: invalid symbol: 'if'/home/yc/temp2/weixin_622/res/values/public.xml:4635: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/public.xml:4811: error: invalid symbol: 'if'/home/yc/temp2/weixin_622/res/values/public.xml:9957: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/public.xml:10133: error: invalid symbol: 'if'/home/yc/temp2/weixin_622/res/values/public.xml:10426: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/public.xml:10602: error: invalid symbol: 'if'/home/yc/temp2/weixin_622/res/values/public.xml:10891: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/public.xml:11067: error: invalid symbol: 'if'/home/yc/temp2/weixin_622/res/values/public.xml:11527: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/public.xml:11703: error: invalid symbol: 'if'/home/yc/temp2/weixin_622/res/values/attrs.xml:319: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/drawables.xml:176: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/drawables.xml:353: error: invalid symbol: 'if'/home/yc/temp2/weixin_622/res/values/layouts.xml:166: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/layouts.xml:342: error: invalid symbol: 'if'/home/yc/temp2/weixin_622/res/values/strings.xml:165: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/strings.xml:357: error: invalid symbol: 'if'/home/yc/temp2/weixin_622/res/values/colors.xml:165: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/colors.xml:341: error: invalid symbol: 'if'/home/yc/temp2/weixin_622/res/values/dimens.xml:165: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/dimens.xml:341: error: invalid symbol: 'if'/home/yc/temp2/weixin_622/res/values/styles.xml:613: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/styles.xml:1806: error: invalid symbol: 'if'/home/yc/temp2/weixin_622/res/values/ids.xml:64: error: invalid symbol: 'do'/home/yc/temp2/weixin_622/res/values/ids.xml:240: error: invalid symbol: 'if'Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [/tmp/brut_util_Jar_6791269599430861131.tmp, p, --forced-package-id, 127, --min-sdk-version, 15, --target-sdk-version, 22, --version-code, 622, --version-name, 6.2.5.54_re87237d, -F, /tmp/APKTOOL3962896442063820550.tmp, -0, arsc, -I, /home/yc/apktool/framework/1.apk, -S, /home/yc/temp2/weixin_622/res, -M, /home/yc/temp2/weixin_622/AndroidManifest.xml]    at brut.androlib.Androlib.buildResourcesFull(Androlib.java:459)    at brut.androlib.Androlib.buildResources(Androlib.java:397)    at brut.androlib.Androlib.build(Androlib.java:285)    at brut.androlib.Androlib.build(Androlib.java:256)    at brut.apktool.Main.cmdBuild(Main.java:225)    at brut.apktool.Main.main(Main.java:84)Caused by: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [/tmp/brut_util_Jar_6791269599430861131.tmp, p, --forced-package-id, 127, --min-sdk-version, 15, --target-sdk-version, 22, --version-code, 622, --version-name, 6.2.5.54_re87237d, -F, /tmp/APKTOOL3962896442063820550.tmp, -0, arsc, -I, /home/yc/apktool/framework/1.apk, -S, /home/yc/temp2/weixin_622/res, -M, /home/yc/temp2/weixin_622/AndroidManifest.xml]    at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:419)    at brut.androlib.Androlib.buildResourcesFull(Androlib.java:445)    ... 5 moreCaused by: brut.common.BrutException: could not exec command: [/tmp/brut_util_Jar_6791269599430861131.tmp, p, --forced-package-id, 127, --min-sdk-version, 15, --target-sdk-version, 22, --version-code, 622, --version-name, 6.2.5.54_re87237d, -F, /tmp/APKTOOL3962896442063820550.tmp, -0, arsc, -I, /home/yc/apktool/framework/1.apk, -S, /home/yc/temp2/weixin_622/res, -M, /home/yc/temp2/weixin_622/AndroidManifest.xml]    at brut.util.OS.exec(OS.java:89)    at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:413)    ... 6 more


看来是利用了aapt的特性,用java关键字来作name,导致不能编译,但是运行用的是id,所以运行没有问题。

这个问题如何破呢?最简单的就是将name中的do与if都替换掉。貌似也可以修改aapt,忽略掉do与if。

当然替换是多简单的事,进入res目录,进行替换:

yc@yc:~/temp2/weixin_622/res$ sed -i 's/"if"/"if_yc"/g' `grep '"if"' . -rl`yc@yc:~/temp2/weixin_622/res$ sed -i 's/"do"/"do_yc"/g' `grep '"do"' . -rl`
两个命令就把绝大部分的替换掉了,剩下的一些零碎手工修改就可以了。


修改完成后再来尝试重新打包:

yc@yc:~/temp2$ java -jar apktool/apktool.jar b weixin_622I: Using Apktool 2.0.1I: Checking whether sources has changed...I: Checking whether resources has changed...I: Building resources...I: Building apk file...I: Copying unknown files/dir...
打包编译成功!


下一步再来修改一下包名:

将包名修改为com.tencent.mm.want_fuck"

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto" package="com.tencent.mm.want_fuck" platformBuildVersionCode="19" platformBuildVersionName="4.4.2-1456859">

然后再把Manifest.xml中的所有 ". 都替换为 "com.tencent.mm.


重新打包编译,安装运行试

比较神的是竟然后面就没有遇到签名验证,包名验证等一系列问题,很顺利的登录了。

感觉顺利的太过火了。。


运行截图:





grep了下,还是有很多地方会取签名信息。

到这步也至少能够打造一个简单的自己的微信版本了。


先记录到此。


1 0