欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

AD Blocker Trial 破解小记

AD Blocker Trial 破解小记

【文章标题】: 【原创】AD Blocker Trial 破解小记
【文章作者】: 漏网之鱼
【作者邮箱】: lwzy-crack@163.com
【作者主页】: http://lwzy-crack.blog.163.com
【作者 QQ】: 530747686
【软件名称】: AD Blocker Trial
【下载地址】: 自己搜索下载
【操作平台】: Windows 7
【软件介绍】: 一款Android平台的广告拦截软件。
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
【软件介绍】
  软件简介:英文名字叫 "AD Blocker Trial",中文名有点长——"广告拦截器及净触发器的审判" 。
  该软件无需手机用户获得root权限,因为该软件拦截广告原理不是修改hosts文件 127.0.0.1 来
  实现的,并且可以单独设置拦截哪一款软件的广告非常人性化值得试用。
   
  使用方法:启动软件后 找到你想要拦截广告的软件名称单击,选择“Block” 就可以了  
  取消拦截:找到你不想要拦截广告的软件名称单击 选择“Unblock”就可以了  简单吧!
   
  注:有些应用程序如果你第一次没有阻止的话下次再阻止就不行了,因为第一次已经下载好了,
  解决方法就清理下缓存。
   
  “AD Blocker Trial ”优点无需用户获取root 可以自己选择拦截某款软件的广告 值得下载!
  但是它是共享软件,需要注册,软件有时间限制。过期后,软件不能正常使用,并且弹出'NAG'如图所示:
  因为国行手机Root以后就不给保修了,所以我至今没有Root,从"安卓市场"里面下载的很多程序都带有广告,很烦人,而且还浪费流量
  于是我就找到了这个软件,用了3天以后不能用了,提示过期,看来只好自己动手"PJ"它了。
  --------------------------------------------------------------------------------
