1. 程式人生 > >Java逆向基礎之導出內存中的類二

Java逆向基礎之導出內存中的類二

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逆向基礎之導出內存中的類二