iptables 完成联网控制 (续) ,独立native进程监听。
来源:互联网 发布:淘宝vip等级划分 编辑:程序博客网 时间:2024/06/07 00:56
之前做的iptables 来进行的联网控制,一直耿耿于怀,想要知道系统里的netd等等是如何做到执行那些命令,并能监听的。
最近有机会又对这部分进行了一些研究。
所要做的大概就是3部分,1. native进程,这部分得用c/c++来写,
2. framework接口。用于和native进程通信。
3. selinux权限配置,主要就是为了赋予natvie进程
framework与native的通信这部分也是一个很有趣的地方,看了系统源码,很多模块使用了local socket进行上下层的通信。 好处就是稳定性高,而且另一点应该就是易封装,独立开来。
1.下面就来稍作介绍native 进程的部分,
native的主要作用就是接收命令和执行命令,接收framework传输的命令,执行相应的shell 命令。
此处有两个现成的类可供使用,FrameworkCommand 类,用于注册cmd,大概就是用于转发命令用的吧。
另一个是 FrameworkListener, 用于注册socket监听, 该类new的时候需要传入一个string,监听对应名称的socket。 上层也需要使用该socket进行通信。该socket要和后面framework中使用的相对应。
以下为代码部分
2.framework接口部分
这部分比较简单,只需要在service中创建一个线程,获取到socket,并提供开放接口供app调用即可。 获取socket输出流代码如下:
1 LocalSocket socket = new LocalSocket();2 OutputStream os = null;3 LocalSocketAddress lsa = new LocalSocketAddress("test", LocalSocketAddress.Namespace.RESERVED);4 5 socket.connect(lsa);6 os = socket.getOutputStream();7 os.write("5 firsttest abc cdf\0".getBytes(StandardCharsets.UTF_8));
而向这个流写入东西的时候也是有格式限制的,必须是【数字+空格+注册的CMD+空格+内容】的结构。因为当native收到数据时会需要返回一个数据,如果没有这个【数字】进行编号,很可能会导致信息的前后不对应。数据的返回监听一般是建立一个线程单独进行监听。
3.selinux 权限
这块说实话,研究了好几天,感觉有些地方还是很难理解。这些权限的设置会直接影响到native 进程的功能。 而且权限有很多,必须得针对需要的权限进行研究添加,修改的目录一般就两个地方,external/sepolicy和device下面对应开发商的一个配置路径。
至少得加3个地方, 声明native进程的类型,因为用到了socket,还得将socket声明出来,毕竟linux下万物归为文件。还有一个是对test进程的权限声明,这里就不写出来了,毕竟自己都不是很懂,省的误导人。需要用的小伙伴可以自行研究
- iptables 完成联网控制 (续) ,独立native进程监听。
- framework层和native层实现联网控制(iptable方式)
- 独立完成!
- (原创)使用aidl进程间通讯并开启独立进程的服务仿下载监听回调等场景
- React Native 切换监听端口(Android)
- Iptables 完成端口映射
- linux 开启独立iptables日志
- linux 开启独立iptables日志
- 进程控制(二)进程控制编程
- 32位windows7安装ipfw(完成iptables功能)
- 第一次独立完成的小游戏(贪吃蛇c语言版)
- 记自己独立完成项目(取得进展)
- 如何写监听回调(事件完成监听、点击响应监听 )
- 独立完成猎人史诗任务
- 菜鸟怎样独立完成破解?
- 监听webview 加载完成
- 监听iframe加载完成
- Edittext 监听输入完成
- 【程序6】用*号输出字母C的图案
- 【技巧】intelliJ IDEA中导入Tomcat中lib中的包
- Java Web(二) Servlet中response、request乱码问题解决
- 跟着内核学框架-从misc子系统到3+2+1设备识别驱动框架
- 使用Webbrowser直接运行HTML代码
- iptables 完成联网控制 (续) ,独立native进程监听。
- C#用DesignSurface实现一个简单的窗体设计器
- 细说Asp.Net Web API消息处理管道(二)
- 读书笔记 effective c++ Item 13 用对象来管理资源
- AS快捷键与代码模板
- 利用nodejs监控文件变化并使用sftp上传到服务器
- SQL Server-聚焦深入理解动态SQL查询(三十二)
- CENTOS: 安装memSQL
- 树莓派上搭建arduino命令行开发环境