准备工具
1、Android studio
2、NP管理器
软件用NP管理器能过掉签名校验,我就懒得去手改了,检测倒计时APP也花了不少时间,应该是做了很多加密工作。但这类有试用时间的APP基本上会读取设备id和时间戳,以便控制试用时间,所以可以从设备id入手。
首先第一次安装会送144小时的试用时间,也就是一个星期,到期后就再也不能播放音乐了。安装后查看了一下sp目录,发现里面存放着一个设备id,看来它并没有做太多的加密,直接就是明文了。
换设备id理论上通用,不存在版本兼容问题。
因为软件试用时间比较短,所以不需要定时更换,直接每次启动都更换就好了。
Java示范:
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 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 ()V
.registers 1
.line 6
invoke-direct {p0}, Ljava/lang/Object;->()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;->(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
![](https://static.52pojie.cn/static/image/common/none.gif)
1.png (103.88 KB, 下载次数: 0)
下载附件
2021-9-6 19:41 上传
invoke-static {p0}, Lcheck;->yayi(Landroid/content/Context;)V
如上图,在APP入口调用即可在每次启动软件的时候更换虚假设备ID。