Java逆向基礎之Byteman的運行後註入
運行後註入
1.查看java進程,找到目標進程的pid
jps
2.安裝pid
bminstall <pid>
3.裝載規則腳本
bmsubmit -l tracing.btm
//指定監聽端口默認是9091
//bmsubmit -p <port> -l tracing.btm
4.卸載規則腳本
bmsubmit -u tracing.btm
//指定監聽端口
//bmsubmit -p <port> -u tracing.btm
規則文件如果用到了自定義的擴展Helper類,需要先加載擴展類的jar包
1.裝載jar包
bmsubmit -s helpers.jar
2.裝載規則腳本
bmsubmit -l tracing.btm
Java逆向基礎之Byteman的運行後註入
相關推薦
Java逆向基礎之Byteman的運行後註入
java byteman 運行後註入 Byteman可以在目標程序運行後進行註入,命令如下運行後註入1.查看java進程,找到目標進程的pidjps2.安裝pidbminstall <pid>3.裝載規則腳本bmsubmit -l tracing.btm//指定監聽端口默認是9091/
Java逆向基礎之Byteman的擴展Helper類
java 逆向 byteman 上一篇文章提到我們可以在規則文件中調用自己寫的擴展Helper類看一個例子新建目標項目和擴展Helper類項目,結構如下其中目標項目使用上一篇博客的第二個例子的代碼擴展Helper類項目需要用到第三方jar,在C:\byteman-download-4.0.2\li
Java逆向基礎之初識Byteman
java逆向bytemanByteman的是由Jboss發明主要是為了支持多線程和多JVM測試的自動化。Byteman規則語言提供了一組標準的內置操作,這些操作支持特定的上述類別中的任務為了簡化測試自動化,Byteman已經與兩種流行的測試集成框架JUnit和TestNG在逆向中,我們也可以利用Byteman
Java逆向基礎之常量入棧指令
java入棧指令本文參考:http://www.vuln.cn/7115 常量入棧指令有iconst、bipush、sipush、ldc、ldc2_w分別對應不同的使用場景以下兩個表簡單總結了使用場景八大基本類型場景表常量類型常量範圍指令×××int-1~5iconst_0~ iconst_5iconst_m
Java逆向基礎之操作數棧
java操作數棧指令本文參考:http://www.vuln.cn/7115本地變量和操作數棧本地變量數組(Local Variable Array)本地變量的數組包括方法執行所需要的所有變量,包括 this 的引用,所有方法參數和其他本地定義的變量。對於那些方法(靜態方法 static method)參數是
Java逆向基礎之函數
java 函數 本文參考http://www.vuln.cn/7115 本文提到的函數(function)和方法(method)為同一個意思例子1,方法名的定義public class HalfRandom { public static double f() { return Math.random
Java逆向基礎之靜態變量存取
javaputstatic本文參考http://www.vuln.cn/7117 註意:靜態變量static可以多次賦值,不能多次賦值的是final static線性同余偽隨機數算法LCG 算法數學上基於公式:X(n+1) = (a * X(n) + c) % m其中,各系數為:模m, m > 0系數a
Java逆向基礎之條件跳轉位運算循環
java分支循環位運算本文參考:http://www.vuln.cn/7117 條件跳轉的例子,絕對值public class abs { public static int abs(int a) { if (a<0) return -a;
Java逆向基礎之數組
java數組本文參考:http://www.vuln.cn/7116 本文參考:《Reverse Engineering for Beginners》Dennis Yurichev著數組簡單的例子創建一個長度是10的整型的數組,對其初始化public class ArrayInit { public sta
Java逆向基礎之字符串
java 字符串 本文參考:http://www.vuln.cn/7116本文參考:《Reverse Engineering for Beginners》Dennis Yurichev著字符串字符串也是對象,和其他對象的構造方式相同。(包括數組)第一個例子public class stringhell
Java逆向基礎之異常
java異常本文參考:http://www.vuln.cn/7116本文參考:《Reverse Engineering for Beginners》Dennis Yurichev著異常由之前月份處理修改的例子//清單1IncorrectMonthException.javapublic class Incor
Java逆向基礎之簡單類
java類本文參考:http://www.vuln.cn/7118本文參考:《Reverse Engineering for Beginners》Dennis Yurichev著類簡單類例子public class test { public static int a; private static in
Java逆向基礎之簡單的補丁
java補丁crackme本文參考:http://www.vuln.cn/7118本文參考:《Reverse Engineering for Beginners》Dennis Yurichev著本文需要用到IDA簡單的補丁看一個例子public class nag { public static void
Java逆向基礎之動態生成類
Java動態生成類為什麽有這個東西,一方面時AOP框架的需要,另一方面是增加軟件逆向的難度動態生成類的技術目前大體上分為兩類,一類是通過操作字節碼框架如cglib/Javassist去實現,另一類就是JNI方式,調用dll/so庫,內存中動態還原。這兩種方式都能實現隱藏類看一個Javassist動態生成類的例
Java逆向基礎之初識javaagent
javajavaagent初識首先說一下javaagent是什麽javaagent是一種能夠在不影響正常編譯的情況下,修改字節碼。在逆向中javaagent可以完成對類的攔截和增強。看一個例子在Eclipse新建如下MyAgent結構的項目MyAgent.java文件內容package com.vvvtime
Java逆向基礎之打印所有類名
java輸出類名在上一篇博文中提到javaagent可以在執行main方法之前輸出內容,這一篇我們仍然用它在 Java SE 5 及其後續版本當中,開發者可以在一個普通 Java 程序(帶有 main 函數的 Java 類)運行時,通過 –javaagent 參數指定一個特定的 jar 文件(包含 Instr
Java逆向基礎之導出內存中的類一
java反編譯為什麽需要這個,因為在之前的博文中提到,為了增加逆向的難度,部分軟件會對部分關鍵方法和類進行隱藏,所以我們需要把這個類從內存中拿出來。本文介紹使用javaagent的方法,下一篇介紹dumpclass,兩種方法各有利弊。本文需要用到第三方jar為:javassist-3.20.0-GA.jar,
Java逆向基礎之導出內存中的類二
Javadump內存類我們有時候可能會遇到暫時無法使用javaagent的情況,如服務器上的Web應用重啟太耗時,這是我們可以考慮用下面的方法。使用dumpclass,目前dumpclass在Windows上表現不佳,建議在Linux上使用dumpclass項目地址https://github.com/hen
Java逆向基礎之JDB動態調試
javaJDB調試本文參考:https://docs.oracle.com/javase/8/docs/technotes/tools/windows/jdb.htmlJDB在有源代碼的時候可以實現調試遠程機器上的java程序,但是在逆向中源碼很難分析出來,不過還是能夠調試得到一部分信息的本文主要獲取兩個信息
Java逆向基礎之ZKM字符串混淆與還原
java ZKM 字符串混淆 為了防止靜態分析,ZMK在混淆時對輸出的字符串使用對稱加密方法進行加密早期的ZKM只在靜態代碼塊的時候進行簡單的異或加密,後續版本使用了流加密技術進行二次加密看一個簡單的字符串輸出例子package com.vvvtimes.main; public class M