首页
社区
课程
招聘
秋秋重打包笔记
发表于: 2015-8-31 18:24 10327

秋秋重打包笔记

2015-8-31 18:24
10327
百度下载最新版秋秋 5.8.0 文件名为QQ_264.apk

使用apktool反编译会遇到这个错误
Exception in thread "main" brut.androlib.AndrolibException: Multiple res specs:
attr/name
        at brut.androlib.res.data.ResType.addResSpec(ResType.java:58)
        at brut.androlib.res.decoder.ARSCDecoder.readEntry(ARSCDecoder.java:241)

        at brut.androlib.res.decoder.ARSCDecoder.readConfig(ARSCDecoder.java:174
)
        at brut.androlib.res.decoder.ARSCDecoder.readType(ARSCDecoder.java:132)
        at brut.androlib.res.decoder.ARSCDecoder.readPackage(ARSCDecoder.java:10
7)
        at brut.androlib.res.decoder.ARSCDecoder.readTable(ARSCDecoder.java:85)
        at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:54)
        at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibRes
ources.java:606)
        at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.jav
a:75)
        at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.jav


经过看了老罗的文章和研究下了apktool源码以及分析了resources.arsc结构得出的结论是:

将resources.arsc中每个 ResTable_entry 中的资源项名称索引都为0 导致重名,
按正常的来讲,每个类型下的每个配置中的资源项名肯定不一样,所以apktool出错

索引为0在resources.arsc中的字符串池中正好是 attr/name 字符串,所以才有上面的错误

老罗的文章地址a9bK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8X3u0D9L8$3N6Q4x3X3g2U0M7$3c8F1i4K6u0W2L8X3g2@1i4K6u0r3L8s2g2G2M7$3S2W2L8X3N6&6j5h3&6Y4i4K6u0r3j5i4u0@1K9h3y4D9k6g2)9J5c8X3c8W2N6r3q4A6L8s2y4Q4x3V1j5^5y4K6b7@1y4U0R3K6
resources.arsc16进制分析,自己以前写的
4f6K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4F1j5X3I4G2k6%4y4Q4x3X3g2U0L8$3#2Q4x3V1k6F1K9Y4S2^5k6s2S2Q4x3V1k6H3i4K6u0r3y4o6p5^5z5e0V1%4x3g2)9J5k6h3S2@1L8h3H3`.

解决方法:
我是修改apktool源码,在ARSCDecoder这个类中 readEntry这个方法里,加入以下代码:
        if(specNamesId==0){
        	//针对QQ
            String strRandomSpecName;
        	Random rand = new Random();
        	strRandomSpecName= getRandomString(rand.nextInt(11)+10);
        	LOGGER.info("strRandomSpecName = "+strRandomSpecName);
            ResValue value = (flags & ENTRY_FLAG_COMPLEX) == 0 ? readValue() : readComplexEntry();

            if (mConfig == null) {
                return;
            }

            ResID resId = new ResID(mResId);
            ResResSpec spec;
            if (mPkg.hasResSpec(resId)) {
                spec = mPkg.getResSpec(resId);
            } else {
                spec = new ResResSpec(resId, strRandomSpecName, mPkg, mType);
                mPkg.addResSpec(spec);
                mType.addResSpec(spec);
            }
            ResResource res = new ResResource(mConfig, spec, value);

            mConfig.addResource(res);
            spec.addResource(res);
            mPkg.addResource(res);       
            return;
        	
        }

当发现id是0时用随机的字符串替代,getRandomString是生成随机字符串  

这个问题搞定后,继续反编译会遇到AndroidManifest Ambiguity可以参考
http://bbs.pediy.com/showthread.php?t=197845

附件中修改过的apktool 已经解决了这个问题,我是直接在ResAttrDecoder.decode 中当解析到这个奇葩id0x01017fff,返回个字符串
if(0x01017fff==attrResId) return "String";

解包之后打开AXML 找到
        <activity android:name="com.tencent.mobileqq.debug.DebugActivity" android:exported="false" android:launchMode="singleTask" android:fasten="String">
            <meta-data android:name="@anim/38tR3yhgKffYUh2" android:value="meta-data" />

删掉 android:fasten="String"

和  <meta-data android:name="@anim/38tR3yhgKffYUh2" android:value="meta-data" />

以上问题解决后秋秋就可以顺利重打包了,但是运行后会提示appid invalid! ,应该是监测了签名之类的吧,属于类外的话题了。

最后附上修改过的apktool
a58K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4W2#2L8W2)9J5k6h3u0S2K9h3c8#2i4K6u0W2j5$3!0E0i4K6u0r3M7#2)9J5c8U0q4p5d9%4m8i4P5b7`.`.

无壳无保护,让大牛们见笑了

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 76
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2015-8-31 18:56
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享
2015-8-31 20:47
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这种反调试小技巧也有大公司在研究么
2015-9-1 15:19
0
雪    币: 250
活跃值: (251)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
对于这种用户量达到一定量级的APP  还能怎样?
2015-9-2 17:19
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
感觉治标不治本的解决办法额
2015-9-2 23:41
0
雪    币: 14867
活跃值: (158)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
学习,,感谢分享~~
2015-9-6 18:47
0
雪    币: 1867
活跃值: (1180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
安卓QQ5.0不行啊,只有一个AndroidManifest.xml,而且内容也不正常
2016-3-25 14:37
0
游客
登录 | 注册 方可回帖
返回