吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 52854|回复: 136
收起左侧

[Android 原创] 【APK精简】入门之笔趣阁免费小说APP【教程】

    [复制链接]
Hayden. 发表于 2018-6-4 17:08
本帖最后由 Hayden. 于 2018-6-4 18:46 编辑

本人平时会看些小说,而免费两字吸引了我,于是用了笔趣阁这款APK,它软件小巧功能强大,支持换源。
为了练习APK逆向精简,于是就选择了它做靶子了,对不住了!
这篇教程我不会介绍特别详细,这是在我其他教程基础上进行的,虽然称之为教程,但其实我只是小白,只是拿它当作笔记来用的,大佬不喜勿喷!
教程两字只是为了其他人便于搜索的到,和给向我一样入门的人以帮助,让他们少入坑仅此而已!
工具:Android Killer1.3.1
更改如下:



1、去启动广告(跟其他去启动广告略有不同)。
2、简单精简,去除无用的发现导航栏菜单。
3、去除不登录只能存放10本书到书架的限制,可免登录使用。
4、去除危险无用权限
5、去除危险及广告服务


首先是第一条去启动广告
和之前的教程差不多,把WelComeActivity活动下的程序入口代码放到MainActivity活动下。


[XML] 纯文本查看 复制代码
<intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>

PS:一定要剪切,否则会出现问题。
到这里运行你会发现广告并没有去除,进入MainActivity活动会发现它下面仍会开启WelComeActivity活动,这是个坑,进去把他删除就可以了。
[Java] 纯文本查看 复制代码
 
  protected void onCreate(@Nullable Bundle paramBundle)
  {
    super.onCreate(paramBundle);
    a();
    setContentView(2130968617);
    if (!com.biquge.ebook.app.ad.i.a().a)
    {
      startActivity(new Intent(this, WelComeActivity.class));
      overridePendingTransition(0, 0);
      finish();
    }
    e();
    a(paramBundle);
    d();
    j();
    c();
  }


删除smali代码就OK了:


QQ截图20180604170652.png


第二条精简去”发现“导航菜单选项:
本次使用的是隐藏,直接删减比较麻烦容易出错。
搜索“发现”得到”main_tab_book_discover“,继续搜索定位到”fragment_discover_title_txt“,然后找到activity_main.xml文件。
这个就是底部导航栏布局文件,里面有四个Button。


QQ截图20180604163839.png

把他先面的属性设置成0px宽度就会隐藏了android:layout_weight="0"


