Upload
boropon
View
499
Download
0
Embed Size (px)
Citation preview
アセンブラ初心者がSECCON2014
バイナリ100の問題を解説してみた
自己紹介
●名前宮城友裕
●趣味TVゲームモンスターハンターシリーズには余裕で1千時間以上持っていかれている
自己紹介
●普段の仕事プリンタ上で動くソフトウェアの開発
仕事ではアセンブラはほとんど触りませんたまーに障害解析で見ることを強いられます
そんなわけで
アセンブラについてほぼ素人です
( ・´ー・`)
それでは本題へ
目次
● SECCON2014バイナリ100の問題って何?● 問題を解説する
SECCON2014バイナリ100の問題って何でしょう?
SECCON2014バイナリ100の(ry
SECCONとは、「セキュリティコンテスト」のことでチーム戦のハッカー大会ですhttp://2014.seccon.jp/
出題される内容は、ネットワーク、暗号、プログラグ、Web、バイナリ、etcと幅広いです
問題は、難しさによって得点が違います
バイナリは100点と300点の問題がありましたが、今回は簡単な方の100点の問題を解説します
それでは問題の解説に入ります
まずは問題を見てみます
問題を解説する
01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
以下のコードをアドレス 01361040 から実行した。表示される数値を答えよ。
x86アセンブラを読もう
問題を解説する
01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
以下のコードをアドレス 01361040 から実行した。表示される数値を答えよ。
x86アセンブラを読もう
ここにprint文がある
ここがスタート地点
問題を解説する
01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
以下のコードをアドレス 01361040 から実行した。表示される数値を答えよ。
x86アセンブラを読もう
サブルーチン
ここがスタート地点
サブルーチンを呼び出す
ざっと問題を見たところで、1ステップずつ解説します
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012
0016
0020
0024
0028 EBPの値(スタート時)
EBPはデータ領域の基点。これから使うスタック領域の一番下のアドレスが入っている
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012
0016
0020
0024
0028 EBPの値(スタート時)
EBP ESPの値(0028)
ESPはスタックの一番上のアドレスが入っている
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012
0016
0020
0024 ECXの値(スタート時)
0028 EBPの値(スタート時)
EBP ESPの値(0028)
ECXはループ回数をカウントするために使用される領域
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012
0016
0020
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0028)
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012
0016
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0028)
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0028)
CALL命令は戻り先をスタックに積む
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0028)
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008 0
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 1
0008 0
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 1
0008 0
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 1
0008 0
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 1
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
Jump if Great左が右より大きければジャンプ
レジスタ
スタック
0000
0004 1
0008 0
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 1
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 1
0008 0
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 1
EDX 0
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 1
0008 0
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 1
EDX 1
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 1
0008 1
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 1
EDX 1
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 1
0008 1
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 1
EDX 1
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 1
0008 1
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 1
EDX 1
EAX 1
EAXは計算に使用される
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 1
0008 1
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 1
EDX 1
EAX 2
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 2
0008 1
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 1
EDX 1
EAX 2
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 2
0008 1
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 2
EDX 1
EAX 2
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 2
0008 1
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 2
EDX 1
EAX 2
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 2
0008 1
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 2
EDX 1
EAX 2
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 2
0008 1
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 2
EDX 3
EAX 2
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 2
0008 3
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 2
EDX 3
EAX 2
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 2
0008 3
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 2
EDX 3
EAX 2
ここで、整理します
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 2
0008 3
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 2
EDX 3
EAX 2
0004のスタックの値→初期値は1→1ずつ足される→0xFFと比較している
0008のスタックの値→初期値は0→今の値にスタック0004の値が足される
はっと気付きます
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 2
0008 3
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 2
EDX 3
EAX 2
つまりこの部分は、
sum = 0;
for (i = 1; i <= 0xFF; i++) {sum += i;
}
という処理を行っている
ちょっと計算します
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 0xFF
0008 32640
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 0xFF
EDX 32640
EAX 32640
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 0xFF
0008 32640
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0004
ECX 0xFF
EDX 32640
EAX 32638
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004 0xFF
0008 32640
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP ESPの値(0012)
ESP 0012
ECX 0xFF
EDX 32640
EAX 32638
ESPの値をサブルーチンに入った直後の値に戻すことで、サブルーチン内で使用したスタック領域を解放している。
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012 EBPの値(0028)
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP 0028
ESP 0012
ECX 0xFF
EDX 32640
EAX 32638
サブルーチンに入った直後のEBPの値がスタックに保存してあるので、popして戻す。
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012
0016 戻り先(01361052)
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP 0028
ESP 0012
ECX 0xFF
EDX 32640
EAX 32638
サブルーチンから無事帰還しました。
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012
0016
0020 0xFF
0024 0
0028 EBPの値(スタート時)
EBP 0028
ESP 0024
ECX 0xFF
EDX 32640
EAX 32638
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012
0016
0020
0024 32638
0028 EBPの値(スタート時)
EBP 0028
ESP 0024
ECX 0xFF
EDX 32640
EAX 32638
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012
0016
0020
0024 32638
0028 EBPの値(スタート時)
EBP 0028
ESP 0024
ECX 0xFF
EDX 32640
EAX 32638
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012
0016
0020 32638
0024 32638
0028 EBPの値(スタート時)
EBP 0028
ESP 0024
ECX 0xFF
EDX 32640
EAX 32638
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012
0016
0020 32638
0024 32638
0028 EBPの値(スタート時)
EBP 0028
ESP 0024
ECX 0xFF
EDX 32640
EAX 32638
問題を解説する01361000 55 PUSH EBP01361001 8BEC MOV EBP,ESP01361003 83EC 08 SUB ESP,801361006 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136100D C745 F8 01000000 MOV DWORD PTR SS:[EBP-8],101361014 EB 09 JMP SHORT test.0136101F01361016 8B45 F8 MOV EAX,DWORD PTR SS:[EBP-8]01361019 83C0 01 ADD EAX,10136101C 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX0136101F 8B4D F8 MOV ECX,DWORD PTR SS:[EBP-8]01361022 3B4D 08 CMP ECX,DWORD PTR SS:[EBP+8]01361025 7F 0B JG SHORT test.0136103201361027 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]0136102A 0355 F8 ADD EDX,DWORD PTR SS:[EBP-8]0136102D 8955 FC MOV DWORD PTR SS:[EBP-4],EDX01361030 ^EB E4 JMP SHORT test.0136101601361032 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]01361035 . 83E8 02 SUB EAX,201361038 . 8BE5 MOV ESP,EBP0136103A . 5D POP EBP0136103B . C3 RETN...01361040 > . 55 PUSH EBP01361041 8BEC MOV EBP,ESP01361043 51 PUSH ECX01361044 C745 FC 00000000 MOV DWORD PTR SS:[EBP-4],00136104B 6A FF PUSH FF0136104D E8 AEFFFFFF CALL test.0136100001361052 . 83C4 04 ADD ESP,401361055 . 8945 FC MOV DWORD PTR SS:[EBP-4],EAX01361058 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]0136105B . 50 PUSH EAX0136105C . 68 F4203601 PUSH OFFSET "FLAG{%d}\n"01361061 . FF15 A4203601 CALL DWORD PTR DS:[<&MSVCR100.printf>]01361067 . 83C4 08 ADD ESP,8
レジスタ
スタック
0000
0004
0008
0012
0016
0020 32638
0024 32638
0028 EBPの値(スタート時)
EBP 0028
ESP 0024
ECX 0xFF
EDX 32640
EAX 32638
引数に”FLAG{%d}\n”と32638を渡してprintfをコールする
問題
以下のコードをアドレス 01361040 から実行した。
表示される数値を答えよ。
解答
32638