《星空 》指令碼簡單分析

2021-08-24 19:20:38 字數 1214 閱讀 9213

指令碼是編譯型的指令碼,雖然沒加密,但不去除錯的話就很難分析。

指令碼第乙個dword是乙個偏移,跳轉到指令碼的那個偏移處的第乙個雙字是指令碼的入口偏移,遊戲從那個偏移處開始對指令碼進行解釋。

下面這段東西就是指令操作的過程。跟vmp那指令解碼的過程很像,嗯。

[quote]

0043f890 > 8b86 1c080000 mov eax, dword ptr [esi+81c] ;當前指令碼的offset

0043f896 . |8b4e 04 mov ecx, dword ptr [esi+4] ;指令碼資料基址

0043f899 . |0fb60c01 movzx ecx, byte ptr [ecx+eax] ;取指令

0043f89d . |0fb6d1 movzx edx, cl

0043f8a0 . |83c0 01 add eax, 1

0043f8a3 . |8986 1c080000 mov dword ptr [esi+81c], eax

0043f8a9 . |8b0495 00bd47>mov eax, dword ptr [edx*4+47bd00] ;取指令的處理過程

0043f8b0 . |8bce mov ecx, esi

0043f8b2 . |ffd0 call eax ;處理指令

0043f8b4 . |80be 10080000>cmp byte ptr [esi+810], 0

0043f8bb .^\74 d3 je short 0043f890

[/quote]

目前我就觀察到0x01到0x26的各個指令(而且還不完全)占用的位元組數,對於各個欄位的作用大概不必深究,只知道幾個跟文字處理有關的指令便可。

目前找到的指令占用空間為:

單位元組指令:

0x08,0x09,0x19,0x1a,0x21,0x22,0x23,0x26

雙位元組指令(第乙個位元組為指令碼,後面乙個位元組為運算元,下同)

0x0c,0x10

三位元組指令:

0x01,0x03,0x0b,0x0f,0x15

雙字指令:

0x16

多位元組指令:

0x07:後面接了13個位元組,不知道自己有沒有看漏眼orz

0x0e:字串指令,後面乙個位元組是字串的長度,假設為n,則接著的n個位元組的內容都是字串的內容。這個字串可以是對白可以是角色名稱可以是資源名可以是……

就這樣,剩下的懶得分析了。

flash 呼叫 指令碼 Flash指令碼 星空效果

flash 呼叫 指令碼 creating a starfield effect is easy to begin,download the sample files here.1.create a small star shape,and convert it to a movie clip.gi...

分析log的簡單perl指令碼01

logasny.pl perl w my logname e tmp ldfs log fw 4 single ok.log my logname e tmp ldfs log fw 12 single lost.log my ionum 0 my lazyionum 0 my lazyionum3...

c 簡單的動態銀河星空繪製(類應用)

話不多說直接貼 1 include 2 include 3 include 4 5 define maxstar 500 星星總數67 class star8 18star star 1926 27void star move 2839 putpixel x,y,color 40 4142 主函式 ...