【软件逆向-有jar包无源码情况下使用IDEA远程调试jar包程序的方法】此文章归类为:软件逆向。
需求场景
可以接触Java程序的运行环境,可以得到jar包,但是不能得到源码,并且程序很复杂,依赖多,配置杂,不好构建本地调试环境。在这样的场景下,如何进行远程调试?
环境介绍
要调试的程序demo.jar
这是一个普通的java程序,功能是打印"Hello, World!",然后循环计数。
正常启动命令:
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_JMK6DDF2T2NU26R.webp)
IDEA环境
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_FD4TS9N8NK2H6D6.webp)
无源码情况下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
|
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_E87EJRSQRS26Y7Q.webp)
参数说明:
参数 |
解释 |
-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 - >...
|
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_JNQQW2SPRYQEM4C.webp)
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_U2JRXPMGSMZ57EB.webp)
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_VGDT4NGTR5A54GB.webp)
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_QTW5P9Y24Y8KH6G.webp)
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_BVRM7P7S3FEKP89.webp)
在依赖库中加入demo.jar
1 | File - >Project Structure - >Libraries - >点击 + 号 - >Java - >选择demo.jar - >...
|
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_TWPBZBSPGY3Y3AT.webp)
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_5HG4SPZQC4J2YBH.webp)
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_P6XQFZCHW9DNTM2.webp)
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_CXWAWBYFJT9D68E.webp)
执行完上述操作之后,demo.jar被加到依赖库中。
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_6MRAWYB7KNK77XY.webp)
3.添加远程调试配置(Remote JVM Debug)
1 | Edit Configurations - >点击 + 号 - >选择Remote JVM Debug - >配置远程IP与调试端口 - >...
|
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_VKSJUPE6KHTSKUM.webp)
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_RQ3SJHZBPQ3QFFG.webp)
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_6FE2NAQBC3NZSYT.webp)
4.下断点开始调试
1 | 在依赖库中点开demo.jar - >选中想要调试的 class 文件 - >在想要调试的地方下断点 - >选择远程调试配置 - >开始调试
|
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_8YSGPCMNMYAQD26.webp)
触发了断点
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_AKC8FQXM6UVQ767.webp)
为了展示动态调试能力,这里把i设置为111111并继续运行(在i上右键选择Set Value或者快捷键F2可修改变量的值)。
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_J4RA7NWA8T5S9RM.webp)
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_YXXS9T8UUCVP5PG.webp)
发现i已经被动态改变
![图片描述](http://resources.yxfzedu.com/images/article_images/598931_SBEHS6V3EYEQ6VN.webp)
最后于 28分钟前
被Jtian编辑
,原因:
更多【软件逆向-有jar包无源码情况下使用IDEA远程调试jar包程序的方法】相关视频教程:www.yxfzedu.com