蓝天资源网
当前位置:蓝天资源网 / 汇编逆向 / 正文

中子音乐播放器 Neutron Player 无限试用

作者:忆笙发布时间:2021-09-07 00:46浏览数量:811次评论数量:0次

准备工具

1、Android studio

2、NP管理器

软件用NP管理器能过掉签名校验,我就懒得去手改了,检测倒计时APP也花了不少时间,应该是做了很多加密工作。但这类有试用时间的APP基本上会读取设备id和时间戳,以便控制试用时间,所以可以从设备id入手。

首先第一次安装会送144小时的试用时间,也就是一个星期,到期后就再也不能播放音乐了。安装后查看了一下sp目录,发现里面存放着一个设备id,看来它并没有做太多的加密,直接就是明文了。

换设备id理论上通用,不存在版本兼容问题。

因为软件试用时间比较短,所以不需要定时更换,直接每次启动都更换就好了。

import android.content.Context;
import android.content.SharedPreferences;
import java.util.concurrent.atomic.AtomicReference;

public class check {
    private static final String a = "com.neutroncode.mp.SHARED_PREFS";

    public static void yayi(Context context) {
        AtomicReference<SharedPreferences> get;
        get = new AtomicReference<>(context.getSharedPreferences(a, 0));
        get.get().edit()
                    .putString("android_id", String.valueOf(System.currentTimeMillis()))
                    .apply();
    }
}
.class public Lcheck;
.super Ljava/lang/Object;

# static fields
.field private static final a:Ljava/lang/String; = "com.neutroncode.mp.SHARED_PREFS"

# direct methods
.method public constructor <init>()V
    .registers 1

    .line 6
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method public static yayi(Landroid/content/Context;)V
    .registers 7

    .line 12
    new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;

    const-string v1, "com.neutroncode.mp.SHARED_PREFS"

    const/4 v2, 0x0

    invoke-virtual {p0, v1, v2}, Landroid/content/Context;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;

    move-result-object v1

    invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicReference;-><init>(Ljava/lang/Object;)V

    .line 13
    invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Landroid/content/SharedPreferences;

    invoke-interface {v1}, Landroid/content/SharedPreferences;->edit()Landroid/content/SharedPreferences$Editor;

    move-result-object v1

    const-string v2, "android_id"

    .line 14
    invoke-static {}, Ljava/lang/System;->currentTimeMillis()J

    move-result-wide v4

    invoke-static {v4, v5}, Ljava/lang/String;->valueOf(J)Ljava/lang/String;

    move-result-object v3

    invoke-interface {v1, v2, v3}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;

    move-result-object v1

    .line 15
    invoke-interface {v1}, Landroid/content/SharedPreferences$Editor;->apply()V

    .line 16
    return-void
.end method

invoke-static {p0}, Lcheck;->yayi(Landroid/content/Context;)V

如上图,在APP入口调用即可在每次启动软件的时候更换虚假设备ID。

忆笙

忆笙 主页 联系他吧

人间山河远阔,只想与你同行。

欢迎 发表评论: