3

x86_64 シェルコードの次のアセンブリがあります。

call writer

writestring db "ABCD",0x0d0a

writer:
pop rsi

これをコンパイルすると、objdump -d が表示されます (簡潔にするために一部を省略しています)。

  4000a4:   e8 06 00 00 00          callq  4000af <writer>

00000000004000a9 <writestr>:
  4000a9:   42                      rex.X
  4000aa:   42                      rex.X
  4000ab:   42                      rex.X
  4000ac:   42 0a 0d 5e 48 31 d2    rex.X

00000000004000af <writer>:
  4000af:   5e                      pop    %rsi

callq の後ろから 3 つの null を削除したいと思います。近くに電話する、遠くに電話するなどはしていません。誰でも提案できますか?

すみません、よくわかりませんでした。call を使用して、直後に rsi にポップできる writestr のアドレスを保存します。手でオフセットを把握するために rip にアクセスできません (またはできますか?)。

4

1 に答える 1