无源码情况下动态调试混淆的java程序
逆向工程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程序相关推荐
- 继承情况下构造方法的调用过程-java
继承情况下构造方法的调用过程-java super关键字:可以看做是直接父类对象的引用.每个子类对象都会有一个super引用 指向其直接父类对象.super可以:1.调用成员变量 super.colo ...
- 在装有Anaconda的情况下,使用默认的python程序方法
在装有Anaconda的情况下,使用默认的python程序方法 终端运行/usr/bin/python 而不是直接运行python posted on 2017-04-04 16:56 Spark_5 ...
- Thymeleaf——在不覆盖现有class属性的情况下动态添加CSS class解决方案
问题描述 th:class动态添加CSS class会覆盖现有class属性,导致class较多时,表达式过长. 官方文档 https://www.thymeleaf.org/doc/tutorial ...
- 分享下多年积累的对JAVA程序员成长之路的总结
文章来自贴吧.原文地址:http://tieba.baidu.com/p/2017010306 我也搞了几年JAVA了,由于一向懒惰,没有成为大牛,只是一普通程序猿,不爱玩社交网站,不爱玩微博,唯独喜 ...
- JDK命令之java -- 用来执行字节码文件,即用来执行Java程序
文章目录 一.命令介绍 二.用法格式 三.常用选项 四.常用选项详解 -client,-server -hotspot -classpath,-cp -classpath -D=value -verb ...
- arthas调试tomcat中java程序
需求:项目由原来的jar包改成war包,使用tomcat发布,修改之后发现arthas无法使用. 记录使用过程 1.执行java -jar arthas-boo.jar,提示 Can not find ...
- JDB附加调试线上JAVA程序
前面介绍过用Eclipse远程调试JAVA程序,见Eclipse远程调试JAVA程序,但现场环境中通常没有安装Eclipse,这时候就可以用jdb来附加进程调试了. 1)首先要保证使用以下命令启动JA ...
- SAP CRM Fiori搜索没有命中情况下的调试细节
Created by Wang, Jerry, last modified on Apr 16, 2015
- eclipse调试第一个java程序
1.设置断点 2.调试 3. 4. 5.调试
最新文章
- pyDes 实现 Python 版的 DES 对称加密/解密--转
- 计算力学专业和计算机专业区别,力学类包括哪些专业
- IntelliJ IDEA 工具篇之如何切换 git 分支
- 雷神开机logo更改_黑武士再度来袭 雷神第三代911黑武士游戏台式机评测
- android APP优化知识图谱
- 天融信防火墙web配置_天融信协议转换交付系统震撼发布——IPv4/IPv6融合改造利器...
- 斐波那契数列的递归与迭代写法比较
- 地铁译:Spark for python developers --- 搭建Spark虚拟环境 4...
- SylixOS 内存管理-通过地址反查页面控制块-vmmArea.c
- memcached-session-manager配置
- 小米网站短信验证码接口的轰炸防护
- 线性表13|约瑟夫问题 – 数据结构和算法18
- Windows使用MinGW编译ffmpeg
- spring源码系列(一)——spring循环引用
- 富豪刑警 富豪刑警修斯库界面效果实现
- 计算机课程教改论文,关于计算机基础课程教学改革论文(2)
- Day 1.《鸟哥的linux私房菜》
- 已解决UserWarning: Manipulating `w3c` setting can have unintended consequences.
- 2017lol服务器维修,LOL2017年8月15日更新维护到几点 8.15更新内容
- 深度学习系列11:ReID概述和资源
热门文章
- SpringBoot整合Redis集群版本问题
- 知识图谱最新权威综述论文解读:时序知识图谱部分
- 不要在意七十亿分之一对另七十亿分之一的看法
- NET(C#):await返回Task的async方法
- Python运算符与编码
- javascript如何处理很多数据,类似分页切换
- kendo grid输入框验证方法
- 操作系统学习笔记-2.1.1.进程的定义、组成、组织方式、特征
- python管理系统web版_Python学生管理系统(web网页版)-Go语言中文社区
- maven 公共模块依赖_Maven 子模块 依赖 springboot 子模块的问题