I次のコードを持っている:ここではスタックフレームのアセンブリコードを分析するには?
Func5() { ShowStackTrace();}
Func4() { Func5();}
は私が持っているスタックトレースです -
**Frame for Func5**
EIP : 403899
Function name : Func5
EBP : 12ff0c
ESP : 12fed0
Return address : 4038c8
CS : 23
DS : 9998
ESI : 0
EDI : 0
**Frame for Func4**
Function name : Func4
EBP : 12ff14
ESP : 12ff14
CS : 23
DS : 9998
ESI : 0
EDI : 0
は今、私はそれ
ff ff ff 88 E8
上記の最初の5つのバイトを得たFunc5のリターンアドレスを使用して
E8の存在は、これがコールステートメント(near)であり、次の4バイトがアドレスの計算に使用されることを意味します。 CALL Func5を読むと、EIPは4038c3になります。このデータからFunc5の開始アドレスを計算するにはどうすればよいですか? 他のデータが必要かどうか教えてください。これが遠距離コール(opcode - FF)の場合も、計算はどのように行われますか?
あなたはもちろん正しいです。最終アドレスはどのように取得するのですか?それは何に相対的ですか? CS? – Bruce
だからここでは0x403850になります。クール。どうもありがとう。 FAR CALL(opcode - FF)の計算方法は?私は今あなたにすべてのポイントを与えるように感じる! – Bruce
また、この資料についてはどこで読むことができますか? – Bruce