第三条去除书架书本限制:
通过添加书籍达到上限后的提示定位到strings.xml里的字符串
<string name="login_add_shelf_book_max">书架已超过最大限制%1$s本,请删除一些不需要的书籍,再继续添加新书</string>
搜索login_add_shelf_book_max定位到
[Java] 纯文本查看 复制代码
.method public a(Landroid/content/Context;Z)Z
    .locals 8

    .prologue
    const/16 v7, 0x64

    const/16 v5, 0xa   #十进制是10,就是10本书的最大上限

    const/4 v6, 0x0

    const/4 v0, 0x1

    const/4 v1, 0x0

    .line 171
    invoke-static {}, Lcom/biquge/ebook/app/b/h;->a()Lcom/biquge/ebook/app/b/h;

    move-result-object v2

    invoke-virtual {v2}, Lcom/biquge/ebook/app/b/h;->b()Z

    move-result v2

    if-nez v2, :cond_0

    .line 172
    invoke-virtual {p0}, Lcom/biquge/ebook/app/d/a/a;->a()Ljava/util/List;

    move-result-object v2

    invoke-interface {v2}, Ljava/util/List;->size()I

    move-result v2

    #if-lt v2, v5, :cond_2    #如果小于10本书跳转到cond_2正常条件,继续添加书籍,否则显示限制提示。所以删除此条件就可达到去出现之目的。
    goto :cond_2

    .line 173
    new-instance v2, Lcom/biquge/ebook/app/widget/DialogTips;

    invoke-direct {v2, p1}, Lcom/biquge/ebook/app/widget/DialogTips;-><init>(Landroid/content/Context;)V

    .line 174
    const v3, 0x7f07015e  #上限错误提示

    new-array v4, v0, [Ljava/lang/Object;

    invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    aput-object v5, v4, v1

    invoke-static {v6, v3, v4}, Lcom/biquge/ebook/app/utils/s;->a(Landroid/content/Context;I[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v2, v3}, Lcom/biquge/ebook/app/widget/DialogTips;->b(Ljava/lang/String;)V

    .line 175
    const v3, 0x7f070111

    invoke-static {v6, v3}, Lcom/biquge/ebook/app/utils/s;->a(Landroid/content/Context;I)Ljava/lang/String;

    move-result-object v3

    new-instance v4, Lcom/biquge/ebook/app/d/a/a$1;

    invoke-direct {v4, p0, p1, p2}, Lcom/biquge/ebook/app/d/a/a$1;-><init>(Lcom/biquge/ebook/app/d/a/a;Landroid/content/Context;Z)V

    invoke-virtual {v2, v3, v4}, Lcom/biquge/ebook/app/widget/DialogTips;->a(Ljava/lang/String;Lcom/biquge/ebook/app/widget/DialogTips$b;)V

    .line 189
    invoke-virtual {v2, v6}, Lcom/biquge/ebook/app/widget/DialogTips;->a(Lcom/biquge/ebook/app/widget/DialogTips$a;)V

    .line 190
    invoke-virtual {v2, v1}, Lcom/biquge/ebook/app/widget/DialogTips;->setCanceledOnTouchOutside(Z)V

    .line 191
    invoke-virtual {v2}, Lcom/biquge/ebook/app/widget/DialogTips;->show()V

    .line 215
    :goto_0
    return v0

    .line 195
    :cond_0
    invoke-virtual {p0}, Lcom/biquge/ebook/app/d/a/a;->a()Ljava/util/List;

    move-result-object v2

    invoke-interface {v2}, Ljava/util/List;->size()I

    move-result v2

    if-lt v2, v7, :cond_2

    .line 196
    new-instance v2, Lcom/biquge/ebook/app/widget/DialogTips;

    invoke-direct {v2, p1}, Lcom/biquge/ebook/app/widget/DialogTips;-><init>(Landroid/content/Context;)V

    .line 197
    const v3, 0x7f07010e

    new-array v4, v0, [Ljava/lang/Object;

    invoke-static {v7}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v5

    aput-object v5, v4, v1

    invoke-static {v6, v3, v4}, Lcom/biquge/ebook/app/utils/s;->a(Landroid/content/Context;I[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v2, v3}, Lcom/biquge/ebook/app/widget/DialogTips;->b(Ljava/lang/String;)V

    .line 198
    invoke-virtual {v2, v1}, Lcom/biquge/ebook/app/widget/DialogTips;->setCanceledOnTouchOutside(Z)V

    .line 199
    if-eqz p2, :cond_1

    .line 200
    new-instance v1, Lcom/biquge/ebook/app/d/a/a$2;

    invoke-direct {v1, p0, p1}, Lcom/biquge/ebook/app/d/a/a$2;-><init>(Lcom/biquge/ebook/app/d/a/a;Landroid/content/Context;)V

    invoke-virtual {v2, v1}, Lcom/biquge/ebook/app/widget/DialogTips;->a(Lcom/biquge/ebook/app/widget/DialogTips$b;)V

    .line 211
    :cond_1
    invoke-virtual {v2}, Lcom/biquge/ebook/app/widget/DialogTips;->show()V

    goto :goto_0

    :cond_2
    move v0, v1

    .line 215
    goto :goto_0
.end method


第四条去除权限:
保留如下权限:
[XML] 纯文本查看 复制代码
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.READ_LOGS"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
    <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION"/>
    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
    <uses-permission android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.com.gudianbiquge.ebook.app"/>


有兴趣可以试着继续去除其他无用权限!


第五条去除推送,通知栏广告等烦人无用服务:
[XML] 纯文本查看 复制代码
        <receiver android:name="com.biquge.ebook.app.receiver.MyPushMessageReceiver">
            <intent-filter>
                <action android:name="com.baidu.android.pushservice.action.MESSAGE"/>
                <action android:name="com.baidu.android.pushservice.action.RECEIVE"/>
                <action android:name="com.baidu.android.pushservice.action.notification.CLICK"/>
            </intent-filter>
        </receiver>
        <receiver android:name="com.baidu.android.pushservice.PushServiceReceiver" android:process=":bdservice_v1">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
                <action android:name="com.baidu.android.pushservice.action.notification.SHOW"/>
                <action android:name="com.baidu.android.pushservice.action.media.CLICK"/>
                <action android:name="android.intent.action.MEDIA_MOUNTED"/>
                <action android:name="android.intent.action.USER_PRESENT"/>
                <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
                <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
            </intent-filter>
        </receiver>
        <receiver android:name="com.baidu.android.pushservice.RegistrationReceiver" android:process=":bdservice_v1">
            <intent-filter>
                <action android:name="com.baidu.android.pushservice.action.METHOD"/>
                <action android:name="com.baidu.android.pushservice.action.BIND_SYNC"/>
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_REMOVED"/>
                <data android:scheme="package"/>
            </intent-filter>
        </receiver>
        <service android:exported="true" android:name="com.baidu.android.pushservice.PushService" android:process=":bdservice_v1">
            <intent-filter>
                <action android:name="com.baidu.android.pushservice.action.PUSH_SERVICE"/>
            </intent-filter>
        </service>
        <service android:exported="true" android:name="com.baidu.android.pushservice.CommandService"/>
        <provider android:authorities="com.gudianbiquge.ebook.app.bdpush" android:exported="true" android:name="com.baidu.android.pushservice.PushInfoProvider" android:protectionLevel="signature" android:writePermission="baidu.push.permission.WRITE_PUSHINFOPROVIDER.com.gudianbiquge.ebook.app"/>


最后来张前后对比图:

QQ截图20180604170215.png QQ截图20180604170120.png

下面是修改前后APK,仅用于学习使用,请24小时内自动删除:

链接:https://pan.baidu.com/s/1FIENSRMoKLBonuyfePymzw 密码:eb9v

欢迎回复点评,观看往日教程:



【处女作】【内购】【去广告】【教程】史上最干净的《登山赛车》!


【去签名验证】【去广告】【禁更新】教程之影音先锋纯净版


APK汉化,去广告反编译教程整理文档你值得拥有!










免费评分

参与人数 46威望 +1 吾爱币 +51 热心值 +44 收起 理由
dull + 1 + 1 谢谢@Thanks!
爱妃!朕来了 + 1 + 1 谢谢@Thanks!
sagaseaker + 1 + 1 热心回复!
474558efe + 1 + 1 谢谢@Thanks!
snyvi + 1 + 1 谢谢@Thanks!
生在江湖 + 1 + 1 我很赞同!
蝉旗 + 1 + 1 谢谢@Thanks!
kingkiller + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
枫染尘息 + 1 + 1 热心回复!
sj5291314 + 1 + 1 谢谢@Thanks!
王者之鑫 + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
jms360 + 1 + 1 谢谢@Thanks!
haxcode + 1 谢谢@Thanks!
cgqhhh + 1 + 1 谢谢@Thanks!
se7enroses + 1 + 1 谢谢@Thanks!
5456822 + 1 + 1 谢谢@Thanks!
可爱的小新萌 + 1 + 1 用心讨论,共获提升!
zhuyi3609 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
吃泡面加不起蛋 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
WD丶活着 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
waweiggfnh + 1 + 1 谢谢@Thanks!
一笔 + 1 + 1 用心讨论,共获提升!
qtfreet00 + 1 + 6 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
出来溜溜 + 1 + 1 谢谢@Thanks!
老张有大梦想 + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
hanchahua + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
22944 + 1 + 1 谢谢@Thanks!
yinjipingaijs + 1 + 1 鼓励转贴优秀软件安全工具和文档!
daojian518 + 1 + 1 谢谢@Thanks!
asd8848 + 1 + 1 谢谢@Thanks!
Sehau + 1 + 1 我很赞同!
stars-one + 1 + 1 我很赞同!
xinkui + 1 + 1 谢谢@Thanks!
二逼159 + 1 + 1 谢谢@Thanks!
难念的经 + 1 + 1 热心回复!
he603 + 1 + 1 热心回复!
cosxiaobaitu + 1 + 1 用心讨论,共获提升!
zhh4827 + 1 + 1 热心回复!
oykp521 + 1 + 1 谢谢@Thanks!
boss88 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
向北行 + 1 谢谢@Thanks!
一减一加 + 1 + 1 谢谢@Thanks!
一次过 + 1 + 1 谢谢@Thanks!
Timeless、 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
tenhand + 1 + 1 谢谢@Thanks!
吖骢 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

vLove0 发表于 2018-6-5 16:03
感谢分享,顺便弱弱的问句,我用AndroidKiller反编译这个apk,总会停在反编译Java源码这,如果关掉,重新打开,就看不到Java代码了。而且反编译后,立马编译回apk的时候也会报错。并不是语法错误。
反编译时的图如下:
QQ截图20180605155637.png
编译的错误图如下:
QQ截图20180605160229.png
是我的ShakaApktool版本太低了?
vLove0 发表于 2018-6-5 16:43
Hayden. 发表于 2018-6-5 16:10
对,太低了,升级到最新版就可以了

升到最新的apkTool,回编译没问题了。但是这个反编译源码还是一直停着。对了,楼主,你有没有去过搜书大师这款app的广告?AndroidKiller资源都反编译不了。反编译资源的时候报错了。
m0216 发表于 2018-6-4 17:21
吖骢 发表于 2018-6-4 17:35
压缩包里怎么又两个,哪个是啊?
yiqulanshan 发表于 2018-6-4 17:44
感谢作者无私奉献
飞蛾 发表于 2018-6-4 17:46
什么时候能有苹果的?
 楼主| Hayden. 发表于 2018-6-4 17:54
吖骢 发表于 2018-6-4 17:35
压缩包里怎么又两个,哪个是啊?

带killer的是修改版,不带的是原版
yxjoe 发表于 2018-6-4 18:00
这个可以啊,感谢楼主分享
风青羽 发表于 2018-6-4 18:18
这个不错  感谢楼主的分享
Taobi 发表于 2018-6-4 18:38
可以的,谢谢楼主分享
0531chuxin 发表于 2018-6-4 19:01
真心不错啊.....哈哈哈哈
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-3-29 15:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表