导航:首页 > 操作系统 > androidopenvpn开发

androidopenvpn开发

发布时间:2022-05-08 05:17:04

‘壹’ 如何以编程方式创建一个新的android 4.0 VPN接口

关于Android VPN编程,网上的资料比较少,本人最近有一个关于在Android平台下开发VPN 客户端的项目,在项目刚开始的时候,进行比较艰难,主要是android(4.0之前)的VPN领域鲜有API可供直接调用,也没有官方的说明文档。经过将近一个星期的研究,终于有些头绪,在此本人愿将一些经验与大家共享。
http://blog.csdn.net/whyonly/article/details/7741270
有代码教程,请参考使用。

‘贰’ 如何进入android的官方开发者网站

凡是java官方,安卓API官网都属于官方开发者网站,你可以利用里边开源信息进行学习和开发,例如:http://android.toolib.net/

但是我猜你是因为谷歌被封锁,链接不上吧?

可以跳墙或者改下本地host文件

如图位置:


在最后一行加一段IP地址就可以了,代码如下:

# Copyright (c) 1993-1999 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an indivial line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on indivial
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
127.0.0.1 localhost


注意:一般不能直接保存这个文件的,会提示你被占用,所以教你个小技巧,可以先把文件复制到桌面上,然后修改,然后再覆盖到原来C盘路径里,这样是可以的。

‘叁’ Android SDK 各版本之间有什么差异

