这次我们的目标是闽江软高成绩查询的安卓客户端,先看下下载的截图
好,在开始前我们先说下这个安卓客户端有啥功能。这个客户端可以查课程表,可以查成绩,但是在查成绩的时候是这样的,先输入学号,后台根据学号去查这个学号下面的课程,再选择课程,然后就可以查了。卧槽!!!啊!!可以随便查任何一个人的成绩啊,不需要身份证号码的啊。于是博主邪恶的一笑,眼前飘过几个大字:全校成绩随便查!
呵 呵,博主最喜欢看学霸秀成绩,妈妈再也不用担心我看不到学霸秀成绩了。当然,这个软件还有个神奇的功能,那就是充满了各种广告啊卧槽!本来就很烂了,这是 要让他烂成屎的节奏么?咱们先不评论软件的好坏,咱(xue)们(xiao)的原则是能用就行,管什么UI,管什么安全啊。
OK,扯了半天咱们来看下图吧。
UI布局很简(zha)洁(zha)啊有木有,广告也很实(e)用(xin)啊有木有。这简直是一个完(ruo)美(bao)的安卓应用啊有木有啊卧槽。好的,博主现在进行反编译,需要用到软件dex2jar,这个软件是将apk中的classes.dex转化成jar文件,好的,我们来测试下。
首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.15文件夹。
在命令行下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex,生成 classes_dex2jar.jar
然后下载jdjui这个软件,将jar反编译成java源码。ok,咱们看个截图。控制台生成jar文件成功
反编译jar文件的界面呵呵,看到了youmi,著名的安卓广告植入商。OK, 咱们来看下源码里面是怎么请求的,在源代码里面看到了soap,说明客户端是用的webservice提供的统一接口。
OK,这样 就简单了,咱们找到webservice就好了。继续看源码,博主很容易就找到了webservice的地址,ok,找到了地址咱 们去看看吧嗯,提供了很多的接口,但是这我们需要只是查询成绩,所以只看成绩查询的。在这博主还发现一个神奇的事情,就是这个 webservice根本不需要验证身份,任何请求都可以的,what the fuck ! 上面说了查询成绩先输学号查课程,然后查成绩,先看查课程的接口只需要传入stdID学号就可以了,成绩查询需要同时传入学号和课 程ok,既然已经知道了接口地址和参数,咱们就用php的soap来模拟一下吧。php的soap比较简单,我这里使用的是 nusoap-0.9.5这个库,贴上代码<?php require_once('./nusoap-0.9.5/lib/nusoap.php'); $client = new nusoap_client('http://112.111.44.52:819/service.asmx?WSDL', true); $err = $client->getError(); if ($err) { echo 'error1'; } $param_sid = array('stuID' => $_POST['sid']); $client->soap_defencoding = 'UTF-8'; $client->decode_utf8 = false; $coursestr = $client->call('getCourse',$param_sid); $courseArr = split(',', $coursestr['getCourseResult']); $scoreArr; if ($client->fault) { echo 'error2'; } else { $err = $client->getError(); if ($err) { echo 'error3'; } else { $courseLength = count($courseArr); for($i=0;$i<$courseLength;$i++){ $tmpStr = array('stuID' => $_POST['sid'],'Course' => $courseArr[$i]); $thisRes = $client->call('getScore',$tmpStr); $scoreArr[$i] = '{"course":"'. urlencode($courseArr[$i]).'","score":"'.$thisRes['getScoreResult'].'"}'; } echo(urldecode(json_encode($scoreArr))); } } ?>
这段代码就是模拟一个soap的请求,发送学号查询结果。咱们来看下查询结果,我这做了个简单的查询页面。
只需要输入学号就 可以查出这个学号下面对应所有课程的成绩,只是速度有点慢,因为我需要查询遍历所有的课程去请求数据,也就是说每次查询都要发起20个左右的请求,所以会 有些慢。还有,不知道学校的服务器开的最大请求数多少,我连续查个几次服务器就挂了,太渣了。本来是想做个全校成绩的遍历统计分析的,照这个样子服务器分 分钟挂掉的意思,做了估计也用不了。呵呵。当然,如果仔细观察成绩会发现,有些课程并没有查出成绩,换成web的查询就可以查询出来,个人推测可能是使用的不同的数据库,数据没有进行很好的同步导致的。不过作为参考还是不错的。
好了,对闽江软高成绩查询安卓客户端的分析就到这,只需要知道学号就可以分分钟查成绩,当然,查全校的成绩也不是难事。如果将这个页面修改成手机页面,那将会更加便捷。
!!! 转载请先联系non3gov@gmail.com授权并在显著位置注明作者和原文链接 !!! 小黑屋
提示:技术文章有一定的时效性,请先确认是否适用你当前的系统环境。