吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 20076|回复: 88
上一主题 下一主题
收起左侧

[Android 原创] AdGuard广告拦截程序 高级版解锁

  [复制链接]
跳转到指定楼层
楼主
Forgo7ten2020 发表于 2022-1-10 15:55 回帖奖励

AdGuard高级版解锁

官网:AdGuard - 世界上最高级的广告拦截程序!

version:3.6.38

分析过程

第一步查壳,没有加固

随意输入点击注册,获得提示

img

根据提示找到类,圈出来的部分即为专业版

image-20220109215802551

思路就是构造相应的信息,然后执行这段代码完成高级版激活

Frida脚本

function main() {
    Java.perform(function () {
        Java.use("com.adguard.android.service.license.AdguardLicenseServiceImpl").processResultActivatePremium.implementation = function () {
            arguments[0] = Java.use("com.adguard.android.api.dto.f").$new();
            console.log(JSON.stringify(arguments[0]));
            return this.processResultActivatePremium(arguments[0]);
        };
    });

    Java.perform(function () {
        Java.use("com.adguard.android.api.dto.f").getLicenseKey.implementation = function () {
            console.log("getLicenseKey()");
            return Java.use("java.lang.String").$new("Forgo7ten");
        };
        Java.use("com.adguard.android.api.dto.f").getCountryCode.implementation = function () {
            console.log("getCountryCode()");
            return Java.use("java.lang.String").$new("Forgo7ten");
        };
        Java.use("com.adguard.android.api.dto.f").getExpirationDate.implementation = function () {
            console.log("getExpirationDate()");
            return Java.use("java.util.Date").$new(4071659401000);
        };
        Java.use("com.adguard.android.api.dto.f").getLicenseKeyStatus.implementation = function () {
            console.log("getLicenseKeyStatus()");
            return this.getLicenseKeyStatus();
        };
        Java.use("com.adguard.android.api.dto.f").getStatus.implementation = function () {
            console.log("getStatus()");
            return Java.use("com.adguard.android.model.enums.MobileStatus").PREMIUM.value;
        };
    });
}

setImmediate(main);

不知道会不会有校验

img

为了可以自动激活,便在该服务调用完构造方法后主动调用processResultActivatePremium()来激活

Java.perform(function () {
    Java.use("com.adguard.android.service.license.AdguardLicenseServiceImpl").$init.implementation = function () {
        var result = this.$init(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);
        this.processResultActivatePremium(null);
        return result;
    };
});

编写Smali进行打包

修改processResultActivatePremium()方法

.method private processResultActivatePremium(Lcom/adguard/android/api/dto/f;)Lcom/adguard/android/model/enums/ActivationResult;
    .locals 4

    new-instance v0, Ljava/util/Date;

    const-wide v2, 0x3b401cfef28L

    invoke-direct {v0, v2, v3}, Ljava/util/Date;-><init>(J)V

    const/4 v3, 0x1

    const/4 v2, 0x1

    iget-object v1, p0, Lcom/adguard/android/service/license/AdguardLicenseServiceImpl;->applicationService:Lcom/adguard/android/service/f;

    const-string p1, "Forgo7ten"

    invoke-interface {v1, v2, v0, p1, v3}, Lcom/adguard/android/service/f;->a(ZLjava/util/Date;Ljava/lang/String;Z)V

    .line 135
    sget-object p1, Lcom/adguard/android/model/enums/ActivationResult;->SUCCESS:Lcom/adguard/android/model/enums/ActivationResult;

    return-object p1
.end method

刚开始在构造方法中调用,结果一直卡在开屏界面进不去,frida在相同位置调用则不会有报错,翻了半天log没有找到头绪,后来发现每次都会调用isTrialAvailable()方法来验证是否是试用,于是在这个方法的开头调用了激活方法

.method public isTrialAvailable()Z
    .locals 1

    invoke-direct {p0}, Lcom/adguard/android/service/license/AdguardLicenseServiceImpl;->myProcessResultActivatePremium()Lcom/adguard/android/model/enums/ActivationResult;

同时由于原激活函数的参数比较难构造,自己添加了一个只是删去参数的方法

.method private myProcessResultActivatePremium()Lcom/adguard/android/model/enums/ActivationResult;
    .locals 5

    new-instance v0, Ljava/util/Date;

    const-wide v2, 0x3b401cfef28L

    invoke-direct {v0, v2, v3}, Ljava/util/Date;-><init>(J)V

    const/4 v3, 0x1

    const/4 v2, 0x1

    iget-object v1, p0, Lcom/adguard/android/service/license/AdguardLicenseServiceImpl;->applicationService:Lcom/adguard/android/service/f;

    const-string v4, "Forgo7ten"

    invoke-interface {v1, v2, v0, v4, v3}, Lcom/adguard/android/service/f;->a(ZLjava/util/Date;Ljava/lang/String;Z)V

    .line 135
    sget-object v4, Lcom/adguard/android/model/enums/ActivationResult;->SUCCESS:Lcom/adguard/android/model/enums/ActivationResult;

    return-object v4
.end method

最终效果

AdGuard图.gif

免费评分

参与人数 18吾爱币 +14 热心值 +17 收起 理由
jerry1452 + 1 + 1 谢谢@Thanks!
heihieisanshu + 1 我很赞同!
zli9988 + 1 我很赞同!
Badao163 + 1 我很赞同!
mhaitao + 1 + 1 我很赞同!
atpjcom + 1 + 1 用心讨论,共获提升!
zr924 + 1 + 1 谢谢@Thanks!
yantf1234 + 1 热心回复!
snakenba580 + 1 + 1 谢谢@Thanks!
yyizz + 1 我很赞同!
ywlYWL + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
dxlmn + 1 谢谢@Thanks!
小小的石头13 + 1 + 1 我很赞同!
wanfon + 1 + 1 谢谢@Thanks!
xouou + 1 + 1 老哥, AdGuard的另外一款产品有没有xx
打不过就加入 + 1 + 1 谢谢@Thanks!
可爱的典哒哒 + 1 + 1 我很赞同!
芽衣 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

头像被屏蔽
推荐
xmq239216 发表于 2022-1-10 16:15
提示: 该帖被管理员或版主屏蔽
推荐
特种兵军品 发表于 2022-1-10 16:02
推荐
sqcsl888 发表于 2022-1-10 16:30
之前用了,但是启动5秒等待广告,还有其他广告都拦截不了。还有特别费电,所以就没用过了。。好像有那种NDS,设置好以后直接拦截的。。
5#
进击的马铃薯 发表于 2022-1-10 16:16
感谢大佬分享!
6#
冥界3大法王 发表于 2022-1-10 16:25
这个不错,就是费资源。
7#
薛之谦6666 发表于 2022-1-10 16:29
学会了!!
头像被屏蔽
8#
jametelang 发表于 2022-1-10 16:38
提示: 该帖被管理员或版主屏蔽
9#
kuan99118 发表于 2022-1-10 16:45
xmq239216 发表于 2022-1-10 16:15
成品可以发一下吗?

别想了!论坛禁止的!
10#
kuan99118 发表于 2022-1-10 16:46

PC端还用这个吗?浏览器插件不是随便用吗!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 09:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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