2013-05-24から1日間の記事一覧

逆アセンブルで遊んでみる(5)自動変数の領域を16バイトを超えて確保

「自動変数の領域を16バイトを超えて確保」です。 void func(void) { int i = 0x7F; int j = 0x8F; int k = 0x9F; int l = 0xAF; int m = 0xBF; } 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: 83 ec 20 sub $0x20,%esp 6: c7 45 ec 7f 00 00 00 movl $0x7f,-…

逆アセンブルで遊んでみる(4)自動変数に値をセット

「自動変数に値をセット」です。 /* asm004.c */ void func(void) { int n = 0x7F; } 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: 83 ec 10 sub $0x10,%esp 6: c7 45 fc 7f 00 00 00 movl $0x7f,-0x4(%ebp) d: c9 leave e: c3 ret3行目で、スタックポインタ…

逆アセンブルで遊んでみる(3)signed long longの最大値を返す関数

「signed long longの最大値を返す関数」です。 unsigned long long func(void) { return 0x7FFFFFFFFFFFFFFFLL; } 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: b8 ff ff ff ff mov $0xffffffff,%eax 8: ba ff ff ff 7f mov $0x7fffffff,%edx d: 5d pop %ebp…

逆アセンブルで遊んでみる(2)signed intの最大値を返す関数

「signed intの最大値(2,147,483,647)を返す関数」です。 int func(void) { return 0x7FFFFFFF; } 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: b8 ff ff ff 7f mov $0x7fffffff,%eax 8: 5d pop %ebp 9: c3 ret intの最大値は「0x7FFFFFFF」ですが、バイナ…

逆アセンブルで遊んでみる(1)0を返す関数

「定数0を返す関数」の逆アセンブルです。 /* asm001.c */ int func(void) { return 0; } 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: b8 00 00 00 00 mov $0x0,%eax 8: 5d pop %ebp 9: c3 ret asm000.oとの差分を拾ってみると… ・eaxレジスタに対するmov命…

逆アセンブルで遊んでみる(0)何もしない関数

「フィーリングで読むアセンブラ入門」の発売が待ち遠しくて、いかにも発狂しそうですが、発売日まで、自分の環境で逆アセンブルして我慢しようということで…。今回のソースコードは、こんな内容。内部で何も行わない関数の逆アセンブルを行ってみます。 /* …

2の冪乗

well-knownな2の冪乗は、丸暗記してしまいましょう。 毎日、呪文のように唱えていれば、自然に暗記します(^ ^;) intの最大値は、「ニジュウイチオクヨンセンナナヒャクヨンジュウハチマンサンゼンロッピャクヨンジュウナナ」とかね。 2の冪乗 10進数 2^0 1…