タグ

c++とbinaryに関するcrafのブックマーク (3)

  • DynamicPatcher - Runtime C++ Editing - primitive: blog

    [2013/12/25 追記] この DynamicPatcher をさらに改良し、Visual Studio のアドインとして実装した Alcantarea をリリースしました DynamicObjLoader を改良し、実用に耐えそうな実行時 C++ コード編集機能を実装しました。 C++ コードを編集してそれをリアルタイムに反映させることができます。 DynamicPatcher https://github.com/i-saint/DynamicPatcher (bin) DynamicObjLoader の時点で一応は同等機能を実現していたのですが、更新したい関数を事前にマクロで包む必要があったり、virtual 関数を持つ class はシリアライズが必要だったりと、運用上色々面倒な点がありました。 今回はそのへんが大きく改良されています。 ・前準備なしに既存のほぼ全ての関数を

    DynamicPatcher - Runtime C++ Editing - primitive: blog
  • [Program][Bin] valgrind で main 奪う - 兼雑記

    ことほどさように main は全人類の至宝 LD_PRELOAD をもってしても簡単に奪えないということは、 main 蹂躙厨の間では有名な事実なのですが、 valgrind 使うと割に簡単なことに気付きました。 いつも通り Hello, world を書きます。 #include <stdio.h> int main() { puts("('-') Hello, world!"); } で実行。 > ./a.out ('-') Hello, world!平和です。こんな時代が続けば良かったのに! 不審なコードを書きます。 #include <stdio.h> void _vgrZU_Za_main() { puts("('-') ku ku ku ..."); } 主にシンボル名が不審です。さて実行。 > LD_PRELOAD=./hook_main.so valgrind --tool

    [Program][Bin] valgrind で main 奪う - 兼雑記
  • URI Template の C++ 実装 (Xbyak による JIT 版ほか) (nakatani @ cybozu labs)

    その昔はテキスト整形ツールすらアセンブラで書くほどのバイナリアンでもあったんですが、X68000 から卒業せざるをえなくなると同時にすっかり足を洗っていたのです。 が、何の因果かこのたび、C++の世界に引き摺り込まれ、メモリやクロック数にきゅうきゅう呻吟する日々が再びやってきてしまいました……。もはやGCの無い言語でプログラミングするまい、と堅く心に誓っていたのになあ(涙)。 まあ、嘆いてばかりいても始まらない。 バイナリアンは××年ぶり(x86 の知識は 286 が最後)、C++ は実質初めて、勉強しないといけないことがたんまり。 んー中谷は何か作ってみないとわかんない人なんで、身近で手頃な題材を…… というわけで URI Template を実装してみました。調べた範囲内ではC++の実装もなさそうだし。 勉強が主目的なので、仕様は簡易に draft-01 準拠(単純な substitu

  • 1