本文章已收录于:

版权声明:本文为博主原创文章,未经博主允许不得转载。
抱着学习的心态,从官网上了下了一个weixin.apk.
版本是:6.3.7
使用Apktool解压weixin.apk没有,但是重新编译会报如下错:
yc@yc:~/temp2$ java -jar apktool/apktool.jar b weixin_622 I: Using Apktool 2.0.1 I: 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 more Caused 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_622 I: Using Apktool 2.0.1 I: 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.xml中的所有 ". 都替换为 "com.tencent.mm.
重新打包编译,安装运行试试。
比较神的是竟然后面就没有遇到签名验证,包名验证等一系列问题,很顺利的登录了。
感觉顺利的太过火了。。
运行截图:
grep了下,还是有很多地方会取签名信息。
到这步也至少能够打造一个简单的自己的微信版本了。
先记录到此。
- 顶
- 1
- 踩
- 0