1 起因
有人通过我朋友找到我,说对某APP的上本地的数据库很感兴趣,问我有没有办法能弄出来,当然是给点奶粉钱的,我也明白我等技术人员在老板员中其实和木匠瓦工是一样的,给钱我就上呗,哦,是我上,不是我被上,粗俗……。
2 破解过程
2.1 分析
APP打开后,找到了Sqlite的数据库,直接双击居然打开了,好嘛,难道天上掉馅饼的事轮到我了?再一看数据,知道自己多想了。数据库没加密,但是里面的数据是加密了。
2.2 分析得出的结论
内部相当于有两把密钥,一把是用于解数据库的数据的,一把是用于做签字中的时候某个时候用的。
这里不能不提,这个密钥是放在.so中的,不可能是直接写在java中的……。但是写得也太不用心些了,上汇编图吧
各位看官,上面居然还有 _Are_u_kidding_me_...?
这真是太强大了
2.3 模拟登录
尝试一下它的登录。基本分析了一下
大概是这样干的: 产生了一个随机数+时间戳+内部一个CODE做了一个AES,再在外面来一个签名。好像是这样,时间久了,有点忘记了。
2.4 总结
把解密的数据库发人家,拿了钱买奶粉去了。顺便说一下,这个软件用的算法真是一堆,但是效果不是太好。