本文通过图文并茂的方式演示如何进行安卓应用的注册码破解,对于去掉登录限制、vip会员限制和激活码限制,都可以通过这种方式进行破解。本教程通过安卓修改大师的代码布局定位功能,来自动定位布局和代码,通过分析代码,向大家展示破解和分析的思路。另外,为了方便大家跟随学习,下面也附带了本教程对应的apk,大家可以一边对照学习,一边操作,以便理解安卓应用的注册码破解思路。
附件apk:请点击这里下载
1、 反编译后,什么都不改,直接打包,确保能运行,说明应用没有加固或者没有反编译限制,可以进行修改
2、 手机上面打开应用,安卓修改大师切换到代码/布局定位,抓取界面布局

从上面的截图可以看出来当前的类名,按钮的id,我们要破解的注册功能,因此点击那个在上述界面的左侧预览窗口,点击注册按钮,右侧自动列出这个按钮的相关属性和id,记住按钮id的名字 registerBtn 和当前的类名 com.ahkeli.vehcheckpda.RegisterActivity 后面有用。
3、 查看java源代码,找到注册按钮对应的处理代码进行分析

点击这个按钮打开源代码
打开的源代码窗口左侧依次展开com.ahkeli.vehcheckpda.RegisterActivity 查看源代码,搜索registerBtn 关键字。

就能看到这个按钮的点击事件,如上图,双击 RegisterActivity$initButton$3 进入点击的处理事件。

就能看到pda注册成功的判断方法isregister,这个方法就是注册码激活成功的判断方法。我们双击isRegiser进入,看到下面的方法

这个方法里面做了一些判断校验,我们要修改的逻辑就在这里,把这里的返回值写死为return true,也就是不管成功失败都返回成功。
把这个源代码拉到最顶部,可以看到包名路径是 package com.ahkeli.vehcheckpda.util;类名是 SystemUtil,请记住这个包名和类名,后面修改用

但是我们要修改apk不是改java文件,java仅仅是用来做参考逻辑的,需要修改的是smali代码,因此回到安卓修改大师,依次按照路径打开这个smali文件,具体路径见上面的红字部分。

找到isRegister方法
将里面的方法返回值写死为return ture; 但是return true是java语句,要转换为smali语句,对应的是
const/4 v0, 0x1
return v0
将上面的方法整个方法体里面都删除,改为上面的代码,见下图,改完后保存,

然后回到修改大师左侧的打包/签名,点击项目打包,打包后在手机上面运行,手机上面已经跳过了注册激活界面,直接到了信号控制的登录界面。
按照上面的方法查看登录界面的登录按钮

找到登录方法

依次点击进入登录方法

继续点击登录后的跳转处理方法

发现登录成功后跳转的主界面是MainActivity
通过上面的分析,登录成功后都是跳转主界面 MainActivity,其实可以直接跳过注册界面和登录界面,直接让应用打开后进入MainActivity。
方法是点击高级模式,打开应用配置文件AndroidMenifest.xml,搜索 android.intent.action.MAIN 关键字,这个是android 应用启动的标志。

将选中的标志移动到MainActivity里面。也就是原来是这样的

修改后是这样的,就是把上面选中的一堆移动到mainactivity里面,这样启动的主界面就变成mainactivity了。

保存后重新打包,我们看到,已经进入了主界面。
具体使用的时候,显示“您无权限使用此功能”,在java代码的MainActivity类里面查找这句话,找到调用的方法

在这个方法上面右键,菜单中点击交叉引用,找到引用的方法,


同样的方法继续右键查找引用,查找到调用的方法

通过读代码,发现当前类名称为rylb的变量是用来判断是否有权限的,这个变量包含11,15字符就会报上面的错误,包含12,08就是正常的。因此把这个变量设置写死为 1208 即可。
通过上面的语句判断得出来的结论,接下来就是写死这个变量,
通用在java代码的Mainactivity类里面搜索这个rylb变量,发现有两个地方赋值,


我们要做的是把这两个地方写死上面分析出来的1208,同样java代码只是用来参考的,要修改的话,还是修改smali代码,找到上面的方法对应的代码

上面是直接修改默认值为1208,请对应看前面的java代码

这个是新建一个变量替换掉原来的返回值,查看对比前面的java代码
然后重新打包运行,破解成功。