好友
阅读权限20
听众
最后登录1970-1-1
|
一块砖头
发表于 2022-3-30 23:14
本帖最后由 一块砖头 于 2022-3-31 10:57 编辑
前言:
教程以“鲁搬大师”为例
这个软件好像最近挺火,我只搞过6.0-7.0版本,其他版本的破解实在是没有什么意思,也就这个有dexcc有趣些所以发个教程。下面把没有dexcc的称为6.0,有dexcc的称为6.1
首先你得把6.0先破解一遍,这样你弄6.1才会方便很多,直接弄难度太大了了
教程:
一般来说大家破解6.0都是追到这个地方,让146或者160行跳转成功就算是破解了
而在6.1版本中因为这个方法被抽空了没办法进行修改,因此咱们回到6.0的这个方法寻找线索
首先是146对应的142行的b方法,它是用来判断弹窗有没有在显示的,对我们破解6.1来说帮助不大所以放弃
其次是160对应的152行的d方法,咱们跳转过去发现返回值来自一个叫“val$activate”的字段,而在6.1中这个字段还是存在的甚至连名字都没有改,这就成了我们破解6.1的关键。来到6.1中,对这个字段查找put调用
可以看出是由p4传入的,而整个方法里没有对p4进行赋值,所以这个p4是调用这个<init>方法时传入的
ps:这里给不知道的朋友补充一个知识点,px和vx是不一样的,调用某个方法的时invoke传入的值就会被放进px中(x从0开始数)
一般来说咱们就在这里直接对p4赋值就可以完成破解,但是要注意的是val$activate的数据类型是[Z,这是一个布尔数组
平时都是const走天下,但是数组不能直接用const赋值,这里我不直接讲怎么赋值数组,教大家一个思考方法吧这也是本教程唯一一个有营养的地方了
既然咱们不会赋值数组,但是对于这个p4肯定有个定义里面值的步骤,而6.1里面查找<init>的调用发现被抽了那咱们就去6.0找调用处。
第一次查找调用处,找到了传入p4的调用但是其也是由上一层调用进行的赋值,所以再查找调用,然后我们就来到了这里
可以看到数据是由这里的v3传入的,而对v3有定义的地方就在上面,咱们是来偷定义数组的方法的,所以咱们把目光聚焦5393-5397行,第一行咱们很熟但是下面的相信大部分人都挺陌生的。这里结合MT的翻译插件,我对其进行一下解释(有不对的地方还请指正)
new-array vx,vy [Z
首先要知道new-array是指创建一个数组,这里vx是指创建的数组是放到vx里的;vy指的是这个数组的长度(可以放几个数据),后面的[Z指的是这个数组的数据类型是布尔数组
所以结合上面的const/4 v3, 0x1就可以知道这里的意思是,新建一个叫v3的布尔数组,长度是1
aput-boolean vx, vy, vz
aput-boolean就是用来把值放进数组的语句
vx指的是放进去的值是什么
vy是放进哪个数组
vz是放的位置(从0开始数)
所以再结合5385行的const/4 v1, 0x0就可以知道这里的意思是把0放到v3数组的第0个位置
这样一来咱们就明白了嘛,回到6.1的<init>方法。结合6.0的时候看到的判断的是nez,所以要跳转成功就得让这个数组返回的值是1,也就是让这里的p4值是1
根据咱们上面学到的知识,咱们在64行插入代码就完事了
const/4 v1, 0x1
const/4 v2, 0x0
aput-boolean v1, p4, v2
然后保存退出,安装测试就可以看到破解成功了。(软件有np注入的签名验证,这个大家直接过签就不讲了) |
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|