2019-04-01から1ヶ月間の記事一覧
GCCの拡張機能を使って行っています. #include <stdio.h> __attribute__((constructor)) void foo() { printf("hello, before main\n"); } __attribute__((destructor)) void bar() { printf("hello, after main\n"); } int main(int argc, char const *argv[]) { pri</stdio.h>…
Non-blocking Cache キャッシュメモリの構成法の一つであり, キャッシュミスが起こり, それが処理されている最中でも, cache アクセスを可能にする. さらにメモリレベルの並列性(Memory-level parallelism) を使用することで, 同時に複数のキャッシュミスを…
自己書き換えコードとは, 実行時に自分自身の命令を書き換えるコードのことである. 以下のコードでは, foo() 関数の i++ の命令を i += 2に自己書き換えしている. 順に説明していくと, まず mprotect() 関数でfoo関数の命令が書かれているページに読み, 書き…
Dynamic Binary Instrumentation (DBI) は実行時にバイナリに命令を挿入することによって, プログラムの実行トレースから情報を取り出す技術であり, それを用いたツールの一つである Intel Pin を使っていく. 以下で簡単に使っていく手順をメモしていく. 公…