SlideShare a Scribd company logo
1 of 59
アセンブラ初心者が
SECCON2014
バイナリ100の問題を解説してみた
自己紹介
● 名前
宮城友裕
● 趣味
TVゲーム
モンスターハンターシリーズには
余裕で1千時間以上持っていかれている
自己紹介
● 普段の仕事
プリンタ上で動くソフトウェアの開発
仕事ではアセンブラはほとんど触りません
たまーに障害解析で見ることを強いられます
そんなわけで
アセンブラについて
ほぼ素人です
( ・´ー・`)
それでは本題へ
目次
● SECCON2014バイナリ100の問題って何?
● 問題を解説する
SECCON2014バイナリ100の問題って何でしょう?
SECCON2014バイナリ100の(ry
 SECCONとは、「セキュリティコンテスト」のことで
チーム戦のハッカー大会です
http://2014.seccon.jp/
 出題される内容は、ネットワーク、暗号、プログラ
グ、Web、バイナリ、etcと幅広いです
 問題は、難しさによって得点が違います
 バイナリは100点と300点の問題がありましたが、
今回は簡単な方の100点の問題を解説します
それでは問題の解説に入ります
まずは問題を見てみます
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}n"
01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]
01361067 . 83C4 08 ADD ESP,8
以下のコードをアドレス 01361040 から実行した。
表示される数値を答えよ。
x86アセンブラを読もう
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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文がある
ここがスタート地点
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}n"
01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]
01361067 . 83C4 08 ADD ESP,8
以下のコードをアドレス 01361040 から実行した。
表示される数値を答えよ。
x86アセンブラを読もう
サブルーチン
ここがスタート地点
サブルーチンを
呼び出す
ざっと問題を見たところで、
1ステップずつ解説します
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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はデータ領域の基点。
これから使うスタック領域の
一番下のアドレスが入っている
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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はスタックの
一番上のアドレスが入っている
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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はループ回数を
カウントするために使用される領域
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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)
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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)
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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命令は戻り先をスタックに積む
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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)
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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)
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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は計算に使用される
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
ここで、整理します
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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の値
が足される
はっと気付きます
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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;
}
という処理を行っている
ちょっと計算します
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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の値をサブルーチンに入った
直後の値に戻すことで、サブルー
チン内で使用したスタック領域を解
放している。
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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して戻す。
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
サブルーチンから無事帰還しました。
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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
問題を解説する
01361000 55 PUSH EBP
01361001 8BEC MOV EBP,ESP
01361003 83EC 08 SUB ESP,8
01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1
01361014 EB 09 JMP SHORT test.0136101F
01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]
01361019 83C0 01 ADD EAX,1
0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0136101F 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.01361032
01361027 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],EDX
01361030 ^EB E4 JMP SHORT test.01361016
01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
01361035 . 83E8 02 SUB EAX,2
01361038 . 8BE5 MOV ESP,EBP
0136103A . 5D POP EBP
0136103B . C3 RETN
...
01361040 > . 55 PUSH EBP
01361041 8BEC MOV EBP,ESP
01361043 51 PUSH ECX
01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0
0136104B 6A FF PUSH FF
0136104D E8 AEFFFFFF CALL test.01361000
01361052 . 83C4 04 ADD ESP,4
01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0136105B . 50 PUSH EAX
0136105C . 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をコールする
問題
以下のコードをアドレス 01361040 から実行した。
表示される数値を答えよ。
解答
32638

More Related Content

Viewers also liked

もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら
もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したらもしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら
もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したらabend_cve_9999_0001
 
とある診断員のSECCONオンライン予選
とある診断員のSECCONオンライン予選とある診断員のSECCONオンライン予選
とある診断員のSECCONオンライン予選zaki4649
 
おちこんだりもしたけど、私は元気です。
おちこんだりもしたけど、私は元気です。おちこんだりもしたけど、私は元気です。
おちこんだりもしたけど、私は元気です。abend_cve_9999_0001
 
Burp番外編~バープ、チョトニホンゴデキル~
Burp番外編~バープ、チョトニホンゴデキル~Burp番外編~バープ、チョトニホンゴデキル~
Burp番外編~バープ、チョトニホンゴデキル~abend_cve_9999_0001
 
Cybozu.com security challengeに参加したよ
Cybozu.com  security challengeに参加したよCybozu.com  security challengeに参加したよ
Cybozu.com security challengeに参加したよabend_cve_9999_0001
 
フリーでできるセキュリティチェック OpenVAS CLI編
フリーでできるセキュリティチェック OpenVAS CLI編フリーでできるセキュリティチェック OpenVAS CLI編
フリーでできるセキュリティチェック OpenVAS CLI編abend_cve_9999_0001
 
フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)abend_cve_9999_0001
 
フリーでできるセキュリティ インフラ(Nessus)編
フリーでできるセキュリティ インフラ(Nessus)編フリーでできるセキュリティ インフラ(Nessus)編
フリーでできるセキュリティ インフラ(Nessus)編abend_cve_9999_0001
 
ITRON仕様のOSで組み込みにトライしてみた
ITRON仕様のOSで組み込みにトライしてみたITRON仕様のOSで組み込みにトライしてみた
ITRON仕様のOSで組み込みにトライしてみたboropon
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド崇介 藤井
 
Nmap 9 truth "Nothing to say any more"
Nmap 9 truth "Nothing to say  any more"Nmap 9 truth "Nothing to say  any more"
Nmap 9 truth "Nothing to say any more"abend_cve_9999_0001
 
第8回脆弱性診断入門
第8回脆弱性診断入門第8回脆弱性診断入門
第8回脆弱性診断入門ionis111
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケットTakaaki Hoyo
 
Ctfのためのpython入門
Ctfのためのpython入門Ctfのためのpython入門
Ctfのためのpython入門shiracamus
 

Viewers also liked (20)

Burpで指定文字列を検索
Burpで指定文字列を検索Burpで指定文字列を検索
Burpで指定文字列を検索
 
もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら
もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したらもしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら
もしWebセキュリティのエンジニアがRFC7540の「HTTP/2アプリ」をWeb診断したら
 
とある診断員のSECCONオンライン予選
とある診断員のSECCONオンライン予選とある診断員のSECCONオンライン予選
とある診断員のSECCONオンライン予選
 
Nmapの真実(続)
Nmapの真実(続)Nmapの真実(続)
Nmapの真実(続)
 
RuCTFEに参加したよ
RuCTFEに参加したよRuCTFEに参加したよ
RuCTFEに参加したよ
 
おちこんだりもしたけど、私は元気です。
おちこんだりもしたけど、私は元気です。おちこんだりもしたけど、私は元気です。
おちこんだりもしたけど、私は元気です。
 
Burp番外編~バープ、チョトニホンゴデキル~
Burp番外編~バープ、チョトニホンゴデキル~Burp番外編~バープ、チョトニホンゴデキル~
Burp番外編~バープ、チョトニホンゴデキル~
 
Cybozu.com security challengeに参加したよ
Cybozu.com  security challengeに参加したよCybozu.com  security challengeに参加したよ
Cybozu.com security challengeに参加したよ
 
Not CVE-2013-xxxx
Not CVE-2013-xxxxNot CVE-2013-xxxx
Not CVE-2013-xxxx
 
フリーでできるセキュリティチェック OpenVAS CLI編
フリーでできるセキュリティチェック OpenVAS CLI編フリーでできるセキュリティチェック OpenVAS CLI編
フリーでできるセキュリティチェック OpenVAS CLI編
 
Nmapの真実
Nmapの真実Nmapの真実
Nmapの真実
 
フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)フリーでできるWebセキュリティ(burp編)
フリーでできるWebセキュリティ(burp編)
 
フリーでできるセキュリティ インフラ(Nessus)編
フリーでできるセキュリティ インフラ(Nessus)編フリーでできるセキュリティ インフラ(Nessus)編
フリーでできるセキュリティ インフラ(Nessus)編
 
ITRON仕様のOSで組み込みにトライしてみた
ITRON仕様のOSで組み込みにトライしてみたITRON仕様のOSで組み込みにトライしてみた
ITRON仕様のOSで組み込みにトライしてみた
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
 
Nmap 9 truth "Nothing to say any more"
Nmap 9 truth "Nothing to say  any more"Nmap 9 truth "Nothing to say  any more"
Nmap 9 truth "Nothing to say any more"
 
Your hash is.
Your hash is.Your hash is.
Your hash is.
 
第8回脆弱性診断入門
第8回脆弱性診断入門第8回脆弱性診断入門
第8回脆弱性診断入門
 
Scapyで作る・解析するパケット
Scapyで作る・解析するパケットScapyで作る・解析するパケット
Scapyで作る・解析するパケット
 
Ctfのためのpython入門
Ctfのためのpython入門Ctfのためのpython入門
Ctfのためのpython入門
 

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

  • 11. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}n" 01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>] 01361067 . 83C4 08 ADD ESP,8 以下のコードをアドレス 01361040 から実行した。 表示される数値を答えよ。 x86アセンブラを読もう
  • 12. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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文がある ここがスタート地点
  • 13. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}n" 01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>] 01361067 . 83C4 08 ADD ESP,8 以下のコードをアドレス 01361040 から実行した。 表示される数値を答えよ。 x86アセンブラを読もう サブルーチン ここがスタート地点 サブルーチンを 呼び出す
  • 15. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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はデータ領域の基点。 これから使うスタック領域の 一番下のアドレスが入っている
  • 16. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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はスタックの 一番上のアドレスが入っている
  • 17. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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はループ回数を カウントするために使用される領域
  • 18. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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)
  • 19. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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)
  • 20. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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命令は戻り先をスタックに積む
  • 21. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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)
  • 22. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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)
  • 23. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 24. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 25. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 26. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 27. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 28. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 29. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 30. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 31. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 32. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 33. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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は計算に使用される
  • 34. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 35. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 36. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 37. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 38. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 39. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 40. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 41. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 43. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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の値 が足される
  • 45. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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; } という処理を行っている
  • 47. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 48. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 49. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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の値をサブルーチンに入った 直後の値に戻すことで、サブルー チン内で使用したスタック領域を解 放している。
  • 50. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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して戻す。
  • 51. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 53. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 54. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 55. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 56. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 57. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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
  • 58. 問題を解説する 01361000 55 PUSH EBP 01361001 8BEC MOV EBP,ESP 01361003 83EC 08 SUB ESP,8 01361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],1 01361014 EB 09 JMP SHORT test.0136101F 01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8] 01361019 83C0 01 ADD EAX,1 0136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX 0136101F 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.01361032 01361027 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],EDX 01361030 ^EB E4 JMP SHORT test.01361016 01361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 01361035 . 83E8 02 SUB EAX,2 01361038 . 8BE5 MOV ESP,EBP 0136103A . 5D POP EBP 0136103B . C3 RETN ... 01361040 > . 55 PUSH EBP 01361041 8BEC MOV EBP,ESP 01361043 51 PUSH ECX 01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],0 0136104B 6A FF PUSH FF 0136104D E8 AEFFFFFF CALL test.01361000 01361052 . 83C4 04 ADD ESP,4 01361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX 01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] 0136105B . 50 PUSH EAX 0136105C . 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をコールする