ゲームの機能をリバース エンジニアリングしようとしていますが、ちょっと混乱しています。私はリバースエンジニアリングにかなり慣れていないので(ところでollydbgを使用しています)、すべてのトリックと詳細についてまだよく知りません。
とにかくここに私の問題があります。この関数は、ゲーム内のアイテムを拾うときに呼び出されます。次に、アイテムの値を計算し、この値をスコアに追加します。関数が呼び出される前に、アイテムの ID であると確信している値がプッシュされます。これは私を混乱させるコードです:
SHL ESI,7
MOV CX,WORD PTR DS:[EDX+ESI+42]
ESI = アイテムの ID EDX = 定数値 FE56A0
EDX (FE56A0) はアイテムの配列の開始点であり、ESI はアイテムのインデックスであり、42 はアイテムが保持する値のインデックスであると推測していました。ESI を 7 だけ左にビット シフトするため、これは少し奇妙です。ESI が増加すると、ビット シフトされた値は直線的に増加しません。
したがって、EDX が配列の開始を表し、ESI がインデックスである場合、配列内の項目は同じサイズにはなりません。このコードの意味は私を困惑させています。
このコードが何を表しているか、誰にもわかりませんか?