一、Android1、1
2008 年9月发布的Android第一版
二、Android1、5 Cupcake (纸杯蛋糕)
2009年4月30日,官方1、5版本(Cupcake 纸杯蛋糕)的Android发布。主要的更新如下:
1、拍摄/播放影片,并支持上传到Youtube
2、支持立体声蓝牙耳机,同时改善自动配对性能
3、最新的采用WebKit技术的浏览器,支持复制/贴上和页面中搜索
4、GPS性能大大提高
5、提供屏幕虚拟键盘
6、主屏幕增加音乐播放器和相框widgets
7、应用程序自动随着手机旋转
8、短信、Gmail、日暦,浏览器的用户接口大幅改进,如Gmail可以批量删除邮件
9、相机启动速度加快,拍摄图片可以直接上传到Picasa
10、来电照片显示
三、Android1、6 Donut (甜甜圈)
2009年9月15日,1、6(Donut 甜甜圈)版本软件开发工具包发布。主要的更新如下:
1、重新设计的Android Market手势
2、支持支持CDMA网络
3、文字转语音系统(Text-to-Speech)
4、快速搜索框
5、全新的拍照接口
6、查看应用程序耗电
7、支持虚拟私人网络(VPN)
8、支持更多的屏幕分辨率。
9、支持OpenCore2媒体引擎
10、新增面向视觉或听觉困难人群的易用性插件
四、Android2、0/2、0、1/2、1 Eclair (松饼)
2009年10月26日,2、0(Eclair 松饼)版本软件开发工具包发布。主要的更新如下:
1、优化硬件速度
2、"Car Home"程序
3、支持更多的屏幕分辨率
4、改良的用户界面
5、新的浏览器的用户接口和支持HTML5
6、新的联系人名单
7、更好的白色/黑色背景比率
8、改进Google Maps3、1、2
9、支持Microsoft Exchange
10、支持内置相机闪光灯
11、支持数码变焦
12、改进的虚拟键盘
13、支持蓝牙2、1
14、支持动态桌面的设计
五、Android2、2/2、2、1Froyo(冻酸奶)
2010年5月20日,2、2(Froyo 冻酸奶)版本软件开发工具包发布。主要的更新如下:
1、整体性能大幅度的提升
2、3G网络共享功能。
3、Flash的支持。
4、App2sd功能。
5、全新的软件商店。
6、更多的Web应用API接口的开发。
六、Android2、3 Gingerbread (姜饼)
2011年2月2日, 3、0(Honeycomb 蜂巢)版本主要更新如下:
1·优化针对平板
2·全新设计的UI增强网页浏览功能
3、·n-app purchases功能
七、Android3、1 Honeycomb (蜂巢)
2011年5月11日在Google I/O开发者大会宣布发布,版本主要更新如下:
1、Honeycomb 蜂巢(改进3、0BUG)
2、经过优化的Gmail电子邮箱;
3、全面支持GoogleMaps
4、将Android手机系统跟平板系统再次合并从而方便开发者。
5、任务管理器可滚动,支持USB 输入设备(键盘、鼠标等)。
6、支持 Google TV、可以支持XBOX 360无线手柄
7、widget支持的变化,能更加容易的定制屏幕widget插件。
八、Android3、2 Honeycomb (蜂巢)
2011年7月13日发布,版本更新如下:
1、支持7英寸设备
2、引入了应用显示缩放功能.
九、Android4、0 Ice Cream “冰激凌三明治”
2011年10月19日 在香港发布,4、0(Ice Cream Sandwich 冰激凌三明治)版本主要更新如下:
1、蓝色主题
2、接近于桌面版的Chrome Lite浏览器,有离线阅读,同步Chrome书签,新的标签样式等。
3、截图功能
4、更强大的图片编辑功能
5、自带照片应用堪比Instagram,可以加滤镜、加相框,进行360度全景拍摄,照片还能根据地点来排序
6、Gmail加入手势、离线搜索功能,UI更强大。
7、新功能People:以联系人照片为核心,界面偏重滑动而非点击,集成了Twitter、Linkedin、Google+等通讯工具。有望支持用户自定义添加第三方服务。
8、新增流量管理工具,可具体查看每个应用产生的流量。
9、正在运行的程序可以像电脑一样的互相切换
10、人脸识别功能
11、系统优化、速度更快
12、支持虚拟按键,手机可以不再拥有任何按键
13、专为3D优化的驱动
14、平板电脑和智能手机通用
十、Android 4、3 Jelly Bean“果冻豆”
2013年7月15日 发布,4、3( Jelly Bean 果冻豆)版本主要更新如下:
1、Nexus 装置在 Google Play 播放影片时,可开启 Fraunhofer Cingo 提供的虚拟环绕音效效果。
2、 在拨号盘上输入数字,会自动建议符合名字或号码的联系人。此功能可开启或关闭。
3、 屏幕触控输入的算法做了改进,让输入文字变得更容易。
4、 游戏手把或游戏杆的输入延迟(latency)降低。
5、 无需开启 Wi-Fi,即可利用 Wi-Fi 做定位的辅助。
6、 支持 BluetoothSmart(先前称为 Bluetooth Low Energy),Nexus 4 与新 Nexus 7 现在已经是 Bluetooth Smart Ready 装置。
7、 支持蓝牙 AVRCP 1.3 版,可在车用音响上显示歌名。
8、 “已停用”应用程序分页:在“设定”→“应用程序”中新增“已停用”分页,可统一管理已停用的应用程序。
9、 支持 OpenGL ES 3.0,可提供下一代画质更佳的 3D 游戏体验。
10、支持新 Nexus 7 与 Nexus 10 的屏幕无线传输功能,可将屏幕画面无线投射到电视上。
11、支持更多语言:南非语(Afrikanns)、阿姆哈拉语(Amharic)、印地语(Hindi)、斯瓦希里语(Swahili)、祖鲁语(Zulu)。
12、主画面、设定、电话、联系人应用程序可支持右向左写语言(RTL,如希伯来语、阿拉伯语)
13、支持“限制账号”,可设定让装置只能使用特定应用程序与内容。
14、简化设定精灵,让首次开机的设定更容易
15、在锁定画面切换用户账号的速度更快


‘肆’ 通过hook connect 函数 实现 VPN功能是否可行

在android系统中,可以使用iptables控制单个应用网络访问。在google code上有一个开源项目-droidwall就是基于iptables实现的。除了iptables可以实现控制单个应用网络访问外,还可以通过拦截应用中的connect函数,达到控制应用访问网络的目的。下面从几个方面分析android应用中connect调用流程为例来实现拦截connect实现网络禁用和ip过滤。(以下分析基于4.2源码)


1.android中网络访问流程


1)android系统中访问网络可以通过Socket.java、URL.java、HttpPost.java、HttpGet.java等关键类来访问网络资源。通过代码追踪,这些类访问网络资源最终需要通过native方式,调用linux系统下的socket函数访问网络。在android4.2源码中,java层访问网络得native方法定义在源码路径libcore/luni/src/main/java/libcore/io/Posix.java中(4.0之前的网络系统、文件系统的native方法是独立分开得,4.0之后组织在Posix.java中)。如下是Posix.java中的代码片段:

public final class Posix implements Os { Posix() { } public native FileDescriptor accept(FileDescriptor fd, InetSocketAddress peerAddress) throws ErrnoException, SocketException; public native boolean access(String path, int mode) throws ErrnoException; public native void bind(FileDescriptor fd, InetAddress address, int port) throws ErrnoException, SocketException; ...... //对应linux下的connect系统调用 public native void connect(FileDescriptor fd, InetAddress address, int port) throws ErrnoException, SocketException;

2)Posix.java中的native方法实现源码路径libcore/luni/src/main/native/libcore_io_Posix.cpp文件中,native connect方法实现代码片段如下:

taticvoidPosix_connect(JNIEnv*env,jobject,jobjectjavaFd,jobjectjavaAddress,jintport)
{
sockaddr_storagess;
if(!inetAddressToSockaddr(env,javaAddress,port,&ss))
{
return;
}
constsockaddr*sa=reinterpret_cast<constsockaddr*>(&ss);
(void)NET_FAILURE_RETRY(env,int,connect,javaFd,sa,sizeof(sockaddr_storage));
}

有上代码可知,java层connect最终功能由linux系统connect函数实现。


2.so注入


so注入可以参考古河大哥牛逼的libInject(点击这里访问)。


3.拦截connect库编写


在connect中,获取传入的参数ip地址,根据需要把需要禁用的ip地址改为127.0.01.以下是我测试的拦截connect函数关键代码:

intnew_connect(intsockfd,conststructsockaddr*addr,socklen_taddrlen)
{
LOGDD("HOOK
====>newconnect****************");
charip[128]={0};
intport=-1;
if(addr->sa_family==AF_INET)
{
structsockaddr_in*sa4=(structsockaddr_in*)addr;
inet_ntop(AF_INET,(void*)(structsockaddr*)&sa4->sin_addr,ip,128);
port=ntohs(sa4->sin_port);
LOGDD("AF_INETIP===>%s:%d",ip,port);
}
elseif(addr->sa_family==AF_INET6)
{
structsockaddr_in6*sa6=(structsockaddr_in6*)addr;
char*ipv6=NULL;
inet_ntop(AF_INET6,(void*)(structsockaddr*)&sa6->sin6_addr,ip,128);
ipv6=strstr(ip,"f:");
if(NULL!=ipv6)
{
strcpy(ip,ipv6+2);
}
port=ntohs(sa6->sin6_port);
LOGDD("af_inet6
IP===>%s:%d",ip,port);
}
else
{
returnold_connect(sockfd,addr,addrlen);
}

if(strcmp(ip,"115.23.20.178")==0)
{

LOGDD("%s
==>127.0.0.1",ip);
structsockaddr_inmy_addr;
intmy_len=sizeof(structsockaddr_in);
bzero(&my_addr,sizeof(my_addr));
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(80);
my_addr.sin_addr.s_addr=inet_addr("127.0.0.1");

returnold_connect(sockfd,(constsockaddr*)&my_addr,sizeof(my_addr));
}
else
{
returnold_connect(sockfd,addr,addrlen);
}
}

4.拦截connect函数功效


1)禁用应用网络访问。

2)过滤广告ip

3)禁用定位功能

‘伍’ android上的ipsec支持ipsec-v2和ipsec-v3吗

1, Is the IPsec VPN software mole cryptographic functions meet the federal certification Level 1 requirements of USA?

2, Is the IPsec VPN software mole implemenlation support IPsec-v2 (RFC2401, 2402, 2406) and IPsec-v3 (RFC4301, 4302, 4303)?

3, Is the IPsec VPN software mole IKE implementation support IKEv1 (RFC2408, 2409, 2412) with shared-secret and certification option?
Is it support IKE negotiation with both Main mode and Aggressive Mode, Mode-Config and XAUTH?

4, Is the IPsec VPN software mole IKE implementation support IKEv2 (RFC5996)?

5, Is the SSL VPN client cryptographic functions meet the federal certification Level 1 requirements of USA?

‘陆’ 如何取消Android VPN设置的锁屏密码或PIN

进系统设置,找一下有没有锁屏或者安全之类的设置项,进去后找到锁屏密码设置为无密码就行了,VPN设置的密码保护就是平时用的锁屏密码

‘柒’ 做移动应用APP,一套java后台可否搞定android和ios

完全可以,做一套通用的接口。接口形式使用基于http的post或者get,用json或xml封装数据。
大部分公司都是这么用的

加密解密上可能ios上会有点小问题,但网络上都有解决方案。

‘捌’ Android程序员的就业前景

