http://pwnable.kr/play.phpのuafがc++で書かれていたので読む必要が有ったので今後のためにもメモ程度に覚書を。今回はgdbのdisasとかobjdumpでアセンブリを読む時にnewはどのように呼んでいるるのかとかのめもです。 読んでいるバイナリのタイプはLinuxのELF64です。 基本的にはcHumanというクラスが有って、このクラスを継承したManとWomanというクラスがあります。main関数では最初にManとWomanのクラスのインスタンスをnewして作成します。そして、virtual関数のintroduce()を呼びます。 やっている処理のc++のコードを単純に書くとこんな感じになります。 Human *m = new Man("hoge", 1); m->introduce(); Humanクラスはこのようなクラスです。 class Human{ p
![c++で書かれたコードのアセンブリの読み方めも - φ(・・*)ゞ ウーン カーネルとか弄ったりのメモ](https://cdn-ak-scissors.b.st-hatena.com/image/square/e032c1bfccc82df463f73a695bc6cc926a5f1729/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fm%2Fmasami256%2F20161225%2F20161225214740.png)