首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测Java代理、JVMTI等

如何检测Java代理、JVMTI等
EN

Stack Overflow用户
提问于 2010-05-05 22:05:04
回答 7查看 3.1K关注 0票数 4

当在不受控制的机器上运行时,如何保护Java环境?怎样才能阻止某人创建java代理或原生JVMTI代理,并转储字节码或重写类以绕过许可和/或其他安全检查?有没有办法检测是否有代理正在从Java代码运行?从JNI?从JVMTI代理?

EN

回答 7

Stack Overflow用户

发布于 2010-05-06 13:59:01

如果你不能控制环境,那么我很抱歉--你真的被卡住了。是的,您可以通过某种cmdline嗅探来查找微不足道的JVMTI代理,但这是您最不需要担心的。考虑一下java/lang/Classloader.fineClass()被直接破坏的情况。如果你拥有这个盒子,这很容易做到-只需在rt.jar中替换.class文件即可。事实上,在JVMTI出现之前,这是分析器和监视工具检测Java代码的典型方式。

回到JVMTI -- "Late attach“特性还允许动态加载JVMTI代理。当您第一次扫描时,这可能不会发生。

底线-如果有人可以更改磁盘上JRE的字节,他们就可以做任何他们想做的事情。这符合道德吗,不是吗?他们会被抓到吗?有可能,但你永远不会赢得这场战争。

票数 2
EN

Stack Overflow用户

发布于 2010-05-06 20:50:44

看起来我可以在一些自定义JNI本机代码中使用检查的组合。

1.)cmd线路嗅探以搜索座席。2.)确保cmd-line参数-XX:+DisableAttachMechanism存在。(这将防止用户连接到我正在运行的虚拟机)

票数 1
EN

Stack Overflow用户

发布于 2010-05-05 22:07:58

我记得我曾经做过一个几乎是静默的Java Agent。我想你最好找个端口扫描器或者其他什么东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2773892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档