【文章標題】: 【原創】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'如圖所示:

因為國行手機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,搞定,
效果如圖: