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包,也可以采用远程调试的方式进行审计。会更简单快捷定位一些。

java对jar包的复制_Java安全之jar包调试技巧相关推荐

  1. java程序中日志jar包的使用_java – 如何使用jar文件中的Liquibase changelog

    我目前在我的application.properties中有以下内容: liquibase.change日志=类路径:/db/changelog/db.changelog-master.xml 该文件 ...

  2. java关于包的叙述_Java中构造方法,包的引用,final,super等词的概括

    final修饰的类不允许被继承. 一个类不能既是final的,又是abstract的.因为abstract的主要目的是定义一种约定,让子类去实现这种约定,而final表示该类不能被继承,两者矛盾. f ...

  3. 在java中字符流怎么复制_Java 使用字符流拷贝数据

    使用字符流拷贝数据时,需要注意在文件末尾处的数据,因为最后一次读取的长度不会刚好与数组input长度相同,所以需要引入新的变量来存储每次读取的长度. import java.io.File; impo ...

  4. java判断zip包的编码格式_java解压zip包出现乱码

    解决思路: 首先判断需要解压的文件是否存在或路径是否正确,接着判断路径是否存在,若不存在则创建路径,然后判断压缩文件是否合法,最后设置文件名称编码为"GBK"即可. 免费在线教学视 ...

  5. java开发常用jar包_java开发常用jar包

    mail.jar与activation.jar 里面包含了activation.jar和mail.jar两个包.通过里面的类的调用便可以达到发送电子邮件的目的 commons-beanutils.ja ...

  6. java 多种类型文件复制_java多种文件复制方式以及效率比较

    1.背景 java复制文件的方式其实有很多种,可以分为 传统的字节流读写复制FileInputStream,FileOutputStream,BufferedInputStream,BufferedO ...

  7. java第三方包_java客户端引入第三方包方法

    将java作为客户端运行(即通过java -jar client.jar方式运行),如有引用第三方jar包,不作特殊处理是无法正确运行,会抛出ClassNotFoundException异常. 如以下 ...

  8. java bat运行jar文件_windows下bat批量运行jar包

    1. 在cmd下,java -jar ***.jar 运行后窗口不能关,但如果有多个jar,则会有多个cmd的窗口,很难看 2. 在cmd下,javaw -jar ***.jar运行后窗口可以关,但如 ...

  9. java jpcap 抓包并分析_java利用Jpcap实现抓包

    1.准备工作 Jpcap是一个可以监控当前网络情况的中间件,弥补了java对网络层以下的控制, 可以达到抓包的效果. Jpcap运行需要依赖winCap和Jpcap的dll动态库和Jpcap.jar包 ...

最新文章

  1. 面向量产的3D目标与车道线检测方法
  2. Handler 系列二:如何通信
  3. Weka学习二(聚类算法)
  4. IT民工系列——c#计算任意四则混合运算(非函数版)
  5. 科大星云诗社动态20211008
  6. canvas 将图形设置为button_将Excel设置为存放文件的文件夹:自动提醒直观摘要免压缩发微信...
  7. javascript 获取应用程序根路径
  8. async-validator 表单验证两种数据的解决方案
  9. 自己动手 CentOS-6.5 安装Oracle11g R2
  10. 【渗透测试】cookie注入笔记
  11. 奇幻RPG(角色技能 与 Strategy模式)
  12. Java多线程(二)——多线程基本特性
  13. php自动加载规范 PSR4 (Thinkphp)
  14. Jeesit下面form:select的二级联动
  15. 学习进度总结----蔡强130201201
  16. autojs自动添加QQ群成员好友脚本,QQ爆粉源码
  17. 2.2.7Python-异常处理
  18. SQL Server 端口映射访问方法
  19. Redis ~ Lua。
  20. Mycat 读写分离+分库分表

热门文章

  1. .NET Core开发者的福音之玩转Redis的又一傻瓜式神器推荐
  2. CAP带你轻松玩转ASP.NETCore消息队列
  3. 如何在Linux上使用VIM进行.Net Core开发
  4. 老司机实战Windows Server Docker:5 Windows Server Dockerfile葵花宝典
  5. 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
  6. mysql数据库项目化教程郑小蓉_MySQL数据库项目化教程(高等职业教育“十三五”规划教材(软件技术专业))...
  7. XunSearch的使用
  8. 个人中心的html,个人中心.html
  9. 连接局域网的SQL Server数据库配置
  10. C/C++之函数返回值为指针或者是引用时常见错误总结