C/C++
BINARY HACKS p300まずは写経。 taka@ubuntu:~$ more aop.c #include __attribute__((no_instrument_function)) void __cyg_profile_func_enter(void *func_address, void *call_site) { printf("function start %p %p\n", func_address, call_site); } __at…
BINARY HACKS p311straceってのは、 ptrace(PTRACE_SYSCALL, ...)でシステムコールの入り口と出口をフックして、システムコールの引数と戻り値を出力することです。 とのことです。AOPっぽい?普通にHello, Worldを書いて試してみる。 taka@ubuntu:~$ more h…
以前のエントリ 一つのプロセスが開けるファイルの数はいくつ?(分からずじまい) で、リミットは2048なのに、アプリケーションから開けるファイルは2045である。という疑問が放置されたままでしたが、なんのことはない、標準入力、標準出力、標準エラース…
BINARY HACKS p225やっぱり写経。 taka@ubuntu:~$ more gethostname.c #include #include int gethostname(char *name, size_t len) { char *p = getenv("FAKE_HOSTNAME"); if(p == NULL) { p = "localhost"; } strncpy(name, p, len - 1); name[len - 1] = …
BINARY HACKS p65今度は逆。 書籍中では、いきなりboostとか出てきてしまってツライので、さっきの例の逆をやってみる。 taka@ubuntu:~$ more dbg2.cpp // // dbg2.cpp // #include extern "C" { void dbg(const char *s) { std::cout ubuntu:~$ more sample…
BINARY HACKS p62とりあえずそのまま写経。 taka@ubuntu:~$ more dbg.c // // dbg.c // #include void dbg(const char *s) { printf("Log: %s\n", s); } taka@ubuntu:~$ more sample.cpp // // sample.cpp // extern "C" void dbg(const char *s); int main(…
BINARY HACKS p30BINARY HACKSアウトプットモードに入りますが、難しいので、多分かなりの部分読み飛ばすと思います。。まずは静的ライブラリ。 taka@ubuntu:~$ more add.h int add(int a, int b); taka@ubuntu:~$ more add.c int add(int a, int b) { retur…