Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support Android #26

Open
oldratlee opened this issue May 24, 2015 · 11 comments
Open

support Android #26

oldratlee opened this issue May 24, 2015 · 11 comments
Labels

Comments

@oldratlee
Copy link
Member

No description provided.

@oldratlee
Copy link
Member Author

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

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

@wangkaisdu
Copy link

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

@oldratlee
Copy link
Member Author

@wangkaisdu 多谢反馈

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

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

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

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

@wangkaisdu
Copy link

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

@oldratlee
Copy link
Member Author

@wangkaisdu 好!有空就来聊聊。

相关资料

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

@wangkaisdu
Copy link

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

@oldratlee
Copy link
Member Author

顶!同感~

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

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

@oldratlee
Copy link
Member Author

@wangkaisdu

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

关于

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

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

@wangkaisdu
Copy link

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

@oldratlee
Copy link
Member Author

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

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

@wangkaisdu
Copy link

我明白了,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants