安卓逆向--二杀

MiFi 设备送修收到到发现系统固件被更改了。变了 136 版本,之前是 83 。这样一来的话就不得不接受每天被限 17G 的蛋疼事实了。

但是,作为一个经常混迹于吾爱论坛的我来说,这是一件不能接受的,对,完全全无法接受。

从客服那里拿到系统刷机包后便。开始了一番折腾,由于懂的不多,导致我走了不少的弯路。折腾了几天都没成功,那几天心情实在是有点低落。FUCK!

第一步 找到修改点

脑子已经不好使了,只记得上次修改了某个值,但是不记得具体的数字是多少了。只好去搜索安卓手机统计流量用的方法。得到的结果是 TrafficStats 这个类的下的

getMobileRxBytes() 方法,按图索骥找到要修改的数 1048576 然后将其修改成比它的数。一切就是像上次那样进行。重新编译并打包后,满怀期待地把它刷入设备中。

开机。。。BOOM!!! 机器一直在重启。

第二步 出问题不要慌,看日志

1
adb pull /sdcard .

使用上面的命令把日志文件拉下来之后打开查看,发现

1
java.lang.UnsatisfiedLinkError dlopen failed: library XXX/libxxx.so not found

于是又开始了一翻搜索,其中过程不表,反正在这一阶段失败了很多次。

在这个过程中,遭到了部门领导全部门最低绩效的评价。这个意思是劝退了吧。郑州工资本来就低的情况下,再降点可不就是劝退的意思 ? (关于这个我想多说两句,其实从进公司起就觉得我这个岗位一个人完全可以处理的了。只是领导自己觉得一个人处理不来吧。所以自己私下里一直在学习。)

Comment: 记下来多是让自己不能释怀,还是自己能力不够。

网上搜到的大多是有源码的情况下报这个错误怎么处理的。但是我这个完全是逆向出的东西,所以那个方法都不适用。最后还是找到了一个博客,博客里的那个才哥说他自己也是搜了很多地方都没有找到讨论这个问题的。他的方法就是检查以下几个文件、夹中是否有对应的 xxx.so 。

1
2
3
4
/system/etc/public.libraries.txt
/system/vendor/public.libraries.txt
/system/lib
/system/vendor/lib

我查了一下果然没有。于是就分别添加了进去。

第三 成功啦

把导致错误的地方改正之后就开始了刷入修改后的系统包。没有任何异常。

总结

面对问题一定不能慌,可是暂时放弃。因为如果一直没有思路的话,不管你怎么做都只是在耗着,对自己没有任何帮助。该放弃时就放弃。另外,就是注意与人的交流,虽然期间也去了论坛,也是给了一些思路,但是事后证明,那些是错误的。最后,做项目一定要条理分明,不然过程真的很痛苦。另外,安卓逆向还是很有意思的嘛,除了过程比较蛋疼之外。

【参考链接】

  1. Android 8.0 dlopen failed 问题
  2. Framework基础:Android N 公共so库怎么定义呢?
  3. Android中public的So库的引用问题
  4. 浅谈Android系统编译apk后so文件在dlopen时出现linker权限问题
假图一张

更新于:2019/10/03


这次逆向的是最新设备的软件,版本号22

关键步骤:在安装包目录下添加lib/arm/libXXX.so。应该是他们在系统打包的时候将相关的东西整合到odex文件中了。


另:接安卓逆向项目


7 min. read