当前位置: 主页 > JAVA语言

java 锁-java 对象锁和类锁

发布时间:2023-05-24 10:07   浏览次数:次   作者:佚名

我之前发过锁机中的加解密源码DES和Zlib + Base64,近来大部分锁机已经采用AES加解密,特发此贴,公开锁机中的AES加解密源码 (方便大家解密)

本次分析以一款名为“秒赞大师”的软件为例

警告:请不要在真机中安装java 锁,运行,调试操作,此锁机会上传手机信息,如果出现问题,本人概不负责,强烈建议采用模拟器调试

I 认识锁机

java乐观锁和悲观锁_java 对象锁和类锁_java 锁

先运行起来,锁机基本都是这个样子,然后我们在把软件拖进JEB(建议),当然也可以用Android killer。

II 反编译锁机

现在我告诉你们怎么找关键代码,反编译之后,当然有些人说先看manifest文件,确实,找入口很关键,但是我这里推荐大家另一种方法(技巧),就是看这个锁机界面,找布局(layout文件夹),我们从这些xml中找与锁机图片显示相同文字的那个xml。之后,我们就找到了h.xml (如下图),然后再去找源码中的同名java代码,因此就是h.java

java乐观锁和悲观锁_java 对象锁和类锁_java 锁

-------------------------- 》

java 锁_java 对象锁和类锁_java乐观锁和悲观锁

III 分析锁机

(1)找到关键函数

java乐观锁和悲观锁_java 对象锁和类锁_java 锁

我们从h.xml可知,锁机中显示“确定解锁”就是真正的解锁按钮

这句xml中button的属性,显示js这个函数就是点击button响应的函数,我们回到h.java中,找到js这个函数(如下图)

java 对象锁和类锁_java乐观锁和悲观锁_java 锁

(2)分析关键函数

找到关键函数就很好分析了,直接找这几个判断(如下图)

java乐观锁和悲观锁_java 对象锁和类锁_java 锁

java乐观锁和悲观锁_java 锁_java 对象锁和类锁

v0获取的是编辑框的值,红框显示如果输入的值等于pass就跳转到i这个Activity(页面);

蓝框显示,如果输入的值等于v字符串,就设置一些textview控件文件的显示(显然没用);

粉框显示,如果输入的值等于 l.x(v6, "") 的值就退出【涉及到AES加解密】(这个退出是无法退出的,因为退出之后应用会马上自启)

再看右边这两个函数,上边那个是:如果输入的值等于654321,那么执行nwmm这个函数

下边那个是:如果输入的值等于4321,那么执行swmm这个函数

先分析下nwmm函数和swmm这两个函数

java 锁_java 对象锁和类锁_java乐观锁和悲观锁

java乐观锁和悲观锁_java 锁_java 对象锁和类锁

java乐观锁和悲观锁_java 锁_java 对象锁和类锁

从图中可知,这两个函数都是修改PIN码

如果在这个锁机页面输入过654321,那么PIN码会修改成654312

如果在这个锁机页面输入过4321,那么PIN码会修改成4312

最后看重点,红框显示的,如果输入的值等于pass就跳转到i这个Activity(页面)

我们追溯pass这个变量,如下图

java乐观锁和悲观锁_java 对象锁和类锁_java 锁

这里有两个给pass赋值的,那么到底是哪一个呢,上面那个是通过a这个变量获取的,我们再看a这个变量

java 锁_java 对象锁和类锁_java乐观锁和悲观锁

get是一个获取网络数据的函数,详就不细说了

我在这里给大家捋一捋,锁机作者首先从服务器网站获取锁屏密码,从而赋值给pass这个变量;果这个时候网络状况差或者无网络的情况下java 锁,无法获取服务器网站的密码,这个时候执行第二个赋值

总的来说,有网--》服务器密码,无网--》本地密码

java 锁_java 对象锁和类锁_java乐观锁和悲观锁

作者将网站加密,两种获取网站的方法:

①知道加解密函数,这个时候还要获取c的值,很不幸c的值也被加密了,先解密c,再解密a(l这个函数就是AES加密了)----【文章末尾附上解密源码】

②网络抓包工具Fiddler(我在这里也不做教程解说,大家可以百度)

解密后的网址是打开网址,设置成UTF8编码即可看到密码---159357,无网络状态的锁屏密码是8810

java 对象锁和类锁_java 锁_java乐观锁和悲观锁

输入密码后进入第二页锁机,如下图

java 锁_java 对象锁和类锁_java乐观锁和悲观锁

我们按照开始说的,成功找到 i.java中关键函数js,这里也有三个判断,分别来看

java乐观锁和悲观锁_java 锁_java 对象锁和类锁

第一个判断是输入4951,我们又跳回第一个页面

第二个判断是输入997998,会触发一些文字的改变

第三个判断是输入l.x(v17, v9)【AES加解密】,跳转到下一个页面

因此重点是第三个,通过解密我们得知密码是 2415

java 锁_java 对象锁和类锁_java乐观锁和悲观锁

输入密码后如下图显示

java乐观锁和悲观锁_java 对象锁和类锁_java 锁

现在我们来到了最后的页面,这里需要说的是这个密码并不在 djava 里面,而在c.java里面。

我梳理一下这个app的启动顺序

java 对象锁和类锁_java乐观锁和悲观锁_java 锁

再看c.java里的主要代码,这次获取密码的网址是这是个加密的字符串,最后经过解密后的数据是7531(PIN码)

java 对象锁和类锁_java乐观锁和悲观锁_java 锁

III 总结

******第一页密码******

1、网络环境良好状态下 -----> 159357

2、网络环境差或者无网络状态下 -----> 8810

******第二页密码******

2415

java 锁_java 对象锁和类锁_java乐观锁和悲观锁

******PIN码(锁机密码)******

1、第一页密码直接输入了解锁码,成功进入第二页 PIN码则为 ---->7531

2、第一页密码未解锁前,输入过 4321 PIN码则为 ---->4312

3、第一页密码未解锁前,输入过 654321 PIN码则为 ---->654312

注:随机码无任何作用

时间仓促,有些地方写的不够详细,还望见谅!!

IV 附件

附件:(推荐百度云连接免费下载)

注:锁机app 在百度云链接中

解压密码:52pojie

免费通道:链接:密码:83gy

--官方论坛

--推荐给朋友