type
status
date
slug
summary
tags
category
icon
password
原创·转载请注明 & 文章思路仅为个人观点仅供学习使用,禁止用于非法场景
引文:其实说来也好笑,事情的初衷只是因为在手机上找不到iOS上的那款图书软件(手机是安卓端的),导致我看小说的进度无法自动同步。手机上用的是粮厂专属的多看阅读(之所以说粮厂专属是因为开发者真的为mi付出了很多,哭死哈哈哈,原因我后文会详细解释)。其他各种阅读软件从开源到定制都试过,开源太臃肿(大都会对一堆设定好的小说源进行爬取,我一般都不太需要这个功能),单纯的阅读器太丑(该说不说,真的丑,从界面到字体背景什么的都贼拉原始),多看阅读算是比较符合我审美的,所以决定直接进行逆向修改。
修改目标
改布局
去广告
修改vip判定
精简
实战
难题一:去签
工具去签
用工具对多看的apk进行了检查,没有加固,省去了很多事。然后直接使用apktool进行反编译和回编译,并用我的签名对apk重新签名。直接上机安装后发生了闪退,确认大概率有签名校验。
最开始直接使用的某大佬的工具直接进行去签(思路大致是将原apk保存一份在修改的apk中,在修改的apk启动时使用原apk进行签名校验,从而实现过签)思路很好但是在后面修改后apk大小会变大很多。
手搓去签
一开始我也是直接使用工具进行去签,但是后面有了另一种思路——直接去源码中找关于签名校验的代码进行修改。
一开始,我是直接去尝试搜了一些关于签名校验的关键词,诸如signcheck等。其中signature不能直接进行搜索否则你会大概会搜到几万条,因为signature是一个表示重要程度的关键词。我搜到了五条signcheck的,两条大概是关于微信的api调用的,一条是小米的api的,还有两条未知的。
一一尝试后并没有什么效果,弄得我一度准备放弃这个思路,但是后来转变了一下思路成功了。
第二次尝试是直接去搜关于退出进程的代码,退出进程的方式有很多,可以使用java定义的也可以调用system定义的。我直接试着去全局搜索了processkill,结果有8条并不多。由于懒得去一一分析,直接一个一个删除进行尝试,最后定位在一个run方法里。这个方法就只有一个杀死进程的功能,可能是用来进行处理未知报错自动退出进程的,删除倒也无伤大雅。
终于上机后不再闪退,能正常的进行修改和使用了。但是后来又发现了一个问题,登录不了了。这个问题困扰了我好几天,起初我觉得也勉强能接受,虽然同步不了但是仍然可以修改做出一个简化版的图书软件。但是后来越想越难受,同步是我对心中的完美阅读软件的唯二要求之一(符合我审美、能同步),不能同步的阅读软件我要来何用?但是始终找不到破局之道,苦恼了好几天。
难题二:登录
微信登录点击后会报包名与上报的不同(为了实现软件共存和专属定制的1效果,我改了包名),于是我换回原包名重新尝试,报错变成了签名不对等等,直接锁死了有签名校验,而且也不是我之前修改的那个signcheck,可能是微信的adk里面有关于登录的方法里面有定义的函数,于是我直接泪目,封装好的东西我改不了的呜呜呜。在下面第三方登录上面有个小米一键登录,原包中我只要点击就可以直接跳出小米自己的登录界面然后丝滑的一键登录,但是现在的这个按钮我点击没有任何反应,可能也是调用的小米自己的sdk或者小米系统里面关于一键登录的函数(封装的sdk修改不了,集成在系统中的函数卑臣也做不到啊)
曙光来自一次重新安装原版软件的一瞥,当时无意间看见那个登录下面除了微信登录还有一个小米登录。然后打开我修改后的软件中却找不到这个登录的view,只有上面的一个小米一键登录。一键登录可能是因为调用的小米系统的函数,但是下方第三方登录可是对所有机型通用的,我不相信小米能像微信一样豪气也给弄个签名校验。进过代码的锁定找到了一堆好东西,我发现软件中对下方第三方登录的函数写的很乱,大致就是围绕着小米登录的显示和微信登录的显示扯了百多行(我看的是smali代码,用Java写可能也有个几十行)。看的头晕就直接不看了,大致锁定后直接将逻辑改成无论怎样都显示小米登录。
上机后果真如我所料,小米登录是可以用的,很单纯的调用的是网页登录,账号密码正确就可以正常进行登录了。
难题三:Mainactivity默认启动页面的修改
- 作者:Holmes
- 链接:www.holmes.us.kg/article/3c73f788-ed2b-49ac-b38b-530fc1859454
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。