Android在中国的发展
Android在中国的前景十分广阔,首先是有成熟的消费者,在国内,十分红火,这些社区为Android在中国的普及做了很好的推广作用。国内厂商和运营商也纷纷加入了Android阵营,包括中国移动,中国联通,中兴通讯,华为通讯,联想等大企业,同时不仅仅局限于手机,国内厂家也陆续推出了采用Android系统的MID产品,比较着名的包括由Rockchip和蓝魔推出的同时具备高清播放和智能系统的音悦汇W7和2010年推出的原道N5,我们可以预见Android也将会被广泛应用在国产智能上网设备上,将进一步扩大Andorid系统的应用范围。另一方面,由于国内政策的限制,导致Android的部分功能(如Android market)在国内无法正常使用,常用的解决方法是使用VPN服务来访问。
Android的就业前景和行业需求
目前中国拥有世界上最大的手机用户群,再加上3G的推出对整个行业的巨大推动作用,全世界所有大中小型手机制造商几乎都在招聘Android工程师。然而每天有超过16万台的Android设备出货,一年后全球可能会有超过1亿台的Android设备,以后将超越iphone成为智能手机平台的旗舰。
随着Android平台的扩张,引发了Android人才荒,2010年移动开发人才需求20万,未来人才需求缺口将达百万。3G人才全球紧缺,实用人才培养已迫在眉睫。在国内三大运营商如火如荼的3G营销战持续升温,再加上3G的推出对整个行业的巨大推动作用,无疑将引爆3G手机开发工程师这个黄金职位。但符合条件的Android工程师屈指可数,在未来几年内,Android开发工程师将成为3G行业炙手可热的岗位之一。

‘玖’ android系统怎样实现访问控制策略

