逆向破解今日校园app加密值
只提供发布,不会进行维护,具体请移步原文
先给各位看张图(我在一个android学习群里见别人发的)。如果能有反思,那说明你是一个不会动脑的开发者;如果产生了共鸣,说明你是个会动脑的开发者;如果啥感觉也没有,那你可能就是个打酱油的。
写这篇文章的原因,也是因为我看网上这类教程的帖子很少,网上各式各样今日校园签到脚本已经遍地开花。但是他们没有过程,就直接模拟登录,提交,完成(一看就是抄的别人的东西)。对于加密值的加解密,他们的处理方法都是出自同一个大佬的代码,直接拿来就用的。
很幸运,我找到了原大佬。大佬只留了一句话“加密值是逆向apk后得到的,本质上是一个json对象进行了des加密,然后编码为了Base64字符串”,
我觉得一个牛逼的开发者,不需要别人给太多指点,只需一个思路,那就足够了。我希望我成为一个牛逼的开发者。
这句话的关键词就是逆向,由此引发了我的一系列探索。诞生了这篇文章
授人以鱼不如授人以渔,站在巨人的肩膀上,我将我自己整理的思路再分享给各位。
正文
我尝试各种方式获取加密值,包括登录时,发帖子时,私聊时,但是都没有那个加密值,只有在提交的时候,才有。
我就有点纳闷了。
反编译工具
由此尝试反编译apk,今日校园新版提升了安全机制,并且被加固过了。所以需要找历史版本,就拿8.0.6来说吧,因为我用的这个。
三个必备的工具
具体过程
个人建议,三款工具,像我这样放置,会好一点
apktool
具体使用过程,请参照官方文档
首先找到你使用的app的apk文件,放置到该目录下,运行以下命令,进行decode
apktool.jar d name.apk
此时,会在目录下,生成相应的文件夹,里面的res是存放的资源文件和布局文件,但是你打开,可能会发现里面并没有我们要的classes.dex,而是一堆smali文件。
所以,我们需要再build一下
apktool.jar b name
dex2jar
将我们需要进行反编译的.dex文件,移动到其根目录下,用以下命令重新打成jar包
d2j-dex2jar.bat classes.dex
我个人理解
dex2jar是将.dex转成.jar,jar2dex正好相反
由此,我们会生成与.dex相对应的.jar,我已经将其剪切到桌面,为了方便处理
jd-gui
打开这个图形界面工具,双击或者命令行输入
java -jar jd-gui.jar
依次打开指定的jar包,找你所需要的东西,我感觉这个过程应该是极费时间的。
然后找到了8.0.6版的加密代码以及加密密钥
从图片上,我们知道这是通过ate.V进行加密的,然后继续找。
有了加密密钥,和加密的方式,接下来,我们就可以对其进行解密。
致谢
通过这次亲自尝试反编译,让我更加确信,目前网络上遍地开花的那些代码,基本上都是围绕我致谢中的2这俩大佬展开的。这俩才是真大佬,我已经将他们博客收录到我置顶文章里了
为什么呢?
因为每个版本的apk反编译之后,加密值都是不一样的,像我用的8.0.6版本的加密密钥就是XCE927==,而网上那成片成片的都是ST83=@XV。总不能每个人用的app都是同一个版本的吧,很明显,就是直接抄了别人的解密算法。
总之,通过这次反编译,收获还是有的,有了值得我尊重的人,当然也有鄙视的人(大片大片的抄袭狗,尤其是那些,抄了别人代码,连个来源都不打的人)。