java 导出内存中的类_Java逆向基础之导出内存中的类二

我们有时候可能会遇到暂时无法使用javaagent的情况,如服务器上的Web应用重启太耗时,这是我们可以考虑用下面的方法。

使用dumpclass,目前dumpclass在Windows上表现不佳,建议在Linux上使用

dumpclass项目地址

下载地址

使用dumpclass之前需要配置path

编辑~/.bashrcsudo gedit ~/.bashrc

在export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

后加export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:${JAVA_HOME}/lib/tools.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/sa-jdi.jar

使环境变量生效source ~/.bashrc

使用方法

先用jps查看运行的java进程root@machine:~$ jps

4965 Jps

2361 org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar

2605 AppServer

我们需要dump的进程为AppServer,进程id记下来

之后dumpAppServer进程中以Employee结尾的类java -jar dumpclass-0.0.2.jar 2605 *Employee out --classLoaderPrefix

2605为dump的进程,*Employee表示以Employee结尾的类,out为导出的目录

第一次dump可能会遇到的问题,提示"Can't attach to the process"cd /etc/sysctl.d

该目录下有一个名为“10-ptrace.conf”的文件,sudo nano 10-ptrace.conf

以超级用户权限打开该文件,并将里面的一行kernel.yama.ptrace_scope = 1修改为kernel.yama.ptrace_scope = 0

保存并退出,重启系统。

(如果你纳闷为什么要这么改的话,可以好好看下那个文件里面的注释)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值