第一类风险是滥用应用程序权限。关于这类风险有如下防范策略建议。
应用程序认证
认证是防范恶意程序的有效手段之一。在理想状态下,一个应用程序在认证之前必须经过完整的测试与代码审查,确认其权限使用的合理性,这自然对恶意软件起到了有力的防范作用。但是,认证的费用高昂,程序复杂,并不具备广泛的实用性。
选择使用应用程序权限
如果能够在安装阶段,确认某一应用程序仅使用必需的最小权限,也就是遵循最小权限原则,则受到恶意软件攻击的可能性必将大大降低!对于有经验的用户这也许是一种选择,但对于广大的普通用户,恐怕没人懂得如何验证应用程序要求的权限是否合理,在多数情况下用户会直接授予所要求的权限。因此需要开发者在申请或设定权限时,严格遵循最小权限原则。
自动静态分析与代码验证
设计一种自动分析应用程序特性的工具,分析应用程序的功能以及不同应用程序之间的差别,以判断其合法性。
第二类风险是攻击Linux内核与系统库函数的漏洞。目前,针对这种风险,采用更严格的访问控制机制,第6章介绍的限制操作系统用户权限的SE Android,是一种实际且有效的选择。最危险的攻击就是利用系统漏洞获取根用户或超级用户权限,进而控制整个系统。SE Android恰好通过控制根用户或超级用户权限实现对安全性的增强,即使攻击者获取了根用户权限,但可能的危害范围不至于无限扩大。但是,某些系统命令由于正常使用的需要,可能无法完全禁用,攻击者如果恰好获得该类命令的使用权,则SE Android的功能就十分有限了。
第三类风险是破坏私有数据的可用性、数据隐私性以及完好性。可以采取以下策略进行防范。
登录
使用登录用户口令解锁移动设备的某些功能,以防止安全威胁。这是一种常见的有效方式,尤其是用于保护隐私数据信息。但是,当设备遗失时,如果尚未使用口令解锁设备,则保护作用存在;如果解锁之后才遗失设备,则口令保护完全无效。
防火墙
防火墙可以保障用户私有信息不会经由网络连接被泄露。通常,对网络连接传输的内容使用无状态或有状态的分析,可以发现是否有私密信息正被泄露,因此可以切断传输线路。由于防火墙工作在操作系统内核中,因此无法直接为外部攻击所侵害。同时防火墙可以与SE Android提供的访问控制机制协同工作,提供更高级别的保护。但是,恶意软件并非只能通过网络接口泄露隐私信息。比如,通过短信/彩信的发送,防火墙就无作用了。
数据加密
数据加密是保护隐私数据的最佳手段。由于只有信息所有者才有密钥,因此即使设备失窃,隐私信息的安全仍然得到保障。
上下文敏感的访问控制(CAAC,Context Aware Access Control)
CAAC可以根据设备使用的内部与周边环境决定访问权限,比如设备使用的地点、所登录的移动网络、是否连接Wi-Fi等。但是,如果攻击恰好发生在允许访问的环境下,则此类方式无效。
远程管理
从安全角度,远程管理能力是必须严格限制使用的。但是,与防火墙、CAAC机制相结合,远程管理实际可以提升安全性。例如,设备遗失后,可以通过远程管理机制开启防护机制,保护数据安全。即使在日常使用中,远程管理也可能发现肆虐移动网络的蠕虫,通过启动防火墙等机制限制蠕虫的活动。但是,所有的远程管理都需要在受到攻击的过程中,或受到攻击之前有人为参与,而且需要耗费设备的资源,以及远程管理的人力资源等,费用不菲。
第四类风险是耗尽系统资源,可以采取如下的防范手段。
资源管理
系统资源管理的安全方案可以进一步降低耗尽系统资源类风险的危害。其机制是公平分配每个应用程序所需的系统资源。当然,可以根据应用程序的重要性与对资源的需求情况加以分配。比如,电话应用程序非常重要,因此需要得到更多的CPU时间。如果CPU时间、存储空间限额、网络与磁盘输入输出限流,则“拒绝服务”类型的攻击可被避免。但是,高效实现此类机制仍然十分困难,因此应用较少。
入侵检测/防护系统
基于宿主(host)的入侵检测系统可以通过资源使用的异常情况,检测各种耗尽电池、内存与CPU时间的恶意软件。但是,高级的恶意软件通常伪装为正常软件,不易检测。
第五类风险是入侵专用网络连接。建议采用如下的防范策略。
虚拟专网(VPN)
虚拟专网使用成熟的信息认证码与加密,保护通信的安全,可以防止针对网络的攻击。
远程管理
一个集中式的远程管理中心可以增强安全保护能力,但远程管理中心的人为因素可能成为另类的安全隐患。
上下文敏感的访问控制(CAAC)
在内网或虚拟专网的环境下,结合CAAC的机制,可以更好地保护数据安全。比如,当检测到外网环境时,适时启动数据传输加密机制等。
以上均为宏观上采取的防范策略,就实施细节而言,重要的是开发者需具备基本的安全意识,充分认识到安全性也是软件开发周期的一个重要环节,编写安全的代码是开发者所必须具备的一项职业技能。虽然不可能确保所编写的代码100%安全,但也要尽可能地使用户对Android系统和应用程序放心。
具体而言,无论是系统工程师还是应用工程师,在Android平台上致力于实现功能的同时,应更深入地理解所编写的应用程序将如何与Android系统或其他应用程序安全地交互;如何安全地存储数据到SQLite;如何保护用户数据尤其是敏感数据的安全,避免恶意软件的攻击;如何处理有限的内存、电池电量;如何充分理解权限机制,使用户清楚应用程序需要哪些权限。所有的这些都是开发流程中必不可少的部分。
本文节选自《Android安全机制解析与应用实践》一书。

‘拾’ 我要开发一个可以控制某个安卓app联网的程序,要怎么做

首先控制连接网络的话是分为控制WIFI和控制移动数据两种方式
1。控制WiFi的话,可以直接使用API来进行判断打开或关闭
2、控制移动数据的话,官方API从Android5.0以后已经禁止使用强制关闭的方法
3、对于控制移动数据,在没有root权限的前提下可以考虑使用VPN的方式来进行实现

阅读全文

与androidopenvpn开发相关的资料

热点内容
成都python培训机构好不好 浏览:421
mysql查看配置命令 浏览:597
v8编译cmake 浏览:964
app品牌起步阶段需要什么营销 浏览:358
压缩机制冷剂温度 浏览:930
会日语的程序员 浏览:19
网银密码加密失败怎么回事 浏览:727
android开发音乐播放器 浏览:808
ug120阵列命令快捷键 浏览:597
气动隔膜式压缩机 浏览:470
linux如何修改主机名 浏览:104
单片机光标上下移动 浏览:528
数据加密验证 浏览:108
程序员被激怒 浏览:891
winxp找不到服务器dns地址 浏览:842
以文本文件的格式保存考生文件夹 浏览:41
编译原理文法分为几类 浏览:570
JAVA基础学python要多久 浏览:74
java流量控制 浏览:936
java实现多重继承 浏览:707