newbieからバイナリアンへ

newbieからバイナリアンへ

コンピュータ初心者からバイナリアンを目指す大学生日記

binary

【PBA 2.0】Binary Instrumentation ~ INT 3 & Trampoline Approach ~

0. イントロ バイナリに任意の処理を行うコードを付与することを instrumentation という (洋書で勉強している+もともとの知識が乏しいため、対応する日本語がわからない。このような単語は他にも複数あるが別に対応する日本語を探す必要もないためそのまま…

【HelloWorld part.7】システムコール/ラッパの簡単なまとめ

// 【参考書籍】 ハロー“Hello, World"OSと標準ライブラリのシゴトとしくみ 坂井 弘亮 1.概略 リンカとローダの本は一通り読み終わったため (環境の違いがめんどくさくなって後ろ1/5は読むだけにした。 またGOT/PLTの部分は重要そうで繰り返し呼んだがまだ…

【リンカとローダ part.6】ビルトイン関数を完全に使わずプログラムを書こうとした

// 【参考書籍】リンカ・ローダ実践開発テクニック 坂井弘亮 1.概略 参考書籍もいよいよ架橋で 簡易リンカを自作するところまで来た しかし制作するリンカは簡易的なもので ダイナミックリンクには一切対応していない 故にその準備として ライブラリを一切使…

【リンカとローダ part.4】自作ツール(link_nouse)-外部参照されていない関数・変数をダンプ

// 【参考書籍】リンカ・ローダ実践開発テクニック 坂井弘亮 1.作成プログラム 複数のオブジェクトファイルを引数に取り それらがリンクされたとして 外部から参照されない関数・引数のシンボル名一覧を表示する すなわち前回までで言ってきた 「リンクされ…

【リンカとローダ part.3】続・リンクされているが使われていないシンボル

【参考書籍】リンカ・ローダ実践開発テクニック 坂井弘亮 1.使う関数の関係 前回の記事で 「リンクされているが使われていない関数・変数」 を探索するプログラムの話をしたが 本を読み進めるとそれについて言及していた 関数について話題にする 以下の4つの…

【リンカとローダ part.2】自作elf_nouseを作ろうとしたけど

1.解析プログラム // 前回の最後に言及した 「リンクされているけど利用されていない関数や変数の一覧を作成するツール」 を製作してみようとした /* elf_nouse.c 2019.02.26 リンクはされているが使用されていない変数・関数の一覧を表示する */ #include<stdio.h> #</stdio.h>…

【リンカとローダ part.1】ELFファイルの構造

// 【参考書籍】リンカ・ローダ実践開発テクニック 坂井弘亮 0.Outline 上記参考書籍を読んでの簡単な覚書 1.ELFファイルとは ELF(Executable and Linkable Format)は実行形式の一種 UNIX系ではこれまでa.out形式が主流であったが 最近ではELFが事実上の標準…

【HelloWorld part.6】ラッパーを見つけ出す

【参考書籍】ハロー“Hello, World” OSと標準ライブラリのシゴトとしくみ 坂井弘亮 1.一旦整理 C言語を初めて勉強した時から C言語自体には画面に文字を出力する能力もない という文言を何度も目にしてきた そういった処理はOSが行なっているのだが (実際に…

【HelloWorld part.5】割り込み処理の引数渡し

参考書籍】ハロー“Hello, World” OSと標準ライブラリのシゴトとしくみ 坂井弘亮 0.そういえば VDSOを無効にしたことでINT $0x80が実行されるのが _dl_sysinfo_Int80の内部に変わったのだが 本では依然として__kernel_vsyscalの内部のままだ VDSOを一旦有効に…

【HelloWorld part.4】コアダンプを読む〜entry_32.Sを見る

【参考書籍】ハロー“Hello, World” OSと標準ライブラリのシゴトとしくみ 坂井弘亮 1.コアダンプを読む 前回まででhelloプログラムが出力をした時にコアダンプをさせることにした 吐き出されたコアダンプをgdbで読んだのが以下の通り coredump 標準出力をTTY…

【HelloWorld part.3】トレーサの解読

// 【参考書籍】ハロー“Hello, World” OSと標準ライブラリのシゴトとしくみ 坂井弘亮 1.トレーサの解読 主にコメントでの説明となります #include<stdio.h> #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<signal.h> #include<sys/ptrace.h> #include<sys/wait.h> #include<sys/user.h> #define TRUE 1 int main(int argc,char *</sys/user.h></sys/wait.h></sys/ptrace.h></signal.h></unistd.h></stdlib.h></stdio.h></stdio.h>…

【HelloWorld part.2】CentOSへの移行からptrace()

【参考書籍】ハロー“Hello, World” OSと標準ライブラリのシゴトとしくみ 坂井弘亮 ※プログラム等のスクリーンショットに関しては ・オープンソースは自由に使用する ・helloプログラムなど一般に普及していて著作権が認められないであろうものは自由に使用す…

【HelloWorld part.1】導入〜printf()の追跡

【参考書籍】ハロー“Hello, World” OSと標準ライブラリのシゴトとしくみ 坂井弘亮 1.動機 同作者の大熱血!アセンブラを700ページくらいまで読んで アセンブラの読み方やらスタックの使い方等々はなんとなくわかったものの 実行ファイルのことだったりリンカ…