2014-04-21 38 views
0
aload_0 
    aload_0 
    sipush 2377 
    invokespecial game/engine/serverHook createGameServerSocket (I)Ljava/net/Socket; 

嗨,大家好,我上面有這段代碼。任何人都可以告訴我如何將一個長的值加載到堆棧而不是sipush支持的值?我認爲它支持32768 +/-如何使用java字節碼將長推到堆棧上?

我需要一個比這更高的數字,但我不知道如何去使用一個長的值,或者比這更大的任何東西。

任何幫助表示讚賞。

sipush 2377 <是套接字的端口,我需要更改它。

是的,我確實需要使用字節碼。

+0

您需要使用字節碼的任何特定原因?可能是惡意的原因?或者只是一些被盜和反編譯的代碼? –

+0

'sipush'只能推一個'short'。它是否被用作端口號? –

+0

沒有惡意,它只是一個遊戲,我試圖連接到使用不同的端口。我管理了其他所有內容,但無法更改端口。 @SotiriosDelimanolis是的,它意味着一個港口。但是我需要的端口超出範圍 – user3260942

回答

0

編輯,你實際需要的是一個整數,而不是一個短。爲此,請使用ldcldc_w指令。 (Ldc只能用於恆定的池索引,最高爲255.如果有疑問,請使用ldc_w,因爲它始終有效)

要將常量long推入堆棧,您需要使用ldc2_w指令。但是,由於您試圖調用的函數不需要很長時間,因此這無濟於事。

例子。這使用Krakatau彙編語法。我相信它也適用於Jasmin。

aload_0 
aload_0 
ldc_w 2377 
invokespecial game/engine/serverHook createGameServerSocket (I)Ljava/net/Socket; 
+0

這是從常量池推動。我不認爲他想要的價值是不變的池中的任何地方。 –

+0

@Jesus如果他使用匯編程序,則該值將自動添加到常量池中。 – Antimony

+1

你是對的。我假定他以其他方式編輯字節碼。 –