Dalvik字节码编辑器的破解实例!
2013-07-08 23:29:17 -0400
用过android上的X-plore与TotalCommander应该都知道他们有使用时间限制,一但时间过了就必须购买或重新下载新的。破解X-plore首先从Lcom/lonelycatgames/Xplore/Browser;类入手,打开这个类,然后打开onCreate方法,可发现这段代码invoke-static/range {v31..v31} Lcom/lonelycatgames/Xplore/BrowserUtils;->isInstalledFromMarket(Landroid/content/Context;)Zmove-result v28if-nez v28 :label_106invoke-static/range {v31..v31} Lcom/lonelycatgames/Xplore/BrowserUtils;->getDexCreateTime(Landroid/content/Context;)Jmove-result-wide v10invoke-static {} Ljava/lang/System;->currentTimeMillis()Jmove-result-wide v28sub-long v5 v28 v10const-wide/32 v28 1209600000cmp-long v28 v5 v28if-ltz v28 :label_97这段代码大概意思是,判断软件是不是从安卓商店下载的,如果不是则得到当前系统时间并和作者设定的时间作比较,在设定的范围之内可以用,否则弹出去安卓商店下载之类的提示。如果是从商店下载的则直接跳过时间比较。这样我们只要修改 isInstalledFromMarket方法的返回值就行了,可发现isInstalledFromMarket方法在 Lcom/lonelycatgames/Xplore/BrowserUtils;类里面。找到该类并打开,找到 isInstalledFromMarket方法打开,在return v2之前加入const/4 v2 1,也就是一直让这个方法返回true,保存....破解TotalCommander打开Lcom/ghisler/android/TotalCommander/TotalCommander;类(也就是到 /com/ghisler/android/TotalCommander/目录下,打开TotalCommander), 找到onCreate方法打开,可发现invoke-static {} Ljava/lang/System;->currentTimeMillis()Jmove-result-wide v6const/16 v0 111const/16 v1 11const/16 v2 31move v3 v8move v4 v8move v5 v8invoke-static/range {v0..v5} Ljava/util/Date;->UTC(IIIIII)Jmove-result-wide v0cmp-long v0 v6 v0if-lez v0 :label_1094大概意思就是当前时间与作者设定的时间作比较,如果超过设定时间就弹出Dialog提示,且不能继续使用。看这段代码 if-lez v0:label_1094这是程序跳转的关键点,判断寄存器v0的值是否小于等于0,如果成立,跳转到label_1094(也就是可以继续使用)所以只要让v0的值不大于0就行了,在 if-lez v0:label_1094前面加上const/4 v00。保存....
Back to home
代码
/cat/111288