导航:首页 > 编程语言 > javavpn连接

javavpn连接

发布时间:2023-09-15 07:00:16

⑴ rd是什么意思

rd abbr. DOS命令 : 删除空的子目;注册营养师(Registered Dietitian);乡村免费邮递。

短语词组:

1.Ginsenoside Rd 人参皂甙Rd;人参皂苷Rd;人参皂甙。

2.Side Rd 辅路;

3.Main Rd 干道;地址;

4.Ordinary Rd 一般道路;一般门路;

5.rd millennium 第3千年。

(1)javavpn连接扩展阅读:

双语例句:

1.By Colleen Hurley, RD, Certified Kids Nutrition Specialist The holidays are officially here, and many families celebrate the holiday season with food.

科尔林恩.赫尔利.RD,注册儿童营养专家 节假日正式到来,许多家庭拿出食物庆祝这一节日。

2.They leaned against 4203-RD and worked through their rote of tender gestures: hand-holding, modest-mouthed kisses, a giddy lowering to the ground, me an awkward weight following them down.

他们倚靠在4203-RD上,一板一眼地做起那套温柔把式:拉手、深浅有度的亲吻、晕晕忽忽地往地上滑,我这个糟糕的重负则跟着他们倒地。

3.RD: We do not currently support SCA, but we definitely plan to.

RD:我们目前不会支持SCA,但是我们的确有这个计划。

⑵ 通过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)禁用定位功能

阅读全文

与javavpn连接相关的资料

热点内容
文件夹怎么不重名 浏览:406
linuxyum安装java 浏览:248
java数字计算 浏览:283
java按钮文字 浏览:639
python列表互换位置 浏览:337
sw怎么删除定向命令 浏览:757
php包含数组元素 浏览:666
安卓系统开发app需要什么 浏览:730
ssh2项目源码 浏览:288
三星提供了什么服务器地址 浏览:903
阿里云轻量应用服务器60元 浏览:160
微信公众号支付java 浏览:217
虾皮用的什么服务器 浏览:144
拍照的app哪个好用 浏览:890
方舟编译器2022 浏览:770
一般情况下源码注释量 浏览:743
18号命令 浏览:871
我的世界如何将材质包加在服务器里 浏览:413
缝纫pdf 浏览:408
软硬件系统算法 浏览:121