zoukankan      html  css  js  c++  java
  • Java安全之jar包调试技巧

    Java安全之jar包调试技巧

    调试程序

    首先还是创建一个工程,将jar包导入进来

    调试模式的参数

    启动中需要加入特定参数才能使用debug模式,并且需要开放调试端口

    JDK5-8:

    -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
    

    JDK9+:

    -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:5005
    

    suspend=n表示的是启动Java应用时是否立即进入调试模式,suspend=y表示启动即暂停,suspend=n则表示启动时不需要暂停。address=*:5005表示的是Debug监听的服务地址和端口,根据需求修改,上述配置会监听到0.0.0.0

    参数说明

    (1) transport

    指定运行的被调试应用和调试者之间的通信协议,它由几个可选值:

    dt_socket:主要的方式,采用 socket 方式连接
    dt_shmem:采用共享内存方式连接,仅支持 Windows 平台(暂未验证)
    (2) server

    当前应用作为调试服务端还是客户端,默认为 n。

    如果你想将当前应用作为被调试应用,设置该值为 y;如果你想将当前应用作为客户端,作为调试的发起者,设置该值为 n。

    (3) suspend

    当前应用启动后,是否阻塞应用直到被连接,默认值为 y。

    在大部分的应用场景,这个值为 n,即不需要应用阻塞等待连接。一个可能为 y 的应用场景是,你的程序在启动时出现了一个故障,为了调试,必须等到调试方连接上来后程序再启动。

    (3) address

    暴露的调试连接端口,默认值为 8000。

    (4) onthrow

    当程序抛出设定异常时,中断调试。

    (5) onuncaught

    当程序抛出未捕获异常时,是否中断调试,默认值为 n。

    (6) launch

    当调试中断时,执行的程序。

    (7) timeout

    该参数限定为 java -agentlib:jdwp=… 可用,单位为毫秒ms。

    当 suspend = y 时,该值表示等待连接的超时;当 suspend = n 时,该值表示连接后的使用超时。

    IDEA配置远程调试

    下断点后能直接停下来。

    class文件夹调试

    其实也比较简单,只需要将他打包成一个jar包或者是war包,然后执行如上操作就好了。

    cd src
    jar -cvf test.jar *
    

    总的来说调试还是比较重要,其实不仅仅是jar包的调试,比如还有Spring Boot(Spring Boot以jar包启动调试与上面类似)、Tomcat、weblogic这些。假设条件允许情况下,做一些审计时候,比如war包,也可以采用远程调试的方式进行审计。会更简单快捷定位一些。

    WX:TG9yaTI1NDgyNjYxNDU= 欢迎各位师傅来一起做技术交流
  • 相关阅读:
    【mysql】关于binlog格式
    【linux】关于TCP三次握手和四次挥手
    【nginx】负载均衡和proxy的配置
    【PHP】$_POST, $HTTP_RAW_POST_DATA, and php://input
    【nginx】关于gzip压缩
    【nginx】配置文件的优化
    【集合框架】JDK1.8源码分析之TreeMap(五)
    【集合框架】JDK1.8源码分析之IdentityHashMap(四)
    【集合框架】JDK1.8源码分析之HashMap & LinkedHashMap迭代器(三)
    【集合框架】JDK1.8源码分析之LinkedHashMap(二)
  • 原文地址:https://www.cnblogs.com/nice0e3/p/14381851.html
Copyright © 2011-2022 走看看