Android 修改imei、gps等信息分析

之前有朋友希望能修改Android的gps信息,也就是说让其他应用获取gps信息时,取到修改后的信息。一开始听上去感觉挺不靠谱的,后来网上查了下资料,发现还是有人搞定的,主要都是通过古河发布的注入代码,将自己的内容注入到对应应用的内存。在这里,注入的过程就不叙述了,主要说下为什么能修改内容,用获取gps信息来举例。

首先Android中获取gps信息的话主要通过这种方式:

关键代码出现了,主要通过getSystemService()方法来获取句柄,中间省略一系列复杂的查找步骤,,,我们最终找到一个地方,文件android.os.ServiceManager.java 中的getService()方法:

sCache又是什么呢:,,,看这里,直接根据名称从HashMap中取,如果有就直接返回了。

关键代码看完了,那么具体怎么做呢,很简单,就是自己写一个类,实现IBinder接口,然后通过反射方式将对应的名称和你自己的IBinder添加到sCache这个HashMap中,那么程序通过getSystemService()方法取到的就是自己实现的IBinder类。接着就是实现自己的IBinder类了,很幸运的,在github上搜到了这个项目:https://github.com/aeoliazhang/android_inject_hook_demo,,这个是修改imei信息的,代码相当全面,测试用的GpsIBinder也是根据这里面的ImeiBinder来修改的。

代码就这么多,不过当时没把具体的编译和运行记录下来,所以就自己搞定吧。坑还是很多的,新手还是多花点时间吧,有空会将编译和运行的过程贴出来的。

 

posted @ 2015-08-28 17:55  云海天际  阅读(2267)  评论(1编辑  收藏  举报