-
-
[讨论](安卓)有没有人有兴趣做一些基础性的项目,欢迎讨论!
-
2014-1-5 12:10
8461
-
[讨论](安卓)有没有人有兴趣做一些基础性的项目,欢迎讨论!
论坛上牛人很多,但在我看来,一个东西如果要成功,不光是你牛就能做到的,还需要一种眼光,一种时机。
我举个很简单的例子。看雪上有个大牛开发了一个和OD差不多(甚至还要强?)的调试器MDebug,他的水平是毋庸置疑的,但是!既然OD已经足够好用了,重复造轮子的意义何在?当然,对于开发者自己的提高是极有好处的,能不能福泽众人就要打个问号。
再谈下安卓。我认为安卓是一个很奇怪的系统。它的api是建立在java上面的,下层支撑的是so库的实现。这意味着,从逆向的角度来看,安卓和windows(以及linux)有着极大的区别:后者的hook可以直接从native入手,因为api就是native的;而前者的系统在native层面无法做出什么保证(也许除了libc之外)。
也许你会说,我已经hook一个so里面的函数成功了啊,效果很好。我想请你再认真想一下,你真的成功了吗?由于工作的关系我可以接触到大量的安卓手机,我曾经hook过libandroid_servers.so,我测试了10台不同的手机都没问题,但是到第11台时,系统直接挂掉。无数人,无数厂商都想要编译自己的rom,各种不同的native实现,一个函数甚至只要多加一个参数,你就完蛋。
这就是安卓的碎片化,一个比'dll hell'还要可怕的地狱。
所以如果你想要你的修改比较通用,那么最好从java层入手。而java层的关键,是smali语言。那么我的理解,分析smail的基础库,就是一项非常有实际意义的工作。
目前有smali&baksmali开源项目,但是这个库是基于java的。我觉得它的粒度不够细,而且这种方式我不太喜欢,有点笨重,通用性不好,如果我希望在手机上直接调用该如何弄?想用C#来调用又该如何?分析文件结构是c的强项,而且c库的通用性才是真正最好的。如果能有一个基于c的smail库(csmali),那么应该是大有前途的。
试想,在你的应用里带上一个100k的csmali.so,就可以在手机上直接反汇编分析和修改xx.dex,yy.odex,难道不是一件喜大普奔的事?
以上是我的一点想法,欢迎大家各抒己见!
阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开
发者可享99元/年,续费同价!