android盒子开发招聘,[原创]Android沙盒开发之系统libc库定制修改
[原创]Android沙盒开发之系统libc库定制修改
2013-7-29 22:29
11525
[原创]Android沙盒开发之系统libc库定制修改
2013-7-29 22:29
11525
标 题: 【原创】Android沙盒开发之系统libc库定制修改
作 者: 蟑螂一号
时 间: 2013-07-29,21:52:11
android系统中libc是c层中最基本的函数库,libc中封装了io、文件、socket等基本系统调用。所有上层的调用都需要经过libc封装层。以Android4.2.2源码为例分析java socket的调用流程。
Android4.2.2中,java层中的socket、bind、connect、send、recv、sendto、recvfrom等socket函数功能和C层socket的socket、bind、connect、send、recv、sendto、recvfrom等 是通过JNI方式实现java层socket到c层socket的调用。
在源码目录libcore/luni/src/main/native/libcore_io_Posix.cpp中实现了java层socket功能的native函数。在该文件中,可以发现java层的socket发送和接收使用的是sendto和recvfrom函数,并没有使用系统调用send和recv。 n
在源码目录bionic/libc/unistd目录下,可以看到send和recv系统调用实现是直接调用sendto和recvfrom。然而sendto和recvfrom函数实现文件并不好找。原来sendto和recvfrom是通过汇编代码实现,在汇编代码中通过swi调用中断号实现功能。那么如果我想把sendto或者recvfrom直接独立成c源文件该如何做?
实现方法(以sendto为例):
1.找到sendto.S文件,android4.2.2中文件路径bionic/libc/arch-arm/syscalls/目录下。
2.将sendto.S改为__sendto.S并在汇编代码中将sendto改为__sendto.
3.在bionic/libc/arch-arm/目录中修改后缀mk文件中的sento.S为__sendto.S。
4.在bionic/libc/include/sys/socket.h中修改socketcall为前缀的sendto函数声明,将socketcall改为extern关键字。
5.在bionic/libc/unistd中增加sendto.c文件,在文件中增加如下代码:
#include
#include
extern ssize_t __sendto(int,const void *,ssize_t ,unsinged int ,struct sockaddr*,socketlen_t);
ssize_t sendto(int fd,const void * buf,ssize_t len,unsinged int flags ,struct sockaddr* addr,socketlen_t slen)
{
return __sendto(fd,buf,len,flags,addr,slen);
}
6.修改bionic /libc目录中的android.mk文件,在该文件中找到send.c所在位置,并增加一行unistd/sendto.c。
定制修改libc库作用:
在android系统用户空间中libc是用户空间通向内核空间的一扇门。因此,能在此门设立关卡,就可以监控程序的各种数据流信息,对分析应用灰常有用。
android盒子开发招聘,[原创]Android沙盒开发之系统libc库定制修改相关推荐
- iOS开发10-iOS SandBox(沙盒或沙盘)介绍、路径获取
iOS开发10-iOS SandBox(沙盒或沙盘)介绍.路径获取 代码下载(Xcode7.0.1) 有问题请联系博主,邮箱:nathanlee1987@aliyun.com 1.沙盒路径的获取 & ...
- Unity设计模式之-Unity3d游戏开发设计模式之子类沙盒模式
** 请关注微信公众号获取最新消息 ** 原文链接:http://blog.csdn.net/u013108312/article/details/52208635 本篇文章我们来看下Unity3d游 ...
- 环境加密--SDC沙盒防泄密系统
近年来,电脑以及互联网应用在中国的普及和发展,已经深入到社会每个角落, 政府,经济,军事,社会,文化和人们生活等各方面都越来越依赖于电脑和网络.电 子政务,无纸办公.MIS.ERP.OA 等系统也在企 ...
- Win10沙盒功能,系统自带免费免安装
Win10沙盒功能,系统自带免费免安装 最新版本的Windows 10(版本1903)新增加了一个名为Windows沙盒的内置功能.Windows沙盒允许Windows 10 专业版和Windows ...
- SharePoint 2010 沙盒开发
前言 本文期图阐述在SP2010里面Sandboxed的原理极其相关使用.写这篇文章的时候正好遇到一个用户的case,这个case需要在某个列表里输入数据点击保存后数据能按照一定的格式插到Calend ...
- 游戏开发设计模式之子类沙盒模式(unity3d 示例实现)
积累提供所有操作(的实现)来定义子类的行为 用一个最简单的例子来讲解这个模式 玩家操纵的英雄也就是这个游戏的主角会有许多技能,我们想定义许多不同的技能,来让玩家使用. 首先我们定义一个skillBas ...
- iOS开发-缓存图片到沙盒--思路
1.图片存储到沙盒中 ? 1 2 3 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDo ...
- python前端开发招聘_【天津前端开发招聘_最新天津前端开发招聘信息】-前程无忧...
天津卓众信息技术有限公司天津-西青区0.6-1万/月11-23 学历要求:本科|工作经验:3-4年|公司性质:民营公司|公司规模:少于50人 1.根据产品设计实现产品的页面交互和数据逻辑展示,负责前端 ...
- 树莓派+android+盒子,树莓派3安装Android TV系统图文教程
树莓派3 Android TV系统怎样安装?树莓派3一个重要用途就是当智能机顶盒,那么安装Android系统肯定是大家的首选,但目前支持树莓派3的Android系统都是第三方移植的,各种问题不断,最重 ...
最新文章
- python mysql
- 细说Android事件传递
- 左侧固定右侧自动填充_办公小技巧:解决Excel公式自动填充问题
- Zabbix监控Mysql数据库性能
- Yii2 的 redis 应用
- 算法导论——基本的图算法
- java map统计学生名单_Java含自己的总结:集合,学生,遍历,ArrayList,Set,Map,泛型,班级,发牌—诗书画唱...
- lamp和php,[LAMP]Apache和PHP的结合
- java集成jpush实现客户端推送
- 怎么提前体验鸿蒙,鸿蒙OS手机版明天发布,开发者提前体验,上手操作毫无难度...
- 28. PHP 文件上传
- 智慧社区电商后台管理系统
- java判断时间日期是否等于当前日期
- android移除fragment,Fragment 的创建、替换与移除
- 并非都完美,笔记本8大致命缺陷曝光
- 数据结构 —— ADT(抽象数据类型)
- 360搜索推出致敬女性专题 董卿咪蒙领衔十大杰出女性
- android dataBinding 与ObservableField实现双向绑定
- 早期RA获超声缓解的基线预测因素
- [JVM]了断局:内存模型与线程