逆向教程->anime radio逆向分析去广告(回编译错误分析)

原软件下载地址:百度anime radio,笔者下载的版本是3.25

同事是一个动漫粉,今天拿来一款动漫APP说这里有广告能不能去掉,耗流量。我就答应了,女同事嘛,你们懂得啦

工具:apktoolkit

反编译该app以后,先尝试着回编译,就会发现出现问题而无法回编译。


以下是笔者摘录的回编译失败信息:

->重建文件:anime radio.R.apk,请稍后...

java.exe -jar "F:\ApkToolkit\Bin\apktool.jar" b -f "C:\Users\Administrator\Desktop\anime radio" "C:\Users\Administrator\Desktop\anime radio.R.apk"

I: Smaling...

I: Building resources...

libpng error: Read Error

ERROR: Failure processing PNG image C:\Users\Administrator\Desktop\anime radio\res\drawable-hdpi\aaa_sams_fix.png

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:32: error: Public symbol drawable/aaa_sams_fix declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:3: error: Public symbol drawable/ad_bg declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:4: error: Public symbol drawable/bg_tile declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:33: error: Public symbol drawable/bottom_bg declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:10: error: Public symbol drawable/btn_menu declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:11: error: Public symbol drawable/btn_pause declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:34: error: Public symbol drawable/btn_pause_norm declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:35: error: Public symbol drawable/btn_pause_press declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:12: error: Public symbol drawable/btn_play declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:36: error: Public symbol drawable/btn_play_norm declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:37: error: Public symbol drawable/btn_play_press declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:13: error: Public symbol drawable/btn_rec declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:38: error: Public symbol drawable/btn_rec_norm declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:39: error: Public symbol drawable/btn_rec_press declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:14: error: Public symbol drawable/btn_widget_next declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:15: error: Public symbol drawable/btn_widget_pause declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:16: error: Public symbol drawable/btn_widget_play declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:17: error: Public symbol drawable/btn_widget_prev declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:5: error: Public symbol drawable/default_image declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:6: error: Public symbol drawable/divider declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:62: error: Public symbol drawable/flag_es declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:63: error: Public symbol drawable/flag_fr declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:64: error: Public symbol drawable/flag_it declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:65: error: Public symbol drawable/flag_ru declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:66: error: Public symbol drawable/flag_uk declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:67: error: Public symbol drawable/flag_us declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:40: error: Public symbol drawable/frame declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:24: error: Public symbol drawable/ic_launcher declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:29: error: Public symbol drawable/ic_menu_moreoverflow_normal_holo_dark declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:30: error: Public symbol drawable/ic_menu_moreoverflow_normal_holo_light declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:41: error: Public symbol drawable/ic_star_off declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:42: error: Public symbol drawable/ic_star_on declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:26: error: Public symbol drawable/ic_stat_next declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:25: error: Public symbol drawable/ic_stat_play declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:27: error: Public symbol drawable/ic_stat_prev declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:28: error: Public symbol drawable/ic_stat_stop declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:31: error: Public symbol drawable/ic_url declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:7: error: Public symbol drawable/image_frame declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:18: error: Public symbol drawable/main_bg declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:43: error: Public symbol drawable/mediacontroller_bg declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:44: error: Public symbol drawable/mediacontroller_pause01 declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:45: error: Public symbol drawable/mediacontroller_pause02 declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:19: error: Public symbol drawable/mediacontroller_pause_button declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:46: error: Public symbol drawable/mediacontroller_play01 declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:47: error: Public symbol drawable/mediacontroller_play02 declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:20: error: Public symbol drawable/mediacontroller_play_button declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:21: error: Public symbol drawable/mediacontroller_seekbar declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:48: error: Public symbol drawable/mediacontroller_seekbar01 declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:49: error: Public symbol drawable/mediacontroller_seekbar02 declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:22: error: Public symbol drawable/mediacontroller_seekbar_thumb declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:50: error: Public symbol drawable/menu_separator declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:23: error: Public symbol drawable/tab_button declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:8: error: Public symbol drawable/tab_sel_bg declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:9: error: Public symbol drawable/top_bg declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:51: error: Public symbol drawable/widget_bg_new declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:52: error: Public symbol drawable/widget_next_norm declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:53: error: Public symbol drawable/widget_next_press declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:54: error: Public symbol drawable/widget_pause_norm declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:55: error: Public symbol drawable/widget_pause_press declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:56: error: Public symbol drawable/widget_play_norm declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:57: error: Public symbol drawable/widget_play_press declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:58: error: Public symbol drawable/widget_prev_norm declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:59: error: Public symbol drawable/widget_prev_press declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:60: error: Public symbol drawable/widget_preview declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:61: error: Public symbol drawable/widget_underline declared here is not defined.

Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 7, --target-sdk-version, 17, -F, C:\Users\ADMINI~1\AppData\Local\Temp\APKTOOL401721341479758844.tmp, -0, arsc, -I, C:\Users\Administrator\apktool\framework\1.apk, -S, C:\Users\Administrator\Desktop\anime radio\res, -M, C:\Users\Administrator\Desktop\anime radio\AndroidManifest.xml]

