Java逆向基础之导出内存中的类二
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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进程
[email protected]:~$ 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
保存并退出,重启系统。
(如果你纳闷为什么要这么改的话,可以好好看下那个文件里面的注释)
以上是关于Java逆向基础之导出内存中的类二的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向加壳技术简介 ( 动态加载 | 第一代加壳技术 - DEX 整体加固 | 第二代加壳技术 - 函数抽取 | 第三代加壳技术 - VMP / Dex2C | 动态库加壳技术 )