摘要: 通常我们使用的C函数的参数个数都是固定的,但也有不固定的。比如printf()与scanf()。如何自己动手实现一个可变参数函数,这个还是有点技巧的。我们最常用的就是定义一个宏,使用printf或者printk,如下#define wwlogk(fmt, args...) printk(fmt, #... 阅读全文
posted @ 2015-03-15 22:01 twdreamer 阅读(939) 评论(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 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 注入安卓进程,并hook java世界的方法 说明:安卓系统的可执行对象有两个世界,一个是Linux Native世界,一个是Java世界.两个世界能够通过jvm产生交互,具体来说就是通过jni技术进行互相干涉.但是在正常情况下,只能在Java世界通过jni调用native方法,二native不能在... 阅读全文
posted @ 2015-03-15 15:20 twdreamer 阅读(1135) 评论(1) 推荐(0) 编辑
摘要: 写这篇技术文的原因,主要有两个:-其一是发现网上大部分描述PLT/GOT符号重定向过程的文章都是针对x86的,比如[《RedirectingfunctionsinsharedELFlibraries》](http://www.codeproject.com/Articles/70302/Redire... 阅读全文
posted @ 2015-03-15 14:45 twdreamer 阅读(1279) 评论(0) 推荐(0) 编辑