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

原创 2015年11月18日 11:03:40

抱着学习的心态,从官网上了下了一个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 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了下,还是有很多地方会取签名信息。

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


先记录到此。


相关文章推荐

Android逆向之旅---解析编译之后的AndroidManifest文件格式

一、前言今天又是周六了,闲来无事,只能写文章了呀,今天我们继续来看逆向的相关知识,我们今天来介绍一下Android中的AndroidManifest文件格式的内容,有的同学可能好奇了,AndroidM...

获取apk的版本号versionCode apk的版本名称VersionName

需求:开发中经常有需求获取apk文件的版本号,和版本名称,比如确定一下上传到应用市场的apk是不是最新的apk,检查更新的时候也要确保后台的apk文件为新的apk。 行不通的...

实例解读AndroidManifest.xml

随手找了一份文件进行解读 内容如下

Android逆向工程(一)-Apktool使用

当我们辛辛苦苦写的代码被别人抄走的时候一定会让我们非常的抓狂。要学会防守,我们也需要知道别人进攻的方式,接下来我们学习下如何破解Apk。Apktool是家喻户晓的逆向工具,我们学习下如何使用它。...

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

转自:http://m.blog.csdn.net/article/details?id=49904111 抱着学习的心态,从官网上了下了一个weixin.apk. 版本是:6.3.7...

微信Android资源混淆打包工具,如何让应用安装包立减1M

微信中的资源混淆工具主要为了混淆资源ID长度(例如将res/drawable/welcome.png混淆为r/s/a.png),同时利用7z深度压缩,大大减少了安装包体积,同时也增加了逼格,提升了反破...

微信Android资源混淆打包工具

本文主要是讲述资源混淆组件的用法以及性能,资源混淆组件不涉及编译过程,只需输入一个apk(无论签名与否,debug版,release版均可,在处理过程中会直接将原签名删除),可得到一个实现资源混淆后的...

Android SDK目录及版本号区别

今天又有人问Tools,Build-Tools,Platform-tools有什么区别,是干嘛的? 现在对SDK目录做一下总结阐述!SDK目录add-ons这里面保存着附加库,第三方公司为andro...
  • aiynmimi
  • aiynmimi
  • 2016年03月31日 17:25
  • 27731

Android开发学习之路--逆向分析反编译

一般情况下我们想要了解别人的app怎么实现这个动画,这个效果的时候,总是会想到反编译一下,看下布局,看下代码实现。对,这对于有经验的玩家确实手到擒来了,但是初学者,根本就不知道怎么反编译,怎么看代码,...

Android 批量读取APK 包名,版本信息

有的时候经常要查看 一些apk 的包名及版本信息; 总结了一个bat文件批量处理;使用到android 自带的aapt.exe 读取结果将保存到info.txt文件里面; package: name=...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对微信的二次打包学习1:重打包
举报原因:
原因补充:

(最多只允许输入30个字)