Java逆向基礎之導出內存中的類二
阿新 • • 發佈:2018-04-23
Javadump內存類我們有時候可能會遇到暫時無法使用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:~$ 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逆向基礎之導出內存中的類二