標籤:java 逆向 byteman
上一篇文章提到我們可以在規則檔案中調用自己寫的擴充Helper類
看一個例子
建立目標項目和擴充Helper類項目,結構如下
其中目標項目使用上一篇部落格的第二個例子的代碼
擴充Helper類項目需要用到第三方jar,在C:\byteman-download-4.0.2\lib找到byteman.jar複製過來
TraceHelper.java代碼如下
package com.vvvtimes;import org.jboss.byteman.rule.Rule;import org.jboss.byteman.rule.helper.Helper;public class TraceHelper extends Helper {protected TraceHelper(Rule rule) {super(rule);}public boolean myprint(String message) {return super.traceln("!!! IMPORTANT EVENT !!!" + message);}}
將這個項目匯出為BytemanHelperDemo.jar
目標項目裡的規則檔案tracing.btm內容如下,其中HELPER項指定自訂了Helper類名
RULE trace return value1CLASS com.vvvtimes.MainMETHOD add(int,int)HELPER com.vvvtimes.TraceHelperAT EXITIF trueDO myprint("Return value: " +$!)ENDRULE
編譯
javac com/vvvtimes/Main.java
運行
java com.vvvtimes.Main
加helper類的規則檔案檢查,注意多了個-cp BytemanHelperDemo.jar
bmcheck -cp . -cp BytemanHelperDemo.jar -v scripts/tracing.btm
byteman運行
java -cp ".;BytemanHelperDemo.jar;%CLASSPATH%" -javaagent:%BYTEMAN_HOME%\lib\byteman.jar=script:scripts/tracing.btm com.vvvtimes.Main
運行結果如下
如果我們將上面的目標項目打包成jar,則命令可以改成如下形式
目標項目打包成的jar名為BytemanDemo2.jar
運行
java -cp "BytemanDemo2.jar;%CLASSPATH%" com.vvvtimes.Main
加helper類的規則檔案檢查
bmcheck -cp BytemanDemo2.jar -cp BytemanHelperDemo.jar -v scripts/tracing.btm
byteman運行
java -cp "BytemanDemo2.jar;BytemanHelperDemo.jar;%CLASSPATH%" -javaagent:%BYTEMAN_HOME%\lib\byteman.jar=script:scripts/tracing.btm com.vvvtimes.Main
運行結果
Java逆向基礎之Byteman的擴充Helper類