如何判断在IDEA中程序正在运行或正在Debug

admin 2024年10月29日00:30:28评论8 views字数 1756阅读5分51秒阅读模式

如何判断在IDEA中程序正在运行或正在Debug

给大家分享一个有趣又无用的东西,如何判断在IDEA中程序正在运行或正在Debug

在这个之前我们首先需要了解一个类ManagementFactory ,它是 Java 标准库中的一个类,它提供了访问运行时系统管理接口的工厂方法。通过 ManagementFactory 类,可以获取包括操作系统、内存、线程、类加载器等在内的多种系统管理信息。

一些常用的用途包括:

  1. 获取运行时信息:可以通过 ManagementFactory.getRuntimeMXBean() 方法获取与 Java 虚拟机的运行时信息相关的 bean,包括虚拟机的名称、虚拟机的启动时间、虚拟机的系统属性等。
  2. 获取操作系统信息:可以使用 ManagementFactory.getOperatingSystemMXBean() 方法获取与操作系统相关的 bean,包括 CPU 数量、系统负载等信息。
  3. 获取内存信息:可以使用 ManagementFactory.getMemoryMXBean() 方法获取与内存相关的 bean,包括堆内存使用情况、非堆内存使用情况等。
  4. 获取线程信息:可以使用 ManagementFactory.getThreadMXBean() 方法获取与线程相关的 bean,包括线程数量、线程状态等。

因此我们通过 ManagementFactory.getRuntimeMXBean().getInputArguments() 即可获得所有 JVM 参数

通过下面这样简单的代码我们可以

1234
List<String> inputArguments = ManagementFactory.getRuntimeMXBean().getInputArguments();  for (String arg : inputArguments) {      System.out.println(arg);}

以我的电脑为例,普通运行时

12
-javaagent:/Applications/myapp/IntelliJ IDEA.app/Contents/lib/idea_rt.jar=51347:/Applications/myapp/IntelliJ IDEA.app/Contents/bin-Dfile.encoding=UTF-8

debug时

123
-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:51362,suspend=y,server=n-javaagent:/Users/y4tacker/Library/Caches/JetBrains/IntelliJIdea2021.3/captureAgent/debugger-agent.jar-Dfile.encoding=UTF-8

我们不难发现在运行时与debug时,注入了不同的Agent对象,因此我们便可以利用这个差异性去判断程序是在运行还是在debug,当然为了减小检测的动静如果我们不使用ManagementFactory怎么办?

解决方法也很简单,既然注入了不同的Agent那么就必然在加载时就有着不同的类

因此通过下面这样简单的几行代码,就能解决这个问题啦

12345678
try {    Thread.currentThread().getContextClassLoader().loadClass("com.intellij.rt.debugger.agent.CaptureAgent");    System.out.println("我在debug呢");}catch (java.lang.ClassNotFoundException e){    Thread.currentThread().getContextClassLoader().loadClass("com.intellij.rt.ant.execution.AntMain2");    System.out.println("我没在debug呢");}

下面来看看效果,直接运行

如何判断在IDEA中程序正在运行或正在Debugdebug运行如何判断在IDEA中程序正在运行或正在Debug

简单但是有趣,接下来我们便可以结合之前提到的混淆方案,继续给IDEA做更定向的投毒,同时我们也可以通过这样一串简单的代码去尝试阻止别人在IDEA中运行或者调试我们的代码

- source:y4tacker

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月29日00:30:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   如何判断在IDEA中程序正在运行或正在Debughttp://cn-sec.com/archives/3314502.html

发表评论

匿名网友 填写信息