雨落惊鸿, 发表于 2023-9-8 21:10

【实战破解】鱼星球

本帖最后由 雨落惊鸿, 于 2023-9-8 21:19 编辑

进入软件可以看见一些是锁住的,一些是可以进入详情页面的,那就是从预览的活动界面跳转到详情的活动界面,那可不可以把那些锁住强制跳转到详情页呢?
于是看看预览界面的Activity和详情页的Activity




可以看见是从MainActivity跳转到ItemActivity
那就去代码里看看怎么实现的



这里可以看见在a方法实现了从MainActivity跳转到了ItemActivity的那查找一下a方法的调用

这里讲解一下smail代码:(上图)我们需要的是跳转到cond_13,在58行如果v0不等于0就跳转到cond_13,但是,如果58行没有实现跳转,那会继续往下执行,也会执行到a方法的调用,而且执行了上面58行方法并不会影响传入a方法的参数,因此58行可以不用看,但是上面的第50行如果实现了跳转就会调到cond_17,代码不会执行到a方法的调用,因此50行的判断是关键,而50行的意思是如果v0=0就会跳转到cond_17,我们不能让它跳转,需要使v0不等于0,可以看到48行move-result v0,和46行的a方法的调用,那就是v0=c.a()我们进去a方法强制返回1即可

,签名进入软件,虽然有锁的图案,但是点进去也是可以看见详情的,那就是我们强制跳转到详情页的思路实现了。

现在思考如何去掉锁的图案,上图刚刚我们强制赋值1,如果我们没有强制赋值1的返回话,就是从d字段拿到值返回,也就是v0=this.d(118行),那么d字段应该就是判断是否解锁的标志,我们找找d字段的
get调用,看看它在其它地方有什么作用。




到这里看见34行的0x8,和39行的0x0,和43行的setVisibility已经很明显了,在43行的setVisibility的调用可以理解成setVisibility(v2),如果setVisibility(0)就显示布局,如果setVisibility(8)就隐藏布局且不占空间,那可以大胆猜测这里就是控制锁的显示和隐藏,我们要让v2=8,使得锁的那个布局隐藏,再看34行,意思是v2=8,这是我们想要的,再看32行有这个判断,这句判断是如果v2=0就跳转到cond_66,而cond_66这里是使v2=0,这刚好是setVisibility(0),显示了布局,这是我们不想要的。因此我们需要的是不能让32行的判断成立,再看30行,v2得值是从这行来的,因此我们直接正则表达式查找这句代码iget-boolean (.*), .*, Lcom/mpfishapps/a/a/b/c;->d:Z全部赋值成不为0即可

最后前面安装,锁的图案已经去除


BonnieRan 发表于 2023-9-9 11:02

逆向思路清晰+分析过程详细,楼主厉害👍

huffmankim 发表于 2023-9-9 15:20

牛啊楼主,点个赞

cnct2021 发表于 2023-9-9 15:29

这是高手,鉴定完毕

BI3NWQ 发表于 2023-9-9 15:46

请问这个做什么用的?

luofeng0603 发表于 2023-9-9 16:25

不错的分析思路~~

salami 发表于 2023-9-9 17:32

这个软件干什么用的?介绍各种鱼类?

zbh666 发表于 2023-9-9 17:43

这个软件下来玩玩

TianKongzx 发表于 2023-9-9 17:56

好教程,有时间学学看

wamtlt 发表于 2023-9-9 19:59

楼主讲的很细致
页: [1] 2
查看完整版本: 【实战破解】鱼星球