at brut.androlib.Androlib.buildResourcesFull(Androlib.java:358)

at brut.androlib.Androlib.buildResources(Androlib.java:283)

at brut.androlib.Androlib.build(Androlib.java:206)

at brut.androlib.Androlib.build(Androlib.java:176)

at brut.apktool.Main.cmdBuild(Main.java:228)

at brut.apktool.Main.main(Main.java:79)

Caused by: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 7, --target-sdk-version, 17, -F, C:\Users\ADMINI~1\AppData\Local\Temp\APKTOOL401721341479758844.tmp, -0, arsc, -I, C:\Users\Administrator\apktool\framework\1.apk, -S, C:\Users\Administrator\Desktop\anime radio\res, -M, C:\Users\Administrator\Desktop\anime radio\AndroidManifest.xml]

at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:357)

at brut.androlib.Androlib.buildResourcesFull(Androlib.java:336)

... 5 more

Caused by: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 7, --target-sdk-version, 17, -F, C:\Users\ADMINI~1\AppData\Local\Temp\APKTOOL401721341479758844.tmp, -0, arsc, -I, C:\Users\Administrator\apktool\framework\1.apk, -S, C:\Users\Administrator\Desktop\anime radio\res, -M, C:\Users\Administrator\Desktop\anime radio\AndroidManifest.xml]

at brut.util.OS.exec(OS.java:89)

at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:355)

... 6 more

->重建.apk失败!

建议:请尝试手动运行Bin目录下的BuildApk.exe来重建.apk!

---------------------------------------------------------------------------------------↑

由上文可以知道,回编译出错的地方是在:

ERROR: Failure processing PNG image C:\Users\Administrator\Desktop\anime radio\res\drawable-hdpi\aaa_sams_fix.png

上文的意思大概是:处理png图像信息失败。

在手头没有工具的情况下如何修复?删了就是- -

将apk包中的\drawable-hdpi\aaa_sams_fix.png文件删除之后回编译的提示:

->重建文件:anime radio.R.apk,请稍后...

java.exe -jar "F:\ApkToolkit\Bin\apktool.jar" b -f "C:\Users\Administrator\Desktop\anime radio" "C:\Users\Administrator\Desktop\anime radio.R.apk"

I: Smaling...

I: Building resources...

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:32: error: Public symbol drawable/aaa_sams_fix declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:61: error: Public entry identifier 0x7f020040 entry index is larger than available symbols (index 64, total symbols 64).

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:61: error: Public symbol drawable/widget_underline declared here is not defined.

Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 7, --target-sdk-version, 17, -F, C:\Users\ADMINI~1\AppData\Local\Temp\APKTOOL4809949198112169441.tmp, -0, arsc, -I, C:\Users\Administrator\apktool\framework\1.apk, -S, C:\Users\Administrator\Desktop\anime radio\res, -M, C:\Users\Administrator\Desktop\anime radio\AndroidManifest.xml]

