Java逆向基礎之Byteman的擴展Helper類
阿新 • • 發佈:2018-05-03
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 value1 CLASS com.vvvtimes.Main METHOD add(int,int) HELPER com.vvvtimes.TraceHelper AT EXIT IF true DO 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類