吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 16263|回复: 30
收起左侧

[Android 原创] APK去广告通用思路分享

  [复制链接]
windwing1883 发表于 2015-12-25 13:40
本帖最后由 windwing1883 于 2015-12-26 12:30 编辑

0X0:教程很简单,主要是分享思路,大牛就表看了,主要是分享给像我这种菜鸟的.
0x1:工作要求最近正在研究Android Xposed框架下的一些功能,有一版Xposed用得好好的突然不能用了,想重装一下,于是网上搜了一下'xposed框架下载'随便找了一个下载下来装上,发现有广告,习惯性的丢进JEB分析了一下就有了如下破解过程(这个帖子是回忆昨天破解,可能逻辑不是很连贯大致流程说一下)
0x2:进入app发现有广告,如图1.
思路①:一般的广告sdk加入过程为:
       (1)拷贝jar文件到libs目录下(2)Manifest下加一些权限-Activity-或一些数据(3)在程序入口初始化穿入广告ID之类的过程,如果是Banner广告还要将View加入Layout中以便能在屏幕上显示插屏则不用.
       知道了上述流程 就可以将Banner的View 大小设置为0以至于在屏幕上显示不出来(但是强迫症的我是接受不了的)
       或将sdk初始化代码在smail中分析删除,或者将广告ID改成你自己的,自己的广告自己肯定不排斥
       也可以视情况将 Manifest文件下的网络权限给去除(如果确定App是单机的,完全没有网络交互可以这样做,但是不推荐)
思路②:
       一些特殊App会有去广告的功能,如果买一些东西(vip之类的)或者是积分可以去除广告,那就需要分析一下代码了(本文是这种情况)
      过程1:
                图上面已经看了 是属于banner广告类的 上面有去广告的按钮,首先找了一下广告values目录下的配置文件(values目录:app的资源目录之一主要放一些字符串资源,放入之后可以在R文件中生成资源ID可以在程序中通过 这个ID调用)没有找到所谓的广告ID(这个广告像不像是某些sdk的),于是点了一下去广告按钮准备走一下爆破路线,发现需要积分神马的,简单走了一下他去积分流程,先提示我有0积分,再点去广告就Toast(Toast:就是屏幕里出一个黑条上面显示文字,过一段时间自动消失)显示积分不足,于是JEB的Strings下搜索'积分不足'如图2点进去 Tab一下看源代码(分析Apk的时候非常喜欢先拖进JEB 因为它代码还原性高,可读性强,而且还可以看引用,改一些名字之类的,强烈推荐我就用的吾爱的JEB).
看到代码:

[Java] 纯文本查看 复制代码
if(arg7 == this.c) {
                    Context v0 = this.getContext();
                    y v1 = a.a(v0);
                    if(v1.a("pref_key_coins", 0) < v1.a("pref_key_coinnumremove", 0)) {
                        a.a(v0, "积分不足.");
                        a.a(this.getContext(), true, true);
                        return;
                    }

                    a.a(this.getContext(), false, this.m);
                    return;
}
      
       比较那行大致意思是:读本地配置文件 读取 'pref_key_coins'和'pref_key_coinnumremove' key的value值 没有这个key是返回0.既然看到这里可以直接去
       data/data/应用包名/shared_prefs/下的xml里 填上 这个字段 并且给很大值(试了一下这样做失败了,失败原因不做分析因为我有很多方法让广告去除 哈哈,继续往下说)所以改了一下跳转: 之前是 if-ge v2, v1 :A6 如果v2≥ v1就跳到A6(ge 是 Greater Equals)改成小于之后反编译安装点去广告流程,发现没有上一个提示了(截止目前上一部是做成功了)出现了新的提示Toast 是 "积分不足,去广告失败!"继续JEB搜索,追踪到代码处:
[Asm] 纯文本查看 复制代码
.method public static a(Context, Z, DialogInterface$OnDismissListener)V
          .registers 7
00000000  const/4                 v2, 0
00000002  invoke-static           a->a(Context)y, p0
00000008  move-result-object      v0
0000000A  const-string            v1, "pref_key_coinnumremove"
0000000E  invoke-virtual          y->a(String, I)I, v0, v1, v2
00000014  move-result             v0
00000016  invoke-static           a->c(Context)I, p0
0000001C  move-result             v1
0000001E  if-lt                   v1, v0, :A8
:22
00000022  if-eqz                  p1, :56
:26
00000026  instance-of             v0, p0, Activity
0000002A  if-eqz                  v0, :3A
:2E
0000002E  move-object             v0, p0
00000030  check-cast              v0, Activity
00000034  invoke-virtual          Activity->finish()V, v0
:3A
0000003A  invoke-static           a->a(Context, I, DialogInterface$OnDismissListener)V, p0, v2, p2
:40
00000040  new-instance            v0, Intent
00000044  const-string            v1, "jobernowl_ACTION_REFRESH_POINTS"
00000048  invoke-direct           Intent-><init>(String)V, v0, v1
0000004E  invoke-virtual          Context->sendBroadcast(Intent)V, p0, v0
00000054  return-void
:56
00000056  neg-int                 v0, v0
00000058  invoke-static           a->a(Context, I)V, p0, v0
0000005E  invoke-static           a->a(Context)y, p0
00000064  move-result-object      v0
00000066  const-string            v1, "pref_key_last_removed_time"
0000006A  invoke-static           System->currentTimeMillis()J
00000070  move-result-wide        v2
00000072  invoke-static           Long->valueOf(J)Long, v2, v3
00000078  move-result-object      v2
0000007A  invoke-virtual          y->a(String, Object)V, v0, v1, v2
00000080  const-string            v0, "去广告成功,稍候广告会自动消失!"
00000084  invoke-static           a->a(Context, String)V, p0, v0
0000008A  invoke-static           a->a(Context)y, p0
00000090  move-result-object      v0
00000092  const-string            v1, "pref_key_remove_banner"
00000096  const/4                 v2, 1
00000098  invoke-static           Boolean->valueOf(Z)Boolean, v2
0000009E  move-result-object      v2
000000A0  invoke-virtual          y->a(String, Object)V, v0, v1, v2
000000A6  goto                    :40
:A8
000000A8  if-eqz                  p1, :C8
:AC
000000AC  instance-of             v0, p0, Activity
000000B0  if-eqz                  v0, :C0
:B4
000000B4  move-object             v0, p0
000000B6  check-cast              v0, Activity
000000BA  invoke-virtual          Activity->finish()V, v0
:C0
000000C0  invoke-static           a->a(Context, I, DialogInterface$OnDismissListener)V, p0, v2, p2
000000C6  goto                    :40
:C8
000000C8  const-string            v0, "积分不足,去广告失败!"
000000CC  invoke-static           a->a(Context, String)V, p0, v0
000000D2  goto                    :40
.end method


      看到这里应该是去广告的关键部分,因为看到去广告成功字样,分析代码是 if(){xxx return}elise if{xxx return}else{这里是成功}.因为有之前两个条件判断改跳转条件可能比较麻烦,下个做法:直接把每个条件的跳转 都指向去广告成功出的标签比如说这个是 :56  这样使每个条件都跳到成功逻辑里然后反编译运行,去广告,提示去除广告成功字样 至此也算破解完了.
0x3说明:
      一,本帖如有违规请管理删帖.      ,如有分析不到之处还请大神给我斧正.
     ,本次破解过程纯属个人娱乐不涉及商业用途.
      四,如果对你有所帮助请给我加加血 哈哈.
     ,用JEB分析代码用AndroidKiller等修改Smail.
      六,不设高富帅通道,因为吾爱的所有人都是高富帅,不强制加血.
     附示例链接: http://pan.baidu.com/s/1bvqHLO 密码: xjuk 还有成品链接: http://pan.baidu.com/s/1gdXzX2z 密码: ssae
0x4预告:(因为工作原因时间原因,虽然很想破解并在论坛上发点东西,但是毕竟精力有限)下篇有可能是破解书旗下载功能或者是破解一款收费联网软件 敬请期待哈哈



t1.png
t2.png
t3.png

图4

图4

免费评分

参与人数 6威望 +2 热心值 +6 收起 理由
fsfnet + 1 已经处理,感谢您对吾爱破解论坛的支持!
mqlv + 1 我很赞同!
吾乃小明 + 1 我很赞同!
我也是个傻瓜 + 1 我很赞同!
sunsy80 + 1 有营养的帖子,感谢楼主分享思路心得,谢谢.
qtfreet00 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.

查看全部评分

本帖被以下淘专辑推荐:

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

 楼主| windwing1883 发表于 2015-12-26 12:31
真爱贤 发表于 2015-12-26 10:21
恩恩,写的通俗易懂。可惜我不会分析反编译出来的代码

都是由不会到会的过程 慢慢分析你可以的
fengzi 发表于 2015-12-25 13:44
 楼主| windwing1883 发表于 2015-12-25 14:01
Ericky 发表于 2015-12-25 14:12
支持楼主
普通用户 发表于 2015-12-25 14:32 来自手机
可惜手机不支持xp
 楼主| windwing1883 发表于 2015-12-25 14:35

大神带我飞!
真爱贤 发表于 2015-12-26 10:21
恩恩,写的通俗易懂。可惜我不会分析反编译出来的代码
那些花儿吖 发表于 2015-12-28 13:33
支持一下吧
lovekix 发表于 2015-12-28 13:39

支持一下吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 13:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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