锁机软件密码分析(二)

前言

先祝大家国庆快乐 哈哈

在(一)中已经说过会有第二节,今天它来了。在第一节中已经分析出了每层锁的密码算法,今天来分析一下每层锁的原理

准备工具

1.mt管理器

2.灵活的小手

3.聪明的脑瓜

开始分析

回到我们之前分析的地方如图

116461449d2c4d07acd6a0512a4a84d3.png

 我们之前已经分析了access L1000003方法的内容。今天来分析access$1000024方法的内容,如图

7f7db5add826420f96b377e3f26e7f22.jpg

 同样的,我们跳转过去然后转Java分析即可,如图找到其调用并跳转

ce3200b2a61640dd890483be1c03b151.jpg

 转Java后进行分析,如图

77ddfc1408b746fba8b5a154bba183e0.jpg

 如图所示,access$1000024方法又调用了名为c的方法并返回,那么我们就顺势而为,跳转到c方法分析,如图

cbf6e76a57b84695988de7967fcc1a3c.jpg

转Java后可以得到

 1e7d642ff73c4ec8a71e270e08507cd7.jpg

 如图所示,该方法使用了switch case语句并以cL1的值进行case跳转。那么我们重点就应该放在这几个跳转上,如图

5ec6b818e99a448ea10ae76402899cd1.jpg

 如图所示,L6与L7为关键跳转,那么为什么呢?大家莫虑,且看此图

569ea5fc8df345d3aa113ce1f8830974.jpg

 由于代码一般是按照从上往下的顺序执行,那么L6对应的就是:e方法-k方法-j方法,而最后的这个j方法正好对应的是第二层锁,而k方法是我们之前说过的输出密码的方法,并且这个密码(pW)由b变量通过计算得来,然后e方法就正好是在给b变量赋值。那么如此执行下来就是:先通过e方法输出b变量的值,然后由k方法通过对b变量的计算对pW赋值而得到解锁密码,最后由j方法来加载第二层锁的相关提示等等。再通过对图示字符串的分析,应该可以得到结论:b变量就是所谓的序列号。L7的分析也是一样的,这里就不作分析了。

13342f17e2a846a0ba661efc1d428ba6.jpg

 如图所示,e与k相辅相成,b与pW环环相扣。总的分析下来的话我们可以知道,在进入每层锁之前那些所谓的序列号啊,解锁密码啊,其实都已经生成好了。

最后再说一下序列号的问题,这种锁每层的序列号肯定都是随机的,而b变量正好就是由随机数(random)得来,所以说b变量就是所谓的序列号。

结语

OK啊,也是都分析完了。还是那句话,我的能力有限,而且语文不好,有些地方行文措辞不太好,望海涵。

再次祝大家国庆快乐!更祝大家永远也不会被锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值