iSmart逆向分析
PC版
首先感谢北京科技大学ever404安全实验室老哥的文章《英语视听说逆向分析》,给我指明了方向
iSmart的pc版其实就是个chromium,语音识别以及判分都是由js完成,具体可以自己研究ISmartCache目录
在ISmartCache\flipbooks\对应的书\,目录结构如下:

其中上面一堆md5?名字的对应的是书的章节,而resources目录下就是判分的js,我们只关注resource\js\up366client.js这个文件,(当然你要想实现自动做题也可以,那样的话要改的地方就比较多),直接打开你会发现是一堆乱码
emmmmm,ollydbg启动
嗯。。。。rc6加密,用的库是一个pascal的库 Delphi Encryption CompendiumVersion 5.2,因为是rc6,直接用常数定位密钥扩展函数,就能拿到key
key生成的函数调用栈:

key的话好像是固定的,没仔细研究
key指针位置:

key都拿到了,直接调上面的库写个decrypt程序,解出up366client的明文,然后随便改。。。。代码是混淆过的,但是我有混淆前的版本:),对照一下就行啦~ 其中
function d(t,e,n,i,a,r,s,c,u){e=e.replace(/#[^#]*#/g,"'")
就是口语判分的函数
改完之后encrypt一下,覆盖原文件,然后就可以愉快的刷iSmart~
Android版
安卓版其实跟pc大同小异,都是js,而且安卓的js没有加密
但是蛋疼的是,每次载入js的时候,app都会校验文件,所以直接修改js是不行的
我分别试了两种不同的方法
1.在java层修改js返回的分数
2.直接patch掉校验
两种弄起来都不难,但是都有一个共同的问题,重打包app,iSmart有好几处地方都做了app签名校验,我也没空一个个给它改,直接xposed大法禁用掉系统安装app的签名校验,我们自己先给app签名,然后再把apk包里的换成原来的,装上ok
现在安卓版的口语题目会上传录音到阿里云oss,pc版暂时没有,这不代表破解没用,填空选择题自动完成还是没问题的,而且可以用来调高口语的分数,70分调个80不过分吧:)
总结
上面说的东西仅供学习。。。算是一道ctf练手题?
嗯......说到ctf,那就顺便宣传一蛤

世界很大,互联网让世界变小,真的黑客们应该去思考并创造,无论当下是在破坏还是在创造,记住,未来,那主线是创造就对了。 ——by 余弦
非灰也 / De1ta & Sloth