摘要: Android下通过root实现对system_server中binder的ioctl调用拦截分类:Android2013-06-19 18:09779人阅读评论(0)收藏举报作 者:Passion时 间:2012-10-18,13:53:53链 接:http://bbs.pediy.com/sho... 阅读全文
posted @ 2015-04-12 21:06 twdreamer 阅读(956) 评论(0) 推荐(0) 编辑
摘要: 注册native函数有两种方法:静态注册和动态注册。 1、静态注册方法 根据函数名找到对应的JNI函数:Java层调用函数时,会从对应的JNI中寻找该函数,如果没有就会报错,如果存在则会建立一个关联联系,以后在调用时会直接使用这个函数,这部分的操作由虚拟机完成。 静态方法就是根据函数名来遍历java 阅读全文
posted @ 2015-04-12 16:59 twdreamer 阅读(668) 评论(0) 推荐(0) 编辑
摘要: 当按下Android设备电源键时究竟发生了什么?Android的启动过程是怎么样的?什么是Linux内核?桌面系统linux内核与Android系统linux内核有什么区别?什么是引导装载程序?什么是Zygote?什么是X86以及ARM linux?什么是init.rc?什么是系统服务?当我们想到A... 阅读全文
posted @ 2015-03-23 19:50 twdreamer 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 在Android系统中,所有的应用程序进程以及系统服务进程SystemServer都是由Zygote进程孕育(fork)出来的,这也许就是为什么要把它称为Zygote(受精卵)的原因吧。由于Zygote进程在Android系统中有着如此重要的地位,本文将详细分析它的启动过程。 在前面一篇文章An... 阅读全文
posted @ 2015-03-23 19:34 twdreamer 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 一般来说,很多APK的校验代码,都会在程序运行的时候自动加载一些动态so库,然后执行这些库中的校验代码。所以为了能够通过程序的校验,我们必须在执行这些函数之前下断点——理想的方法就是在JNI_OnLoad入口函数下断点。 在2.3.3模拟器中详细步骤如下: ①在控制台输入adb shell 进入手机... 阅读全文
posted @ 2015-03-17 13:55 twdreamer 阅读(440) 评论(0) 推荐(0) 编辑
摘要: 通常我们使用的C函数的参数个数都是固定的,但也有不固定的。比如printf()与scanf()。如何自己动手实现一个可变参数函数,这个还是有点技巧的。我们最常用的就是定义一个宏,使用printf或者printk,如下#define wwlogk(fmt, args...) printk(fmt, #... 阅读全文
posted @ 2015-03-15 22:01 twdreamer 阅读(862) 评论(0) 推荐(0) 编辑
摘要: 一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实... 阅读全文
posted @ 2015-03-15 18:41 twdreamer 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 在Android系统中,每一个应用程序都是由一些Activity和Service组成的,这些Activity和Service有可能运行在同一个进程中,也有可能运行在不同的进程中。那么,不在同一个进程的Activity或者Service是如何通信的呢?这就是本文中要介绍的Binder进程间通信机制了。... 阅读全文
posted @ 2015-03-15 18:40 twdreamer 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 在Android上,其实自身有一套完善的内存管理机制。但由于我们深受Windows和塞班的毒害,每当看到手机剩余内存只有30m时,就觉得非常不爽,总是希望通过一些工具清理一下内存,而当Toast显示已经为你清理500m内存时,就会产生无比的快感。比如管家的小火箭发射,就是利用了这种用户心理。所以,那... 阅读全文
posted @ 2015-03-15 17:29 twdreamer 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 注入安卓进程,并hook java世界的方法 说明:安卓系统的可执行对象有两个世界,一个是Linux Native世界,一个是Java世界.两个世界能够通过jvm产生交互,具体来说就是通过jni技术进行互相干涉.但是在正常情况下,只能在Java世界通过jni调用native方法,二native不能在... 阅读全文
posted @ 2015-03-15 15:20 twdreamer 阅读(1134) 评论(1) 推荐(0) 编辑