java逆向调试_eclipse 逆向调试 java程序--- 调试|远程调试(含本地)|爆破软件

本文介绍了如何使用eclipse进行Java逆向调试,包括快捷键、确定目标软件运行在Java中、远程调试设置以及通过反编译器和jd-GUI进行静态分析。此外,还探讨了通过修改字节码实现爆破软件的方法。
摘要由CSDN通过智能技术生成

一、常用快捷键

全局 单步返回 F7

全局 单步跳过 F6

全局 单步跳入F5

全局 单步跳入选择 Ctrl+F5

全局 调试上次启动 F11

全局 继续 F8

全局 使用过滤器单步执行 Shift+F5

全局 添加/去除断点 Ctrl+Shift+B

全局 显示 Ctrl+D

全局 运行上次启动 Ctrl+F11

全局 运行至行 Ctrl+R

全局 执行 Ctrl+U

二、    如何确定目标软件跑到了java中

2.1界面提示由awt.dll提供;

2.2 进程启动参数

三、    java远程调试目标软件(本地调试也可)

3.1 创建一个空的java的工程,备用;

3.2 获取远程软件的启动参数

两种方法:

第一种,使用OD调试起来,到起进程的地方断得到启动参数;

另一种,比较快得到进程启动参数的方式:使用Process Explorer,找到进程右键属性,可以看到启动参数commandLine,这个就是exe的启动参数;

3.3 使用启动参数,编写批处理

用启动参数编写批处理;将\\ 改为\  ;

3.3.1 设置目标软件为服务器端,eclipse为客户端 的调试

将-Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000 写在启动参数中。

dt_socket:使用的通信方式

server:是主动连接调试器还是作为服务器等待调试器连接

suspend:是否在启动JVM时就暂停,并等待调试器连接;

address:地址和端口,地址可以省略,两者用冒号分隔,如果不写地址,默认为localHost。

此时,eclipse作为客户端,选择连接的类型为 “标准(套截字连接)”

“调试配置界面”Debug Configurations,新建Remote Java Application,设置好后,点击调试按钮,将eclipse调试起来;可以在调试界面,看到“正在等待VM连接到端口8000”

另外,也可以设置eclipse为服务器端,设置监听,设置目标软件为客户端,这样,原厂启动的时候,eclipse 就会断在main函数处;

设置eclipse 为服务器端:“甲壳虫“-调试配置--- ”“远程java引用程序“---”“选项目JAveTest” ----选择连接的类型为 “标准(套截字帧听)”-连接属性会自动变为  Port = 8000;

-agentlib:jdwp=transport=dt_socket,address=127.0.0.1:8000,suspend=y

如果是远程调试,address要写上IP;

3.3.2 -jar 【参考jar】

将参考使用的AAAA.jar写在-jar后面,这样启动eclipse调试就能到这个jar里面去;

实际上运行的就是-jar 后面的这个jar包;

3.4    将jar文件导入到工程中

使用eclipse ,新建一个工程,在工程中添加jar,进行调试;

工程名,右键属性,java构建路径,库中选择“添加外部jar“,选择需要调试的jar即可;如果当前路径下的jar删掉了 ,工程属性中就会显示缺少;

或者使用jd-GUI,直接可以打开jar包,可以看到.class;

3.5    eclipse 需要有反编译器才行,

设置反编译器---“首选项”-反编译器 里面---调试设置-下的两项都打勾,

“以注释方式输出原始行号信息”、”根据行号对齐代码以便于调试”,这样就能在代码中看到有行的注释,

例如:/*  86 */     this.value = value;

否则,不能下断调试。

4、    使用jd-GUI 打开jar,可以将java代码导出来,用UE搜索关键字,静态分析代码;

5、    java修改目标软件字节码,达到爆破软件的目的

5.1    使用高级语言java修改,修改后需要重新编译成jar能行(没有试过,听说比较麻烦);

5.2    使用dirtyJOE修改字节码(修改字节码),修改后放回jar,可以直接使用;

具体步骤: 将jar包后缀改成zip,使用解压工具将需要修改的.class 文件拿出来,使用工具dirtyJOE修改字节码逻辑,然后再将修改后的class放回到zip中,然后将zip改为jar后缀,即可;

注意:dirtyJOE 只能修改字节码,不能删除字节码;不能使用goto 0xA7,ireturn 0xAC,return 0xB0;

常见的修改:函数常量参数(立即数)、跳转目标地址、ife|ifne(0x99 改为0x9A)、ifge 0x9c | ifle  0x9e、If_icmplt  0xA1  改为 if_icmpgt  0xA3

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值