java-dns-cache-manipulator icon indicating copy to clipboard operation
java-dns-cache-manipulator copied to clipboard

support Android

Open oldratlee opened this issue 10 years ago • 11 comments

oldratlee avatar May 24 '15 11:05 oldratlee

See Android 4.4InetAddress类源代码,和JRE一样也包含了Java-side DNS cache的功能。
PS: 实现和JRE的不同。

以目前对Android开发的了解,目前没有dns-cache-manipulator的需求,这个Issue暂时挂起吧。 :smile_cat:

oldratlee avatar Jul 06 '15 13:07 oldratlee

移动端劫持严重,无缝实现dns替换是很有需求的

wangkaisdu avatar Jul 07 '15 01:07 wangkaisdu

@wangkaisdu 多谢反馈

看了一下Androiddns cache,从Android 4开始主要交由c lib

java libdns cache只由静态字段维护了LRU Map大小16项,时长2秒。

要想想怎么hack :smile: 有好的思路欢迎交流~

PS:修改vm dns cache可以对应用使用透明,值得搞一下。

oldratlee avatar Jul 07 '15 15:07 oldratlee

我也在找方法,改天去你工位交流下。

wangkaisdu avatar Jul 08 '15 05:07 wangkaisdu

@wangkaisdu 好!有空就来聊聊。

相关资料

  • 国内最大的域名解析商DNSPodapp开发者推出了D+(http dns)
  • android-httpdns ,提供了D+的封装。封装方式是提供了一个工具方法,完成常用操作。工具方法的实现需要主动调用httpdns
    • 不透明,即走D+工具方法的实现(应用实现)需要主动调用httpdns
    • 因为不透明,其它使用域名的网络库 不能直接用上D+的域名解析能力,即需要一个一个修改或特殊配置网络库。

oldratlee avatar Jul 08 '15 13:07 oldratlee

我也主要是想完善httpdns.所以想搞个无缝埋点的,现在的方式用户需要操心的事很多。比如代理,https就玩不转

wangkaisdu avatar Jul 08 '15 13:07 wangkaisdu

顶!同感~

目前HttpDns的使用方式,确实是用户不方便友好、功能不全。值得深入研究搞一把~

修改Android系统类InetAddress/AddressCache是一种可以 无缝的方式。咨询了 @Trinea ,提到 alibaba/dexposed 可以修改系统类,可以研究一下后面的解法。

oldratlee avatar Jul 08 '15 13:07 oldratlee

@wangkaisdu

我也主要是想完善httpdns.所以想搞个无缝埋点的,现在的方式用户需要操心的事很多。比如代理,https就玩不转

关于

看了一下Android的dns cache,从Android 4开始主要交由c lib: java lib的dns cache只由静态字段维护了LRU Map大小16项,时长2秒。

可以考虑C实现(NDK),做成Android LibAAR),这个应该难度不大,有空就搞一下 :smile_cat:

oldratlee avatar Nov 01 '15 05:11 oldratlee

你的意思是hook住c层的代码吗?还是?

wangkaisdu avatar Nov 02 '15 01:11 wangkaisdu

是的。 hook C的代码,或者改C内存里的DNS Cache的数据。

你可以一起找找Android c是如何管理DNS Cache的资料。

oldratlee avatar Nov 02 '15 04:11 oldratlee

我明白了,

wangkaisdu avatar Nov 02 '15 06:11 wangkaisdu