零度x 发表于 2014-8-25 18:13

考试宝典(安卓手机版)题目限制简单分析

本帖最后由 零度x 于 2014-8-25 18:16 编辑

刚学安卓逆向几天,就拿了个叫考试宝典安卓版下手试试了
首先安装下APK,用adb install xxx.apk,然后来到模拟器可以看到已经安装好了,运行它他会提示你选择要考试的科目,这里我选择的是执业护士考试
这里会发现它在sdcard的ks_data目录下生成了一个xxx.db数据库,这个XX是根据不同科目生成出来的,我们先用SQLite Expert打开这个DB看看
核心内容在这个Test里面,可以发现里面有个ID不同,还有个51是相同的,这个51估计是科目的标示,后面的数据都是加密过的,基本可以确定是题目了,我想到的办法首先是根据安卓的SQLITE操作函数来下断,看看是不是限制了读取的题目数量可以用openDatabasequeryrawQuery这3个函数试试,这里我用的是NetBeans调试,直接ctrl+shift+f来搜索,这里我只截一个函数的图
----------------------------------然后对这些函数逐个下断点,然后调试发现openDatabase和rawQuery都能断下来,关键还是rawQuery函数,经过反复调试和回溯,最后发现调用rawQuery去取题目的时候,是直接根据那个数据库的ID去取的比如15000003,控制数量用的是一个JSON的LENGTH来确定,然后我就反复追这个JSON,最后怎么也没追出来,后来想了一下,发现打开题目的时候断网是不让打开的,就想着抓包看看,百度一下,下了个tcpdump,然后用adb push c:/tcpdump /data/local/tcpdump穿到安卓上去然后修改下权限chmod 777 /data/local/tcpdump然后再打开题目的时候用/data/local/tcpdump -p -vv -s 0 -w /sdcard/capture.pcap进行抓包,抓完后按ctrl+c结束抓包然后用adb pull sdcard/capture.pcap c:/把抓到的数据拷贝到本机的C盘用wireshark打开看看,直接过http,发现会从服务器请求一个JSON,这是返回的数据我这里是直接复制下来的 有些中文没复制出来 消息提示是试用版有题目限制,这里状态是100,暂时不知道含义,后来发现它有个7天体验的注册码,就去领了个看看,然后抓包,这是注册版的抓包可以发现题目的ID全从服务器返回的。。。真是无语了这里暂时想到的和谐办法大概有2个第一个是修改APK里访问JSON的代码,因为已经有体验码得到正确的包了,所以可以固定返回,因为它访问JSON的时候每个章节不同,请求的JSON地址是不同的,所以包应该是固定的,应该可以和他一样恶心,逐个伪造,或者更恶心点,直接定位到请求JSON的代码,等它返回后活生生的直接拷贝给它,这样只适合自己用来学习的一个科目的哥们,因为太多太恶心了,第二个方法是,既然他有7天体验码,我看了下应该没领取限制,也不需要登录什么的,我大概看了下它有个POST的请求是发送手机修改什么的包,这样7天到了后系应该下那个发送手机型号的包估计能继续使用。。。还有个方法估计能提取它全部的题目,因为它这个数据库就根据一个ID来验证,可以定位下它用ID来访问数据的代码,然后加个WHILE让它循环读取解密,然后再给它保存了因为它这个打开题目的时候不是单纯请求服务器看注册没有,他尼玛需要返回题目的ID。。,所以暂时我是想不到很好的解决方法                               好了 因为也没学几天暂时研究到这里玩其他的去了:)

旧殇丶AS 发表于 2014-8-25 18:19

虽然看起来很NB的样子。但是我用不着啊!

云霄一羽 发表于 2015-2-10 16:09

反编译了下,com.yingsoft.ksbao.service.http.JsonHttpResponseHandler.SUCCESS_JSON_MESSAGE = 100

A00 发表于 2015-1-17 11:33

本帖最后由 A00 于 2015-1-17 11:37 编辑

@零度x
adb shell /data/local/tcpdump -i any -p -s 0 -w /sdcard/capture.pcap


any -p -s 0 -w /sdcard/capture.pcap                                           <
soinfo_link_image(linker.cpp:1635): could not load library "libssl.so" needed by
"/data/local/tcpdump"; caused by load_library(linker.cpp:761): not a valid ELF
executable: libssl.soCANNOT LINK EXECUTABLE

这个是什么情况?请楼主指点迷津,已经root,也给了777的权限android x864.3 系统,arm的系统貌似不可以啊

我是用户 发表于 2014-8-25 18:30

现在都喜欢玩android了{:301_997:}

强攻 发表于 2014-8-25 18:38

感谢分享经验,吾爱因你更精彩

kis 发表于 2014-8-25 18:44

感谢分享   学习下

恶意进程 发表于 2014-8-25 18:56

不明觉厉!支持一下,给有需要的人。。。

野生的沫沫 发表于 2014-8-25 19:05

动态调试   技术还说菜

zfhb198 发表于 2014-8-25 19:24

这是什么考试的软件?

tongjin73 发表于 2014-8-25 19:32

{:301_998:}找找看有无需要的

[90]後 发表于 2014-8-25 19:38

这个真的好像可以的哦
页: [1] 2 3
查看完整版本: 考试宝典(安卓手机版)题目限制简单分析