タグ

ブックマーク / www.nminoru.jp/~nminoru (3)

  • How to read/write memory in an external process

    作成日:2002.7.14 デバッガやハッキングツールの 1種には実行中の外部プロセスの持っているメモリを読み書きするこのとできるものがある。 ここでは Windows / Linux / Solaris の 3 種類の OS で、外部プロセスからのメモリの読み込みを実現する方法を説明する。 重要な点を挙げると、 Solaris と Windows では外部プロセス(この場合 java[.exe]) を 停止させることなくメモリイメージを覗くことが可能。 Linux では標準の機能のみを使うと、ターゲットなるプロセスを 停止させずにメモリを読むことができない。 シグナルによって対象プロセスを止める必要がある。 Linux でも kernel の loadable module を自前で書けば、 停止させずのメモリ覗きは可能。 Windows Windows の場合には、プロセス ID から

  • スタックオーバーフローのハンドリング (Stack Overflow Handling)

    作成日:2004.04.12 更新日:2006.02.19 更新記録 (2004.04.12) 3/6、 3/11、 3/13 の日記をまとめて作成。 (2004.05.07) 文章を修正。サンプルコードを追加。 (2005.01.20) alternative → alterante に修正。 (2005.02.13) 追記を記述。 (2006.02.17) linux_stack_info.cpp の実装に誤りがあったので修正。 (2006.02.19) BSD 系OS でのスタック領域情報の取得の仕方を追加 初めに C/C++ でプログラムをしているとつい忘れてしまうのがスレッドのスタックオーバーフローの問題。 最近の OS はスレッド当たり 2〜8MB のスタック領域を持っているため、よほどのことがない限りスタックが溢れてしまうことはない。 だが、再帰や alloca を積極的に使

    iww
    iww 2009/11/30
    スタックオーバフローからの復帰方法とか
  • ビットを数える・探すアルゴリズム

    作成日:2004.05.04 修正日:2012.09.01 このページは 2003年の9/11、9/28 の日記をまとめて作成。 はじめに PowerPC 系や Alpha などには population count と呼ばれるレジスタ中の立っているビット数を数える命令が実装されている。 集合演算を行うライブラリを実装したい場合などに重宝しそうな命令である。 職場でこの population count 命令について話をしているうちにビットカウント操作をハードウェアで実装するのは得なのか?という点が議論になった。 CPU の設計をできるだけシンプルにするためには、複雑で使用頻度の低い命令は極力減らした方がよい。 例えば SPARC は命令セット中にビットカウント演算があるが、CPU 内には実装しないという方針をとっている(population 命令を実行すると不正命令例外が発生し、それを

  • 1