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包,也可以采用遠程調試的方式進行審計。會更簡單快捷定位一些。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM