59
アセンブラ初心者が SECCON2014 バイナリ100の問題を解説してみた

アセンブラ100 さきゅりてぃ発表用

  • Upload
    boropon

  • View
    499

  • Download
    0

Embed Size (px)

Citation preview

Page 1: アセンブラ100 さきゅりてぃ発表用

アセンブラ初心者がSECCON2014

バイナリ100の問題を解説してみた

Page 2: アセンブラ100 さきゅりてぃ発表用

自己紹介

●名前宮城友裕

●趣味TVゲームモンスターハンターシリーズには余裕で1千時間以上持っていかれている

Page 3: アセンブラ100 さきゅりてぃ発表用

自己紹介

●普段の仕事プリンタ上で動くソフトウェアの開発

仕事ではアセンブラはほとんど触りませんたまーに障害解析で見ることを強いられます

Page 4: アセンブラ100 さきゅりてぃ発表用

そんなわけで

アセンブラについてほぼ素人です

( ・´ー・`)

Page 5: アセンブラ100 さきゅりてぃ発表用

それでは本題へ

Page 6: アセンブラ100 さきゅりてぃ発表用

目次

● SECCON2014バイナリ100の問題って何?● 問題を解説する

Page 7: アセンブラ100 さきゅりてぃ発表用

SECCON2014バイナリ100の問題って何でしょう?

Page 8: アセンブラ100 さきゅりてぃ発表用

SECCON2014バイナリ100の(ry

SECCONとは、「セキュリティコンテスト」のことでチーム戦のハッカー大会ですhttp://2014.seccon.jp/

出題される内容は、ネットワーク、暗号、プログラグ、Web、バイナリ、etcと幅広いです

問題は、難しさによって得点が違います

バイナリは100点と300点の問題がありましたが、今回は簡単な方の100点の問題を解説します

Page 9: アセンブラ100 さきゅりてぃ発表用

それでは問題の解説に入ります

Page 10: アセンブラ100 さきゅりてぃ発表用

まずは問題を見てみます

Page 11: アセンブラ100 さきゅりてぃ発表用

問題を解説する

01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

以下のコードをアドレス 01361040 から実行した。表示される数値を答えよ。

x86アセンブラを読もう

Page 12: アセンブラ100 さきゅりてぃ発表用

問題を解説する

01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

以下のコードをアドレス 01361040 から実行した。表示される数値を答えよ。

x86アセンブラを読もう

ここにprint文がある

ここがスタート地点

Page 13: アセンブラ100 さきゅりてぃ発表用

問題を解説する

01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

以下のコードをアドレス 01361040 から実行した。表示される数値を答えよ。

x86アセンブラを読もう

サブルーチン

ここがスタート地点

サブルーチンを呼び出す

Page 14: アセンブラ100 さきゅりてぃ発表用

ざっと問題を見たところで、1ステップずつ解説します

Page 15: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012

0016

0020

0024

0028 EBPの値(スタート時)

EBPはデータ領域の基点。これから使うスタック領域の一番下のアドレスが入っている

Page 16: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012

0016

0020

0024

0028 EBPの値(スタート時)

EBP ESPの値(0028)

ESPはスタックの一番上のアドレスが入っている

Page 17: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012

0016

0020

0024 ECXの値(スタート時)

0028 EBPの値(スタート時)

EBP ESPの値(0028)

ECXはループ回数をカウントするために使用される領域

Page 18: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012

0016

0020

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0028)

Page 19: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012

0016

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0028)

Page 20: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0028)

CALL命令は戻り先をスタックに積む

Page 21: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0028)

Page 22: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

Page 23: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

Page 24: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008 0

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

Page 25: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 1

0008 0

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

Page 26: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 1

0008 0

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

Page 27: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 1

0008 0

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 1

Page 28: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

Jump if Great左が右より大きければジャンプ

レジスタ

スタック

0000

0004 1

0008 0

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 1

Page 29: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 1

0008 0

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 1

EDX 0

Page 30: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 1

0008 0

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 1

EDX 1

Page 31: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 1

0008 1

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 1

EDX 1

Page 32: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 1

0008 1

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 1

EDX 1

Page 33: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 1

0008 1

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 1

EDX 1

EAX 1

EAXは計算に使用される

Page 34: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 1

0008 1

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 1

EDX 1

EAX 2

Page 35: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 2

0008 1

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 1

EDX 1

EAX 2

Page 36: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 2

0008 1

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 2

EDX 1

EAX 2

Page 37: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 2

0008 1

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 2

EDX 1

EAX 2

Page 38: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 2

0008 1

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 2

EDX 1

EAX 2

Page 39: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 2

0008 1

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 2

EDX 3

EAX 2

Page 40: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 2

0008 3

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 2

EDX 3

EAX 2

Page 41: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 2

0008 3

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 2

EDX 3

EAX 2

Page 42: アセンブラ100 さきゅりてぃ発表用

ここで、整理します

Page 43: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 2

0008 3

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 2

EDX 3

EAX 2

0004のスタックの値→初期値は1→1ずつ足される→0xFFと比較している

0008のスタックの値→初期値は0→今の値にスタック0004の値が足される

Page 44: アセンブラ100 さきゅりてぃ発表用

はっと気付きます

Page 45: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 2

0008 3

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 2

EDX 3

EAX 2

つまりこの部分は、

sum = 0;

for (i = 1; i <= 0xFF; i++) {sum += i;

}

という処理を行っている

Page 46: アセンブラ100 さきゅりてぃ発表用

ちょっと計算します

Page 47: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 0xFF

0008 32640

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 0xFF

EDX 32640

EAX 32640

Page 48: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 0xFF

0008 32640

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0004

ECX 0xFF

EDX 32640

EAX 32638

Page 49: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004 0xFF

0008 32640

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP ESPの値(0012)

ESP 0012

ECX 0xFF

EDX 32640

EAX 32638

ESPの値をサブルーチンに入った直後の値に戻すことで、サブルーチン内で使用したスタック領域を解放している。

Page 50: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012 EBPの値(0028)

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP 0028

ESP 0012

ECX 0xFF

EDX 32640

EAX 32638

サブルーチンに入った直後のEBPの値がスタックに保存してあるので、popして戻す。

Page 51: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012

0016 戻り先(01361052)

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP 0028

ESP 0012

ECX 0xFF

EDX 32640

EAX 32638

Page 52: アセンブラ100 さきゅりてぃ発表用

サブルーチンから無事帰還しました。

Page 53: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012

0016

0020 0xFF

0024 0

0028 EBPの値(スタート時)

EBP 0028

ESP 0024

ECX 0xFF

EDX 32640

EAX 32638

Page 54: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012

0016

0020

0024 32638

0028 EBPの値(スタート時)

EBP 0028

ESP 0024

ECX 0xFF

EDX 32640

EAX 32638

Page 55: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012

0016

0020

0024 32638

0028 EBPの値(スタート時)

EBP 0028

ESP 0024

ECX 0xFF

EDX 32640

EAX 32638

Page 56: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012

0016

0020 32638

0024 32638

0028 EBPの値(スタート時)

EBP 0028

ESP 0024

ECX 0xFF

EDX 32640

EAX 32638

Page 57: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012

0016

0020 32638

0024 32638

0028 EBPの値(スタート時)

EBP 0028

ESP 0024

ECX 0xFF

EDX 32640

EAX 32638

Page 58: アセンブラ100 さきゅりてぃ発表用

問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8

レジスタ

スタック

0000

0004

0008

0012

0016

0020 32638

0024 32638

0028 EBPの値(スタート時)

EBP 0028

ESP 0024

ECX 0xFF

EDX 32640

EAX 32638

引数に”FLAG{%d}\n”と32638を渡してprintfをコールする

Page 59: アセンブラ100 さきゅりてぃ発表用

問題

以下のコードをアドレス 01361040 から実行した。

表示される数値を答えよ。

解答

32638