【文章標題】: 【原創】AD Blocker Trial 破解小記
【文章作者】: 漏網之魚
【作者郵箱】: lwzy-crack@163.com
【作者主頁】: http://lwzy-crack.blog.163.com
【作者 QQ】: 530747686
【軟件名稱】: AD Blocker Trial
【下載地址】: http://115.com/file/c2zfcuzd#  ADBlocker_trial.rar
【操作平臺】: Windows 7
【軟件介紹】: 一款Android平臺的廣告攔截軟件。
【作者聲明】: 只是感興趣,沒有其他目的。失誤之處敬請諸位大俠賜教!
【軟件介紹】
  軟件簡介:英文名字叫 "AD Blocker Trial",中文名有點長——"廣告攔截器及凈觸發器的審判" 。
  該軟件無需手機用戶獲得root權限,因為該軟件攔截廣告原理不是修改hosts文件 127.0.0.1 來
  實現的,并且可以單獨設置攔截哪一款軟件的廣告非常人性化值得試用。
   
  使用方法:啟動軟件后 找到你想要攔截廣告的軟件名稱單擊,選擇“Block” 就可以了  
  取消攔截:找到你不想要攔截廣告的軟件名稱單擊 選擇“Unblock”就可以了  簡單吧!
   
  注:有些應用程序如果你第一次沒有阻止的話下次再阻止就不行了,因為第一次已經下載好了,
  解決方法就清理下緩存。
   
  “AD Blocker Trial ”優點無需用戶獲取root 可以自己選擇攔截某款軟件的廣告 值得下載!
  但是它是共享軟件,需要注冊,軟件有時間限制。過期后,軟件不能正常使用,并且彈出'NAG'如圖所示:
點擊圖片以查看大圖

名稱:	過期提示.jpg
查看次數:	0
文件大小:	905.6 KB
ID:	65103
  因為國行手機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:
點擊圖片以查看大圖

名稱:	1.png
查看次數:	0
文件大小:	205.2 KB
ID:	65104
反編譯后生成了ADBlocker_trial 文件夾,瀏覽目錄發現 ADBlocker_trial\smali\net\xdevelop\util 里面 有一個可疑 文件 RegUtil.smali ,*.smali是什么文件?你問我啊!去看這篇文件,有詳細介紹:http://bbs.pediy.com/showthread.php?t=135323

RegUtil.smali 內部結構如下:
點擊圖片以查看大圖

名稱:	fun.png
查看次數:	1
文件大小:	27.5 KB
ID:	65105


通過這幾個方法的名稱,我們大致可以猜測出每個方法的用途: 
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,搞定,
效果如圖:
名稱:  IMG0011.jpg
查看次數: 12
文件大小:  28.9 KB