05 2014 档案

摘要:本文将介绍如何使用eclipse和ndk-build来编写一个基于Android4.4版本的包含有.so动态库的安卓程序。 前提是已经安装和配置好了诸如SDK,NDK等编译环境。下面开始编程!1 程序逻辑 我们要编写的程序包含两部分:java部分——负责界面和调用JNI native函数;JNI ... 阅读全文
posted @ 2014-05-31 14:50 WanChouchou 阅读(798) 评论(0) 推荐(0)
摘要:一般来说,很多APK的校验代码,都会在程序运行的时候自动加载一些动态so库,然后执行这些库中的校验代码。所以为了能够通过程序的校验,我们必须在执行这些函数之前下断点——理想的方法就是在JNI_OnLoad入口函数下断点。 在2.3.3模拟器中详细步骤如下: ①在控制台输入adb shell 进入手... 阅读全文
posted @ 2014-05-30 12:13 WanChouchou 阅读(5227) 评论(1) 推荐(0)
摘要:1 watchdog分析Watchdog就是“看门狗”。其最初存在的意义是因为以前嵌入式设备上的程序经常跑飞(电磁干扰之类的),所以专门设置了一个硬件看门狗,每个一段时间,看门狗就去检查一下某个参数是否被设置了,如果发现该参数没有被设置,则判断为系统出错,然后就会强制重启。在软件层面上,Androi... 阅读全文
posted @ 2014-05-24 00:54 WanChouchou 阅读(831) 评论(0) 推荐(0)
摘要:1 zygote的分裂前面已经讲了zygote分裂出了长子system_server,然后SS(system_server)就通过initAndLoop进行消息循环处理了。那么谁会向zygote发送消息呢?这里以一个activity的启动为例,进行具体分析zygote的分裂和繁殖。1.1 Activ... 阅读全文
posted @ 2014-05-23 21:49 WanChouchou 阅读(1241) 评论(0) 推荐(0)
摘要:1 SystemServer分析SystemServer的进程名就是前面所说的“system_server”,是zygote进程“app_process”fork出来的第一个子嗣,其重要性不言而喻。下面我们简称其为SS。1.1 SS的诞生先回顾一下SS是如何创建的:/*在zygoteinit.jav... 阅读全文
posted @ 2014-05-22 22:50 WanChouchou 阅读(1123) 评论(0) 推荐(0)
摘要:1 zygote分析1.1 简介Zygote本身是一个NATIVE层的应用程序,与驱动、内核无关。前面已经介绍过了,zygote由init进程根据init.rc配置文件创建。其实本质上来说,zygote就是app_process,这个名字在android.mk中指定,但是在运行的时候,app_pro... 阅读全文
posted @ 2014-05-22 22:48 WanChouchou 阅读(976) 评论(0) 推荐(0)
摘要:我的LINUX版本是ubuntu12.04 32bit。今天在下载android源代码的时候发现自己最初给这个虚拟机分配的磁盘空间不足了(只有20G)。所以就需要给磁盘扩容。网上大致搜索了一下,主要有两种解决方法:一,另建一个磁盘;二,给原有的磁盘扩容。我选择第二种方案。 1,关闭虚拟机。进入要扩... 阅读全文
posted @ 2014-05-20 23:04 WanChouchou 阅读(16310) 评论(2) 推荐(0)
摘要:首先去官网http://source.android.com/source/initializing.html可以看到完整的安装教程。不过一般情况下,按照这个教程是无法一步到位的,因为中途肯定会遇到很多问题。这里我把我遇到的问题以及相应的解决方案总结一下: 1、sudo apt-get inst... 阅读全文
posted @ 2014-05-20 14:47 WanChouchou 阅读(2245) 评论(0) 推荐(0)
摘要:属性服务property service大家都知道,在windows中有个注册表,里面存储的是一些键值对。注册表的作用就是:系统或者应用程序将自己的一些属性存储在注册表中,即使系统或应用程序重启,它还能够根据之前在注册表中设置的属性,进行相应的初始化工作。Android平台也提供了类似的机制,那就是... 阅读全文
posted @ 2014-05-07 01:03 WanChouchou 阅读(529) 评论(0) 推荐(0)
摘要:1 源码分析必备知识1.1 linux内核链表Linux内核链表的核心思想是:在用户自定义的结构A中声明list_head类型的成员p,这样每个结构类型为A的变量a中,都拥有同样的成员p,如下:struct A{int property;struct list_head p;}其中,list_hea... 阅读全文
posted @ 2014-05-05 19:47 WanChouchou 阅读(583) 评论(0) 推荐(0)
摘要:在逆向分析Android APK的时候,往往需要分析它的.so文件。这个.so文件就是Linux的动态链接库,只不过是在ARM-cpu下编译的。所以学习Android下的ARM指令很重要。目前,市面上的ARM-cpu基本都支持一种叫做THUMB的指令集模式。这个THUMB指令集可以看作是ARM指... 阅读全文
posted @ 2014-05-04 20:57 WanChouchou 阅读(2220) 评论(3) 推荐(0)