文章早就整理的差不多了,但是太懒一直没发布,而且感觉也没啥技术含量,思路也没啥出彩的地方,放到这里实在不知道有啥亮点,唯一的理由可能就是上一篇广为人知的Bambook相关的文章,就是曾半仙的那篇文章https://bbs.pediy.com/thread-216871.htm,也是发在看雪的,所以我斗胆也放到了这里。闻道有先后,术业有专攻,希望诸位行家大佬轻喷,谢谢。
大家好,我是Garbage Man。前段时间某鱼闲逛的时候,看到倒闭多年的盛大电纸书Bambook,嗬,价格百十块钱,这不刚好适合我等垃圾佬么,遂出手。我购入这台型号是SD988。还有许多其他型号:SD968、SD928貌似还有个Bambook Bright,带背光的,暂时没下手,主要是太贵。
SD988到手之后,略微把玩一下,功能简陋,由于官网已经倒闭,所以现在读个书只能用“云梯”传到Bambook上,不能像U盘一样直接拷进去,而且电脑轻易不识别设备,连接设备也比较费劲,总之初步印象感觉可玩性极低。
拆机看了看,也没啥特别的东西。只是这种rom放在内存卡上的设备我是第一次见,难道是为了节省成本?
网上查了查相关资料,貌似少的可怜,有点用的是曾半仙的教程,但是跟我型号不一样,而且起点较高,不适合我等垃圾佬。不过得到振奋人心的消息是,确定这货是基于Android的,奥利给,无所不能的安卓!不过比较丢脸的是传电子书进去,还是费了老夫一番劲,不过好歹是整进去了。之后就放了床头准备睡觉的时候看看感觉如何。用了几天,感觉这货功能好简陋,不懂古时候的人用这货的时候是个啥心理反应,或许没倒闭能联网的时候会好一点?反正我准备抽空深度把玩一下。可后来被媳妇儿收到床头柜了,竟然忘了这个事……
时光流转,貌似得过了半年了,半个多月前又突然见到这货,哟嗬咋忘了这茬,玩心大起,开始细细把玩。
之前刚到手咋把玩的已经记不清了,这次从头来吧。
这货是基于安卓,但是我电脑的adb竟然连不上?先确定驱动没问题,于是翻了翻云梯安装后的目录文件,找到驱动,并且安装成功,没有报错。然后使用云梯自带的连接检查,反复尝试,终于可以连接上设备,但是不是特别顺利,有时候得重试好几次。云梯的各个版本都试验了, 0.x(忘了0.及了)可以连接但是界面会一跳一跳的,有bug,然后就基于1.0做了个绿色版,安装好驱动之后基本上就可以顺利连接Bambook了。Win10也可以,我就是基于Win10搞的。如果你用的时候连不上,可以尝试用任务管理器结束所有adb.exe,然后手动进入我提供的这个云梯的BambookCloudLibrary\CloudLibrary\tools目录,然后cmd执行adb connect 192.168.250.2 就可以连接它,你的云梯就会发现你的设备。然后就可以顺利传输图书了。我提供的云梯里的adb是很新的,比自带的版本要高很多。无线连接貌似更简单一点,但是Bambook动不动自己关闭WiFi很烦人。
至此,Bambook可以顺利连接电脑、传输图书。但是就这么点东西,显然装逼都不够,还怎么能称得上把玩呢?
设想了一下,老夫想要的功能,如果这货可以FTP到我的NAS上,直接看上面存的几千本txt小说该多好。当然,这几千本有好的有坏的,坏的我可以顺手删除,好的可以直接收藏保存到专门的目录,这多方便?能实现这么个需求,才能叫深度把玩不是?
既然目标确定了,那就分析一下,怎么在Bambook上实现:
1.先确定能否安装,adb install xxxx 用命令安装,不出意外,提示
无法安装。估计是内部有啥限制,可能需要加啥参数之类的才能安装?我没详细研究,因为我搞不定这么深层次的东西。Adb shell pm install xxx 也不行,甭试了。
然后刚好看到有某大神一篇帖子,是怎么Root它的:http://tieba.baidu.com/p/4028624869 里面几个命令吸引了老夫:
于是安装应用可以这么搞(我不确定以下命令是否需要root,因为上次把玩我可能已经root了。如果直接执行以下命令不成功,那就按照上面的教程root操作一波吧~):
adb push app-release.apk /sdcard/BambookReader.apk
adb shell
mount -o remount rw /system
cat /sdcard/BambookReader.apk > /system/app/BambookReader.apk
当然应用名你可以换成你自己的。
2.应用安装上了,然后就是得运行啊,这是第二个难题,adb命令adb shell am start -n 包名/类名 可以启动应用,但是不能每次启动都连电脑吧?那tm多不方便啊。
于是乎开始了最难的一个部分。
3.应用启动
最先想到的是反编译它自己的launcher,看看有啥线索。
Adb pull出来这个SndaBrowser.apk反编译,发现它实际上就是个壳子,提供了个webView来显示内置的Html静态页面,emmm,思路开始涌现了直接上手修改apk内的Html页面,然后打包回编译一气呵成,push到原来的位置,重启设备,擦,然后就卡启动屏了……此时还不知道到底是因为反编译有错误还是签名验证没通过还是其他原因,老夫是有点慌乱的……因为老夫没有做备份。不过好在上次把玩的时候拆过机,知道rom都是在内存卡上,于是又拆了,暴力破坏卡槽边框,把内存卡取下来了,放到读卡器,然后用电脑读取,由于是Linux分区,所以windows不能读取(千万不能格式化哦),试了几个软件,有个可以读取,但是不能修改的,没啥鸟用。最后用的Disk genius就是磁盘精灵,国产的那个,国外叫disk guru好像,我用的guru,可以读取写入,emmmm,那就好办了。先做个备份吧,省的再趴了。
先恢复原始apk,可正常启动,然后把原始apk换个签名,emmm,又开不了机了。所以貌似直接修改apk这条路就走不通了。貌似这货不同于老夫以前把玩的其他设备,对launcher应该有签名验证。(后来发现有人貌似也是修改Launcher,可以用?没再深入研究。)
这时候就有些尴尬了,修改不生效,还会变砖。然后就翻翻系统里的文件吧。在SD卡上看到了一个解压过的servpack.zip里的内容就是这个:/sdcard/sndaebook/pages/,但是有一点我还不确定,这些网页到底是每次启动Bambook的时候才会释放还是刷机或者升级或者恢复系统之后释放了不再变动的,或者还是完全没用的东西?
还没动手修改,搜索了一下,发现了这篇文章:https://my.oschina.net/d63hbz/blog/93374
Emmmm,刚好验证了我的想法,简单的说就是,升级或者恢复系统之后释放出来的,且再次重启也不会再次释放,并且launcher里显示的页面就是这些。这就足够啦。
最简单的方式瞬间上头了,呃,瞬间浮现。Html页通过URL schema可直接打开App啊,多简单啊,实现个协议不就好了。现实往往是残酷的,等老夫忙活完了,发现不生效啊,折腾了半天,才知道schema最低支持3.x的android,反正不支持android2.2………………
然后想起来曾半仙的方式,利用漏洞试试。一搜发现俩,哇咔咔,天无绝人之路。
第一个是MasterKey以及相关的变种漏洞等等:https://blog.csdn.net/androidsecurity/article/details/13293789
https://blog.csdn.net/asmcvc/article/details/13295359 (这个文章讲的比较清晰)
但是网上无一例外全是介绍原理的,没有提供工具的,麻烦,为了利用难道再去写个工具?而且我也写不了啊。一点一点按照教程改16进制?我那么懒,于是就放弃了这个漏洞。
第二个是WebView远程执行相关漏洞CVE-2012-6636,这个利用成本很低,只需要执行一段js即可。貌似又见到了曙光,一顿忙活,改完了js,加上了漏洞利用代码,但是还不生效……因为不知道是Bambook的系统还是andriod2.2都没有辅助服务等能触发漏洞的代码。也就是说这个强大的漏洞,在Bambook上无效!欲哭无泪。
貌似把玩就这么进入了僵局。继续研究下launcher吧,没啥代码,翻看的过程中大概了解了一下它给js提供的接口,以及HTML调用的流程,突然想到,会不会有启动activity的接口?诶?一搜果然有startActivity(包名,类名) 即可打开指定应用的某个activity。忙活一顿,人家已经提供了这么个接口,那就好办了,接下来,修改MYBOOK.HTML增加我的应用入口。然后顺便去掉烦人的登录失败的提示,免得每次都得按确定按键。其实这里你可以做若干的修改,甚至可以改成连接你自己的网站什么的,只要你有闲工夫和耐心就可以。反正闲着也是闲着,不折腾干啥呢?
4. 自动启动
上面我加的入口,是在菜单,然后按指定按键(替换了它原本一个菜单功能,尽量保持它原汁原味)才能打开我自己写的应用。自动启动也好实现,只需要HTML加载完毕后执行js调用原生接口即可。但是我不需要这个,所以没弄。如果你需要,可以自己尝试着改改,很简单。做好备份就行。
列举一下我想要的功能和别人可能会需要的功能:
1. 显示本机全部应用,并可以打开指定应用(这应该是除了我别人都想要的吧?因为我看别人都会安装anyview之类的第三方阅读器,都是为了方便同步、传书等等。关于这点,其实可以改成Html加载结束直接启动你想用的那个App,包名类名自己反编译看下,直接改HTML就行,这就差不多相当于替换自带Launcher了);
2. 对于我最需要的还是FTP连接我的NAS看书,可以删除和收藏。
我这么懒,肯定先去搜索一下有没有类似的软件,显示本机应用可以不要,因为我不需要这个,我只要FTP相关功能就行。不过这么个性化的功能,想想应该也没有,果然没找到……
还是自己动手吧。
嗯,一开始设计的就这两点,但是做着做着就开始细化了。弄这个东西忙活了半个多月,感觉好费时间,不过也乐在其中嘛。时间之所以半个多月,是因为里面碰到了各种各样的问题,以前从来没有思考过的问题,比如一个txt,怎么分页?怎么加载这个阅读页面最合理的字数?怎么记录阅读位置?怎么上一页?怎么下一页?这些网上都没有完整的答案。解决这个真的是很有趣哦~!
啰啰嗦嗦说了一堆没用的话,看看到底怎么玩。
1. 最好重置一下你的Bambook,然后用相关cat命令还是啥的做个备份(我实在不会Linux的命令,你自己研究吧,反正我是拆机直接把内存卡的分区做了几个镜像,鄙人镜像已经不是原版的了,所以不提供啦。按照下面的步骤操作,应该不会变砖啥的,所以一般也不用镜像恢复了。除非你要进行更深度的骚操作,既然那么有深度,备份对你来说应该也不是问题了吧。)
2. Push修改后的网页(去掉登录失败的提示,添加我的应用入口)
具体操作:进入“1.反编译修改\修改完成的页面”,然后本目录中执行CMD命令:
adb push START.HTML /sdcard/sndaebook/pages/START.HTML
adb push MYBOOK.HTML /sdcard/sndaebook/pages/MYBOOK.HTML
3. Push我的那个APK,可以继续push你想要的apk(必须能正常在Bambook运行的才行哦)
具体操作:进入“2.源代码及APK”,然后本目录中执行CMD命令:
adb push BambookReader.apk /sdcard/BambookReader.apk
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课