【软件逆向-有jar包无源码情况下使用IDEA远程调试jar包程序的方法】此文章归类为:软件逆向。
需求场景
可以接触Java程序的运行环境,可以得到jar包,但是不能得到源码,并且程序很复杂,依赖多,配置杂,不好构建本地调试环境。在这样的场景下,如何进行远程调试?
环境介绍
要调试的程序demo.jar
这是一个普通的java程序,功能是打印"Hello, World!",然后循环计数。
正常启动命令:
IDEA环境
无源码情况下IDEA远程调试JAR包方法
1.加jdwp参数使demo.jar程序支持远程调试
1 | java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005 -jar demo.jar
|
参数说明:
参数 |
解释 |
-agentlib:jdwp |
使用Java Debug Wire Protocol(JDWP)来允许远程调试 |
transport=dt_socket |
指定传输协议为socket |
server=y |
设置为服务器模式。将等待一个调试客户端(如IntelliJ IDEA或Eclipse)连接到它。 |
suspend=n |
如果设置为y,则JVM在启动时会挂起(暂停),直到调试客户端连接。这里设置为n,意味着JVM将立即开始执行,而不会等待调试客户端连接。 |
address=0.0.0.0:5005 |
指定监听的IP地址和端口 |
2.随便建个Java工程,在依赖库里加入demo.jar
使用IDEA新建一个Java控制台窗口程序
1 | NewProject - >Java - >Create project from template - >...
|
在依赖库中加入demo.jar
1 | File - >Project Structure - >Libraries - >点击 + 号 - >Java - >选择demo.jar - >...
|
执行完上述操作之后,demo.jar被加到依赖库中。
3.添加远程调试配置(Remote JVM Debug)
1 | Edit Configurations - >点击 + 号 - >选择Remote JVM Debug - >配置远程IP与调试端口 - >...
|
4.下断点开始调试
1 | 在依赖库中点开demo.jar - >选中想要调试的 class 文件 - >在想要调试的地方下断点 - >选择远程调试配置 - >开始调试
|
触发了断点
为了展示动态调试能力,这里把i设置为111111并继续运行(在i上右键选择Set Value或者快捷键F2可修改变量的值)。
发现i已经被动态改变
最后于 28分钟前
被Jtian编辑
,原因:
更多【软件逆向-有jar包无源码情况下使用IDEA远程调试jar包程序的方法】相关视频教程:www.yxfzedu.com