【详细过程】 
  准备工作:安装好Java运行环境,没有的朋友去这里下载 http://www.java.com/zh_CN/
  用到的工具:ApkTool_GUI_1.3.5内测.exe(众多Android程序的GUI版本), Notepad++ (非常强大的文本编辑工具,推荐使用  下载地址:http://notepad-plus-plus.org/ )
   
  1、反编译apk:

反编译后生成了ADBlocker_trial 文件夹,浏览目录发现 ADBlocker_trial\smali\net\xdevelop\util 里面 有一个可疑 文件 RegUtil.smali ,*.smali是什么文件?你问我啊!去看这篇文件,有详细介绍:http://bbs.pediy.com/showthread.php?t=135323
RegUtil.smali 内部结构如下:


通过这几个方法的名称,我们大致可以猜测出每个方法的用途: 
check ,检查是否注册成功,
getProdCode  ,生成本手机(getLocalPhone)的机器码
用 Notepad++打开ADBlocker_trial\smali\net\xdevelop\adblocker_t目录下的所有文件,搜索过期提示 "This trial version has expired, if you like it and want to continue using it, please buy it."
来到这个文件 ADBlocker.smali的 这里  
.method protected onResume()V
    .locals 2
    .prologue
    .line 141
    invoke-super {p0}, Landroid/app/Activity;->onResume()V
    .line 142
    const-string v0, "ap"
    const-string v1, "onResume"
    invoke-static {v0, v1}, Landroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
    .line 143
    new-instance v0, Lnet/xdevelop/adblocker_t/ADBlocker$2;
    invoke-direct {v0, p0}, Lnet/xdevelop/adblocker_t/ADBlocker$2;-><init>(Lnet/xdevelop/adblocker_t/ADBlocker;)V
    .line 149
    invoke-virtual {v0}, Lnet/xdevelop/adblocker_t/ADBlocker$2;->start()V
    # 这里判断是否过期
    .line 151  
    invoke-static {p0}, Lnet/xdevelop/adblocker_t/ProtectorPreferences;->isExpired(Landroid/content/Context;)Z
    move-result v0
    if-eqz v0, :cond_0 
    .line 152
    const-string v0, "Expired!"
    const-string v1, "This trial version has expired, if you like it and want to continue using it, please buy it."
    invoke-direct {p0, v0, v1}, Lnet/xdevelop/adblocker_t/ADBlocker;->showDialog(Ljava/lang/String;Ljava/lang/CharSequence;)V
    .line 155
    :cond_0
    return-void
.end method
--------------------------------------------------------------------
通过阅读这个文件,我们发现一个非常可疑的 方法 :.method private final reg(Landroid/content/Context;Ljava/lang/String;)V
仔细阅读后发现:
.method private final reg(Landroid/content/Context;Ljava/lang/String;)V
    .locals 3
    .parameter "context"
    .parameter "key"
    .prologue
    .line 477
    # 调用 check 函数 判断是否注册 
    invoke-static {p1, p2}, Lnet/xdevelop/util/RegUtil;->check(Landroid/content/Context;Ljava/lang/String;)Z
    move-result v1
    # 如果没有注册成功,就跳到  cond_0
    if-eqz v1, :cond_0
    .line 478
    invoke-static {p0}, Lnet/xdevelop/adblocker_t/ProtectorPreferences;->getPref(Landroid/content/Context;)Lnet/xdevelop/adblocker_t/ProtectorPrefModel;
    move-result-object v0
    .line 479
    .local v0, m:Lnet/xdevelop/adblocker_t/ProtectorPrefModel;
    const/4 v1, 0x1
    iput-boolean v1, v0, Lnet/xdevelop/adblocker_t/ProtectorPrefModel;->donated:Z
    .line 480
    invoke-static {p0, v0}, Lnet/xdevelop/adblocker_t/ProtectorPreferences;->savePref(Landroid/content/Context;Lnet/xdevelop/adblocker_t/ProtectorPrefModel;)V
    .line 481
    const v1, 0x7f070011
    invoke-virtual {p0, v1}, Lnet/xdevelop/adblocker_t/ADBlocker;->getText(I)Ljava/lang/CharSequence;
    move-result-object v1
    invoke-interface {v1}, Ljava/lang/CharSequence;->toString()Ljava/lang/String;
    move-result-object v1
   
    const v2, 0x7f070013
    # 注册成功
    invoke-virtual {p0, v2}, Lnet/xdevelop/adblocker_t/ADBlocker;->getText(I)Ljava/lang/CharSequence;
    move-result-object v2
    invoke-interface {v2}, Ljava/lang/CharSequence;->toString()Ljava/lang/String;
    move-result-object v2
    invoke-direct {p0, v1, v2}, Lnet/xdevelop/adblocker_t/ADBlocker;->showMsg(Ljava/lang/String;Ljava/lang/String;)V
    .line 486
    .end local v0           #m:Lnet/xdevelop/adblocker_t/ProtectorPrefModel;
    :goto_0
    return-void
    .line 484
    :cond_0
    const v1, 0x7f070012
    invoke-virtual {p0, v1}, Lnet/xdevelop/adblocker_t/ADBlocker;->getText(I)Ljava/lang/CharSequence;
    move-result-object v1
    invoke-interface {v1}, Ljava/lang/CharSequence;->toString()Ljava/lang/String;
    move-result-object v1
    const v2, 0x7f070014
    # 注册失败
    invoke-virtual {p0, v2}, Lnet/xdevelop/adblocker_t/ADBlocker;->getText(I)Ljava/lang/CharSequence;
    move-result-object v2
    invoke-interface {v2}, Ljava/lang/CharSequence;->toString()Ljava/lang/String;
    move-result-object v2
    invoke-direct {p0, v1, v2}, Lnet/xdevelop/adblocker_t/ADBlocker;->showMsg(Ljava/lang/String;Ljava/lang/String;)V
    goto :goto_0
.end method
------------------------------------------------------------------------------------
.field public static final upgrade_failed:I = 0x7f070014
.field public static final upgrade_success:I = 0x7f070013
------------------------------------------------------------------------------------
破解方法: if-eqz v1, :cond_0  这一句话 删掉,保存,用ApkTool_GUI_1.3.5内测.exe  打包,OK,搞定,
效果如图:


未破解的apk 文件,ADBlocker_trial.rar
破解好的apk文件:ADBlocker_trial(已签名).rar
--------------------------------------------------------------------------------
【版权声明】: 转载请注明作者并保持文章的完整, 谢谢!
                                                       2012年02月28日 19:55:59

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功