1. 程式人生 > >Java逆向基礎之Byteman的擴展Helper類

Java逆向基礎之Byteman的擴展Helper類

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類