at brut.androlib.Androlib.buildResourcesFull(Androlib.java:358)

at brut.androlib.Androlib.buildResources(Androlib.java:283)

at brut.androlib.Androlib.build(Androlib.java:206)

at brut.androlib.Androlib.build(Androlib.java:176)

at brut.apktool.Main.cmdBuild(Main.java:228)

at brut.apktool.Main.main(Main.java:79)

Caused by: brut.androlib.AndrolibException: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 7, --target-sdk-version, 17, -F, C:\Users\ADMINI~1\AppData\Local\Temp\APKTOOL4809949198112169441.tmp, -0, arsc, -I, C:\Users\Administrator\apktool\framework\1.apk, -S, C:\Users\Administrator\Desktop\anime radio\res, -M, C:\Users\Administrator\Desktop\anime radio\AndroidManifest.xml]

at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:357)

at brut.androlib.Androlib.buildResourcesFull(Androlib.java:336)

... 5 more

Caused by: brut.common.BrutException: could not exec command: [aapt, p, --min-sdk-version, 7, --target-sdk-version, 17, -F, C:\Users\ADMINI~1\AppData\Local\Temp\APKTOOL4809949198112169441.tmp, -0, arsc, -I, C:\Users\Administrator\apktool\framework\1.apk, -S, C:\Users\Administrator\Desktop\anime radio\res, -M, C:\Users\Administrator\Desktop\anime radio\AndroidManifest.xml]

at brut.util.OS.exec(OS.java:89)

at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.java:355)

... 6 more

->重建.apk失败!

建议:请尝试手动运行Bin目录下的BuildApk.exe来重建.apk!

-------------------------------------------------------------------------------------↑

发现apk回编译时的错误信息大幅度减少了,那我们接下来查看:

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:32: error: Public symbol drawable/aaa_sams_fix declared here is not defined.

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:61: error: Public entry identifier 0x7f020040 entry index is larger than available symbols (index 64, total symbols 64).

C:\Users\Administrator\Desktop\anime radio\res\values\public.xml:61: error: Public symbol drawable/widget_underline declared here is not defined.

从上面三行代码中我们可以判断出出错的三个关键字:

\res\values\public.xml文件中的:aaa_sams_fix、 0x7f020040、widget_underline

我们进入该文件搜索相关的信息



我们可以发现三条信息集中指向的两个位置

    <public type="drawable" name="widget_underline" id="0x7f020040" />

    <public type="drawable" name="aaa_sams_fix" id="0x7f020000" />

那么我们将这两条信息删除即可。重新回编译:

->重建文件:anime radio.R.apk,请稍后...

java.exe -jar "F:\ApkToolkit\Bin\apktool.jar" b -f "C:\Users\Administrator\Desktop\anime radio" "C:\Users\Administrator\Desktop\anime radio.R.apk"

I: Smaling...

I: Building resources...

aapt: warning: string 'menu' has no default translation in C:\Users\Administrator\Desktop\anime radio\res; found: zh_CN zh_HK zh_TW

I: Copying libs...

I: Building apk file...

->重建.apk成功!

------------------------------------------------------↑

我们成功处理好了回编译问题后,接着开始处理去广告的事情。

在反编译包中的:Androidmianfest.xml中我发现了这样一个activity

        <activity android:name="com.google.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />

根据他的Android:name发现,这个好像就是谷歌的广告。

在去广告时:一般情况下,将Androidmianfest中的广告activity声明类去掉就行了。也有部分app的广告需要修改到Dalvik代码。

这款软件直接删去他的activity启动类就不会有广告出现了,当然也不耗流量。

-----------------------------------------

本篇文章重点介绍的是处理回编译失败问题,广告去除会在以后的文章中专门写一篇。

我的老师,教师节快乐。

                                                                                                                                 2014.09.10 Sarkozy















评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值