-
New OrleansWargame/Microcorruption 2014. 7. 30. 16:18
우선 Main 함수를 살펴보면 create_password라는 함수가 있다.
4438 <main> 4438: 3150 9cff add #0xff9c, sp 443c: b012 7e44 call #0x447e <create_password> 4440: 3f40 e444 mov #0x44e4 "Enter the password to continue", r15 4444: b012 9445 call #0x4594 <puts> 4448: 0f41 mov sp, r15 444a: b012 b244 call #0x44b2 <get_password> 444e: 0f41 mov sp, r15 4450: b012 bc44 call #0x44bc <check_password> 4454: 0f93 tst r15 4456: 0520 jnz #0x4462 <main+0x2a> 4458: 3f40 0345 mov #0x4503 "Invalid password; try again.", r15 445c: b012 9445 call #0x4594 <puts> 4460: 063c jmp #0x446e <main+0x36> 4462: 3f40 2045 mov #0x4520 "Access Granted!", r15 4466: b012 9445 call #0x4594 <puts> 446a: b012 d644 call #0x44d6 <unlock_door> 446e: 0f43 clr r15 4470: 3150 6400 add #0x64, sp
이 부분에서 0x2400 주소부분에 값들을 하나씩 집어넣는다.
447e <create_password> 447e: 3f40 0024 mov #0x2400, r15 4482: ff40 5a00 0000 mov.b #0x5a, 0x0(r15) 4488: ff40 6d00 0100 mov.b #0x6d, 0x1(r15) 448e: ff40 6b00 0200 mov.b #0x6b, 0x2(r15) 4494: ff40 3900 0300 mov.b #0x39, 0x3(r15) 449a: ff40 4100 0400 mov.b #0x41, 0x4(r15) 44a0: ff40 3f00 0500 mov.b #0x3f, 0x5(r15) 44a6: ff40 3c00 0600 mov.b #0x3c, 0x6(r15) 44ac: cf43 0700 mov.b #0x0, 0x7(r15) 44b0: 3041 ret
이후 check_password 함수에서 사용자가 입력한 값들과 create_password 부분에서 생성한 값들을 하나씩 비교한다.
44bc <check_password> 44bc: 0e43 clr r14 44be: 0d4f mov r15, r13 44c0: 0d5e add r14, r13 44c2: ee9d 0024 cmp.b @r13, 0x2400(r14) 44c6: 0520 jne #0x44d2 <check_password+0x16> 44c8: 1e53 inc r14 44ca: 3e92 cmp #0x8, r14 44cc: f823 jne #0x44be <check_password+0x2> 44ce: 1f43 mov #0x1, r15 44d0: 3041 ret 44d2: 0f43 clr r15 44d4: 3041 ret
고로 create_password에서 생성한 5a6d6b39413f3c가 키값. (끝부분에 null은 자동으로 입력되므로)
'Wargame > Microcorruption' 카테고리의 다른 글
Reykjavik (0) 2014.07.31 Cusco (0) 2014.07.31 Hanoi (0) 2014.07.30 Sydney (0) 2014.07.30 Microcorruption 소개 (0) 2014.07.30