随笔分类 -  源码分析

各种opensource源码的研究和分析
摘要:以下几篇文章是分析binder机制里讲得还算清楚的目录1.Android - Binder机制 - ServiceManager2.Android - Binder机制 - 普通service注册3.Android - Binder机制 - 获得普通service4.Android - Binder... 阅读全文
posted @ 2015-04-27 19:45 cgj 阅读(603) 评论(0) 推荐(0)
摘要:arm exploits 技术教程:Learning Pentesting for Android DevicesCVE-2015-1530 ,CVE-2015-1474 两个android整数溢出漏洞 分析An integer overflow in Android media could be ... 阅读全文
posted @ 2015-04-21 16:40 cgj 阅读(2028) 评论(0) 推荐(0)
摘要:引子在编译2.6内核的时候,你会在编译选项中看到[*] Enable futex support这一项,上网查,有的资料会告诉你"不选这个内核不一定能正确的运行使用glibc的程序",那futex是什么?和glibc又有什么关系呢?1. 什么是FutexFutex 是Fast Userspace m... 阅读全文
posted @ 2015-04-21 11:51 cgj 阅读(1882) 评论(0) 推荐(0)
摘要:使用者角度看bionic pthread_mutex和linux futex实现本文所大篇幅引用的参考文章主要描述针对glibc和pthread实现;而本文的考察代码主要是android的bionic和pthread实现。1. futex引入的意义传统的SYSTEM V IPC机制需要系统调用进入内... 阅读全文
posted @ 2015-04-20 16:59 cgj 阅读(3013) 评论(0) 推荐(0)
摘要:学习 android 逆向分析过程中,需要学习 Arm 指令,不可避免要编写一些 test code 并分析其指令,这是这篇文档的背景。在目前 android 提供的开发环境里,如果要编写 c / cpp code, 一般是通过 ndk 开发套件,基本方法就是在 windows 或 linux 发行... 阅读全文
posted @ 2015-03-25 12:48 cgj 阅读(2107) 评论(0) 推荐(0)
摘要:Android so注入-libinject2 简介、编译、运行Android so注入-libinject2 如何实现so注入Android so注入-Libinject 如何实现so注入Android so注入挂钩-Adbi 框架简介、编译、运行Android so注入挂钩-Adbi 框架如何实... 阅读全文
posted @ 2015-02-27 15:28 cgj 阅读(4252) 评论(0) 推荐(0)
摘要:Android so注入-libinject2 简介、编译、运行Android so注入-libinject2 如何实现so注入Android so注入-Libinject 如何实现so注入Android so注入挂钩-Adbi 框架简介、编译、运行Android so注入挂钩-Adbi 框架如何实... 阅读全文
posted @ 2015-02-11 19:10 cgj 阅读(6969) 评论(1) 推荐(0)
摘要:Android so注入-libinject2 简介、编译、运行Android so注入-libinject2 如何实现so注入Android so注入-Libinject 如何实现so注入Android so注入挂钩-Adbi 框架简介、编译、运行Android so注入挂钩-Adbi 框架如何实... 阅读全文
posted @ 2015-02-11 18:39 cgj 阅读(8658) 评论(1) 推荐(0)
摘要:上一篇android 5 HOOK 技术研究之 ADBI 项目 02分析了hijack.c, 这个文件编译为一个可执行程序 hijack, 该程序实现了向目标进程注入一个动态库的功能。这一篇继续研究 adbi 项目其他源码,解决真正替换目标进程函数的问题。在开始之前,先看看 adbi 给出的一个例子... 阅读全文
posted @ 2015-02-10 16:08 cgj 阅读(5625) 评论(1) 推荐(1)
摘要:Android so注入-libinject2 简介、编译、运行Android so注入-libinject2 如何实现so注入Android so注入-Libinject 如何实现so注入Android so注入挂钩-Adbi 框架简介、编译、运行Android so注入挂钩-Adbi 框架如何实... 阅读全文
posted @ 2015-02-10 14:07 cgj 阅读(9250) 评论(0) 推荐(0)
摘要:Android so注入-libinject2 简介、编译、运行Android so注入-libinject2 如何实现so注入Android so注入-Libinject 如何实现so注入Android so注入挂钩-Adbi 框架简介、编译、运行Android so注入挂钩-Adbi 框架如何实... 阅读全文
posted @ 2015-02-10 12:11 cgj 阅读(12190) 评论(1) 推荐(0)
摘要:================= 2015 年 10 月 14 号 更新著名的android开源社区xda有一个帖子,详细描述了android开发和研究环境的初始搭建过程:http://forum.xda-developers.com/chef-central/android/guide-andr... 阅读全文
posted @ 2015-02-03 11:22 cgj 阅读(976) 评论(0) 推荐(0)
摘要:xen vchan v4v inter-vm communication 阅读全文
posted @ 2014-07-01 13:07 cgj 阅读(1770) 评论(0) 推荐(0)
摘要:一. 缓存算法1.1 算法目的流量拆分算法的运算会明显影响包的发送速率,为了提高发送速率, tcpreplay 使用了缓存机制,该部分代码也封装在tcpprep工具里,运行 tcpprep (tcp-preparation)工具,结果是一个针对性的缓存文件,该文件存放流量拆分算法的运算结果。同时,cache.c 存放了部分读取cachefile的函数。1.2 算法思想如何设计符合目的的缓存?达到即高效又节省?最简单就是使用bool[SIZE] ,存放 0和1,这样的数据结构使用1个字节存放标识,可以表示2个方向的流量。但是用1个字节表示一个packet完全没必要,可以用1个bit表示一个pac 阅读全文
posted @ 2013-11-28 09:45 cgj 阅读(834) 评论(0) 推荐(1)
摘要:1.1 算法目的现在网络架构一般是Client-Server架构,所以网络流量一般是分 C-S 和 S-C 两个方向。tcpdump等抓包工具获取的pcap包,两个流向的数据没有被区分。流量方向的区分有什么好处?这种拆分至少有两个好处,一是在抓包基础上定制数据包,可以支持单独修改一个流向的IP,MAC等字段。二是实际测试被测设备的时候,可以将两个流向的流量通过不同的端口发送出来。Tcpprep支持了这种拆分(早先版本这部分功能混合在tcpreplay中,后来独立拆分成为tcpprep工具)Tcpprep3.4.4 支持了以下流量拆分的参数-a, --auto=str Auto-split mo 阅读全文
posted @ 2013-11-28 09:42 cgj 阅读(1594) 评论(0) 推荐(1)
摘要:一. 序1.1 tcpreplay历史Tcpreplay 的作者是Aaron Turner,该项目开始于2000年,早期的功能是对tcpdump等抓包工具生成的网络包(即pcap文件)的回放,并加入了一些控制,比方说控制回放的速率,以及拆分客户端和服务端的流量,控制它们从不同网络接口回放。稍后的版本加入了网络包编辑的功能,允许对pcap文件进行各个协议层的修改然后再发送。Tcpreplay主要的应用场景是各种设备的测试,用户将某些现实场景或实验室场景下产生的流量抓下来,以pcap文件的形式存储,需要的时候就可以使用tcpreplay重现当时的场景,通使用包编辑功能可以让重现场景的应用范围更广。 阅读全文
posted @ 2013-11-28 09:33 cgj 阅读(7843) 评论(0) 推荐(2)
摘要:一 前言http://www.dpdk.org/ dpdk 是 intel 开发的x86芯片上用于高性能网络处理的基础库,业内比较常用的模式是linux-app模式,即利用该基础库,在用户层空间做数据包处理,有了这个基础库,可以方便地在写应用层的网络包处理高性能程序,目前该库已经开源。Main librariesmulticore framework 多核框架,dpdk库面向intel i3/i5/i7/ep 等多核架构芯片,内置了对多核的支持huge page memory 内存管理,dpdk库基于linux hugepage实现了一套内存管理基础库,为应用层包处理做了很多优化ring b. 阅读全文
posted @ 2013-11-18 18:39 cgj 阅读(20157) 评论(7) 推荐(3)
摘要:锁的概念是承接原子操作的,根本目的都是为了并发保护,只不过抽象的层次更高,多核环境下的锁的实现要依赖于第三章的理论基础。下面是几种常见的锁机制的简介,这里不谈具体实现,具体实现可以参考linux内核代码1.1 信号量Linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。这时处理器获得自由去执行其它代码。当持有信号量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而便可以获得这个信号量。信号量的睡眠特性,使得信号量适用于锁会被长时间持有的情况;只能在进程上下文中使用,因为中断上下文中是不能被调度的;另外当代码持有信号量时, 阅读全文
posted @ 2013-08-08 17:10 cgj 阅读(1080) 评论(0) 推荐(0)