逆向工程JAVA通常是非常简单的,因为优秀的JAVA二进制反编译器已经存在多年。类似于jd-gui工具和恢复java二进制文件源代码功能也做的非常出色的。在这种情况下我们需要动态调试java反编译java程序的情况下,可以从反编译导出然后导入java IDE如Eclipse作为一个新的java项目的一部分,然后通过IDE动态调试它,然而,这一切都基于没有混淆java字节码,因为大多数java ide不会编译原jvm指令,也不会允许在没有源码的情况下一步一步运行这些指令。

要解决这个问题最好的方式是能以图形化的方式去调试java字节码,接下来我们将一步一步来演示如何搭建java调试环境。

1.安装java jdk

在我之前的文章有讲,不清楚的朋友可以看这里

2.安装Eclipse

安装Eclipse一定要记住一点,下载的版本一定要注意插件支持的版本,不然会安装失败,这里我们安装keplersr1的java版本,具体在这里

3.安装插件

运行Eclipse菜单help->Eclipse Marketplace,然后在搜索栏输入"Dr.Garbage",点击GO

4. 导入即将要分析的jar包

一旦Eclipse工程重启,点击菜单FILE->New->Java Project,创建你自己所属工程

在java属性窗口,点击Libraries选项卡, 点击Add External JARs按钮,选择一个你想调试的jar包,添加到java工程编译路径里面,如下图:

一旦添加成功,则点击Finish。

5.以字节码可视化的方式打开jar包

在Pakcet Explorer选项卡里,展开工程相关libraries,找到你的jar文件。右键点击哪些你想调试的类,选择Open with Bytecode Visualizer。

6.设置断点

现在java 字节码已经可视化,现在双击设置断点到你想调试的函数位置

7.开始动态调试java字节码

无源码情况下动态调试混淆的java程序相关推荐

  1. 继承情况下构造方法的调用过程-java

    继承情况下构造方法的调用过程-java super关键字:可以看做是直接父类对象的引用.每个子类对象都会有一个super引用 指向其直接父类对象.super可以:1.调用成员变量 super.colo ...

  2. 在装有Anaconda的情况下,使用默认的python程序方法

    在装有Anaconda的情况下,使用默认的python程序方法 终端运行/usr/bin/python 而不是直接运行python posted on 2017-04-04 16:56 Spark_5 ...

  3. Thymeleaf——在不覆盖现有class属性的情况下动态添加CSS class解决方案

    问题描述 th:class动态添加CSS class会覆盖现有class属性,导致class较多时,表达式过长. 官方文档 https://www.thymeleaf.org/doc/tutorial ...

  4. 分享下多年积累的对JAVA程序员成长之路的总结

    文章来自贴吧.原文地址:http://tieba.baidu.com/p/2017010306 我也搞了几年JAVA了,由于一向懒惰,没有成为大牛,只是一普通程序猿,不爱玩社交网站,不爱玩微博,唯独喜 ...

  5. JDK命令之java -- 用来执行字节码文件,即用来执行Java程序

    文章目录 一.命令介绍 二.用法格式 三.常用选项 四.常用选项详解 -client,-server -hotspot -classpath,-cp -classpath -D=value -verb ...

  6. arthas调试tomcat中java程序

    需求:项目由原来的jar包改成war包,使用tomcat发布,修改之后发现arthas无法使用. 记录使用过程 1.执行java -jar arthas-boo.jar,提示 Can not find ...

  7. JDB附加调试线上JAVA程序

    前面介绍过用Eclipse远程调试JAVA程序,见Eclipse远程调试JAVA程序,但现场环境中通常没有安装Eclipse,这时候就可以用jdb来附加进程调试了. 1)首先要保证使用以下命令启动JA ...

  8. SAP CRM Fiori搜索没有命中情况下的调试细节

    Created by Wang, Jerry, last modified on Apr 16, 2015

  9. eclipse调试第一个java程序

    1.设置断点 2.调试 3. 4. 5.调试

最新文章

  1. pyDes 实现 Python 版的 DES 对称加密/解密--转
  2. 计算力学专业和计算机专业区别,力学类包括哪些专业
  3. IntelliJ IDEA 工具篇之如何切换 git 分支
  4. 雷神开机logo更改_黑武士再度来袭 雷神第三代911黑武士游戏台式机评测
  5. android APP优化知识图谱
  6. 天融信防火墙web配置_天融信协议转换交付系统震撼发布——IPv4/IPv6融合改造利器...
  7. 斐波那契数列的递归与迭代写法比较
  8. 地铁译:Spark for python developers --- 搭建Spark虚拟环境 4...
  9. SylixOS 内存管理-通过地址反查页面控制块-vmmArea.c
  10. memcached-session-manager配置
  11. 小米网站短信验证码接口的轰炸防护
  12. 线性表13|约瑟夫问题 – 数据结构和算法18
  13. Windows使用MinGW编译ffmpeg
  14. spring源码系列(一)——spring循环引用
  15. 富豪刑警 富豪刑警修斯库界面效果实现
  16. 计算机课程教改论文,关于计算机基础课程教学改革论文(2)
  17. Day 1.《鸟哥的linux私房菜》
  18. 已解决UserWarning: Manipulating `w3c` setting can have unintended consequences.
  19. 2017lol服务器维修,LOL2017年8月15日更新维护到几点 8.15更新内容
  20. 深度学习系列11:ReID概述和资源

热门文章

  1. SpringBoot整合Redis集群版本问题
  2. 知识图谱最新权威综述论文解读:时序知识图谱部分
  3. 不要在意七十亿分之一对另七十亿分之一的看法
  4. NET(C#):await返回Task的async方法
  5. Python运算符与编码
  6. javascript如何处理很多数据,类似分页切换
  7. kendo grid输入框验证方法
  8. 操作系统学习笔记-2.1.1.进程的定义、组成、组织方式、特征
  9. python管理系统web版_Python学生管理系统(web网页版)-Go语言中文社区
  10. maven 公共模块依赖_Maven 子模块 依赖 springboot 子模块的问题