为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
Java

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

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

dumpclass项目地址

https://github.com/hengyunabc/dumpclass

下载地址

http://central.maven.org/maven2/io/github/hengyunabc/dumpclass/0.0.2/dumpclass-0.0.2.jar


使用dumpclass之前需要配置path

编辑~/.bashrc

sudo 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:~$ jps4965 Jps2361 org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar2605 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

保存并退出,重启系统。

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



点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消