发表于 2021-1-21 23:27

申请会员ID:ljlVink【申请通过】

申请id:ljlVink申请邮箱:qpalzmlong@foxmail.com 学校在第一学期给同学们发了一个平板,里面有各种限制,于是在假期的第一天就给它刷了,刷了之后发现学校上课的app无法登录,用fiddler抓了一下包,发现发送的都是明文userName=***&auth=***&macAddress=****&versionCode=29&sn=************&salt=1611237881005&key=****key是用md5盐值加密的因为这个程序害怕同学随便登录别人账号抄作业,所以绑定了MAC地址,经过进一步分析,VersionCode是调用的Build.Version_sdk_int来实现的看了一下对照表发现安卓9对应28,就是我刷机前的系统,于是我用fiddler更改包内容,VersionCode=28,就成功登录了将返回头的信息保存下来但是,要把这个带到学校也就不行了,于是我尝试去反编译它,简单试了一下发现封包后闪退了,查看源码后发现有签名验证于是找到对应的smali代码,将if语句全部删掉,就好了签名验证破解出来后,就要对登录进行破解了,我最初的想法是用树莓派建立一个AP热点,然后去用mitmproxy伪造登录信息,那么就要把网络验证给去掉,程序在我伪造的热点下会显示服务器无法处理请求,在VsCode中带入后定位在RxExceptionUtil.java里因为正常的情况是返回httpExpection.message()的,所以定位到smali中就直接函数里return httpExpection.message()那么网络问题解决了之后就要找到登录界面的发送包信息进行处理经过查找,找到了发送包指令在LoginActivity.java里在第476行里,会判断”code”,我们现在在代码里看不见是什么,但是在smali中清晰地告诉我们当服务器返回”code”的这个值为10000的话就成功登录程序是带自动登录的,所以会在外存里存学生/老师的登录信息,如果发送这个登录信息返回成功的话,就会用之前存的信息去登录。那改的思路就更明显了,如果不判断服务器的返回值,用先前的信息登录就成功了,那直接把476行的if语句删掉就OK了。在smali中找到这个if语句后删掉后重新编译用fiddler或mitmproxy截获,更换曾经登录成功的返回体,这样弄一次就行,以后如果不特意更改的话就会永远存我的登录信息。这样就破解成功了。附件:https://pan.baidu.com/s/1ye9V6VpbOHnucO0mEebAxA密码 6666

Hmily 发表于 2021-1-25 13:20

I D:ljlVink
邮箱:qpalzmlong@foxmail.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。

ljlVink 发表于 2021-1-25 20:50

报道,谢谢hmily给我一个上升的机会
页: [1]
查看完整版本: 申请会员ID:ljlVink【申请通过】