JVM是JAVA虚拟机,运行JAVA字节码程序
Dalvik是Google专门为Android设计的一个虚拟机,Dalvik有专属的文件执行格式dex(Dalvik executable)
Art(Android Runtime)相当于Dalvik的升级版,本质与Dalvik无异
smali是Dalvik的寄存器语言,smali代码是dex反编译而来的。
所以只要将dex反编译成smali,就可以看到代码了。优点类似exe反编译成汇编。这里提供2个工具,1个是win平台的jdx,可以做静态分析。1个是安卓平台的NP管理器。
还是用吾爱破解上的例子,大家可以移步这里看详细的说明
看一下这个例子,使用一键三连的按钮,提醒充值大会员。我们用jdx反编译一下。 可以看到在有这样的代码。
点击进入这个方法,可以看到这个lambda-2方法就是判断大会员的。这个程序相对简单。我们用NP修改之后,可以直接绕过大会员的判断。
首先我们安装核心破解,并且在勾选系统框架.然后使用NP管理器,提取安装包,并打开dex文件,搜索“大会员”找到核心代码,然后通过阅读代码,找到判读是否为大会员的逻辑代码,也就是我框起来的这里 if-eqz p0,:cond_43.这个代码的意思大概是执行isVip判断,结果给p0,若p0为空,则跳转到:cond_43。绕过的判读的思路有很多,注释掉该跳转;让ipVip无条件判断为真;强制跳转到一键三连等等。我给演示一下强制跳转,我们新增一个跳转点 :cond_73,然后让这个地方跳转到 :cond_73。保存并推出,然后重新安装,在打开,可以看到一键三连已经可以用了。