bytecode-manipulation

    1熱度

    2回答

    我有一箇舊的庫(大約在2005年),它執行字節碼操作,但不會觸摸堆棧圖。因此,我的jvm(java 8)抱怨說它們是無效的類。解決這些錯誤的唯一方法是使用-noverify運行jvm。但這對我來說不是一個長期的解決方案。 有沒有辦法在類已經生成後重新生成堆棧映射?我看到ClassWriter類有一個選項來重新生成堆棧映射,但我不確定如何讀取一個字節類並重寫一個新的。這是可行的嗎?

    0熱度

    1回答

    我想在我的應用程序啓動過程中增加一些代碼和附加功能。整個設置本身工作正常,但有一點我認爲javassist可能會生成錯誤的代碼。 我正在做一個特定類的具體方法,我之前檢查,返回值實際上是類型StringBuilder或StringBuffer。 ctMethod.insertAfter("$_.SOME_METHOD(); $_.SOME_FIELD = <...>;"); SOME_METH

    1熱度

    1回答

    我試圖在運行時使用字節碼修改來修改Android應用程序。我知道這是可能的修改應用程序執行前創建的.class文件,但我想修改它,而應用程序正在運行。我不確定是否有可能。我見過ASMDEX就像是一個可能的工具,但它基於Dalvik虛擬機,我不知道它在ART虛擬機中是否正常工作,我認爲不是。事實上,我不確定它可以在運行時修改應用程序。 是否可以在運行時使用字節碼修改來修改Android應用程序?如果

    0熱度

    2回答

    我們有一個模糊的類,我們需要使用bytebuddy進行增強。我們基本上需要重新定義一種方法。子類似乎沒有奏效(代碼沒有執行)。重新啓動工作,但在我們攔截的方法中,我們需要調用超類(現在像在「繼承」中講超類)方法。 class Parent { public void connect(){ ... }; } class WeNeedToHackThis exten

    0熱度

    1回答

    的方法變基((類型) - > {})是未定義AgentBuilder.Default public static void premain(String arg, Instrumentation inst){ new AgentBuilder.Default() .rebase(type -> type.getSimpleName().equals("Calculato

    0熱度

    1回答

    是否有方法轉換/修改由自定義註釋註釋的類和方法? #字節碼操作(但對於dex) 這樣做的最佳方式是什麼? 代理不是我正在尋找的合適方式。

    0熱度

    1回答

    我正在嘗試使用Javassist編寫簡單的工具代理。 public class Agent implements ClassFileTransformer { protected Instrumentation instrumentation; protected ClassPool classPool; public Agent(Instrumentation

    0熱度

    1回答

    我正在處理一個項目,其中需要在執行期間訪問方法參數。 是否可以使用字節好友框架打印方法參數?任何使用javaagent的示例代碼都非常感謝。

    3熱度

    1回答

    環境 我正在使用需要字節碼檢測的第三方庫。執行字節碼檢測的工具需要一些描述文件,這些文件必須與編譯的.class文件一樣處於相同的文件夾結構中。這些文件只在編譯時需要。 問題 我想gradle這個地方會暫時在同一個文件夾中的所有文件(資源和類),然後創建該文件夾一個罐子。但是在組裝jar之前,似乎gradle有兩個不同的資源和類文件位置。 就像之前提到的那樣,代碼工具的第三方工具需要描述文件與類文

    4熱度

    3回答

    我正在爲Dalvik字節碼寫入工具,該代碼爲各種方法調用條目執行一些日誌記錄。具體來說,在各種方法調用站點上,我將插入一組指令來收集參數,將它們放入一個Object[]數組中,然後將其傳遞給日誌記錄功能。 這一切都很好,我已經實現並獲得了大部分應用程序的所有功能。但我遇到一個特別令人費解的Dalvik驗證錯誤: java.lang.VerifyError: Verifier rejected cl