GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

应用安全 --- apk加固 之 试用次数

通用原理

许多试用版软件使用以下两种方法来计算时间:

  1. 首次启动时间:在第一次启动时保存当前时间(currentTimeMillis)。之后每次启动,都用当前时间减去保存的首次启动时间,来判断是否超过了试用期(例如7天)。

  2. 运行时间检查:在程序运行过程中,使用高精度时间(nanoTime)来测量某个功能的运行时长,如果超时则要求购买。

 

(invoke-*.* \{\}, Ljava/lang/System;->currentTimeMillis\(\)J) \s*(move-result-wide ([pv]\d+))

替换

$1

const-wide $3, 0x1B82AED3940L

最终效果:
无论实际时间如何,应用程序从此处得到的“当前时间”永远是 0x1B82AED3940L。如果程序在第一次运行时保存了这个假时间作为安装时间,那么后续每次计算出的试用期时长永远是 固定的假当前时间 - 固定的假安装时间 = 0,从而实现无限。

 

(invoke-*.* \{\}, Ljava/lang/System;->nanoTime\(\)J)\s*(move-result-wide ([pv]\d+))

替换

$1

const-wide $3, 0x1B82AED3940L

posted on 2025-09-09 15:49  GKLBB  阅读(22)  评论(0)    收藏  举报