以下の内容はhttps://iogi.hatenablog.com/entry/20070731/1185902828より取得しました。


intercept拡張モジュールをいじってみる (予告編)

前回の続きで、次は「pre-intercept時に引数を捕まえるようにする」を実装するつもり (その次は「書き換えられるようにする」、ですね)なのです。

実装するには、interceptのターゲットに渡されている引数をコピーして、call_user_functionしているときに渡せばよい。お、これは、func_get_args系の関数の変な動きから、EG(argument_stack)を中途半端に眺める - おぎろぐはてなで解析したところで、EG(argument_stack)からとってくれば行けるんじゃん?と思ったら勘が外れたので、ちと GDBでトレースしたり zend_call_function あたりのソースコードを読んでるところ。今日はタイムアップ。
てっきり EG(argument_stack).top_elements - 2 あたりに引数詰められてるかと思ったら、入ってなかった。勘違いだといいのだけれど。。んー。

今日分かったことは、zend_call_functionからzend_execute (intercept_executeでフックしたやつ)を呼んでいるということ、そして、zend_call_functionの中で、argument_stackをいじっていること。




以上の内容はhttps://iogi.hatenablog.com/entry/20070731/1185902828より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14