ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리버싱 예제 :: ollydbg -01 CrackMe
    SECURITY/REVERSING 2020. 7. 28. 18:34

    (abexcm1.exe 예제)

     

     

    λ¬Έμ œλŠ” κ°„λ‹¨ν•˜λ‹€.

     

    이 μ•ˆλ‚΄ λ©”μ‹œμ§€ λ‹€μŒμ— 좜λ ₯λ˜λŠ” μ•ˆλ‚΄ λ©”μ‹œμ§€κ°€ 

     

     

    "Ok, I really thick that your HD is a CD_ROM! :p"

     

    이거면 λœλ‹€.

     

    아무것도 ν•˜μ§€ μ•Šκ³  μ‹€ν–‰μ‹œν‚€λ©΄ 이 λ©”μ‹œμ§€κ°€ λœ¬λ‹€.

     

     

     

    (풀이)

     

    λ¨Όμ €, μ½”λ“œλ₯Ό μ‚΄νŽ΄λ³΄λ©΄

     

     

    μ–΄λ–€ 쑰건을 λ§Œμ‘±μ‹œν‚¨λ‹€λ©΄ 맨 λ§ˆμ§€λ§‰ "Ok, I really thick that your HD is a CD_ROM! :p" κ°€ 좜λ ₯됨을 μ•Œ 수 μžˆλ‹€.

     

     

    ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜λ“€μ„ λ³΄λ‹ˆ GetDriveTypeA κ°€ 있고, 이 API κ°€ λ¦¬ν„΄ν•˜λŠ” 값에 λ”°λΌμ„œ 좜λ ₯값이 달라짐을 μ•Œ 수 μžˆλ‹€.

     

     

    ν•΄κ²° 방법은 λ§Žκ² μ§€λ§Œ, 두 가지 λ°©λ²•μœΌλ‘œ ν’€μ–΄λ³΄μ•˜λ‹€.

     

     

    1) μ½”λ“œ μˆ˜μ •

     

    CMP EAX, ESI  μ—μ„œ 두 λ ˆμ§€μŠ€ν„°μ˜ 값을 λΉ„κ΅ν•œλ‹€.

     

     

    κ·Έ ν›„ EAX 와 ESI 의 값이 κ°™λ‹€λ©΄ (ZF κ°€ 0 일 λ•Œ) μ ν”„ν•œλ‹€.

     

    μ§€κΈˆμ€ 같지 μ•Šμ•„μ„œ μ ν”„ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—, λͺ…λ Ήμ–΄λ₯Ό λ°˜λŒ€λ‘œ JNE 둜 λ°”κΏ”μ£Όμ—ˆλ‹€.

     

    κ·Έλ ‡κ²Œ μ €μž₯ν•΄μ£Όλ©΄ 성곡 ! μ›ν•˜λŠ” λ©”μ‹œμ§€μ°½μ„ 얻을 수 μžˆλ‹€.

     

     

     

     

     

     

    2) GetDriveTypeA ν•¨μˆ˜ 리턴값 μˆ˜μ •

     

    λ¨Όμ € 이 API ν•¨μˆ˜μ— λŒ€ν•œ 정보λ₯Ό μ‚΄νŽ΄λ³΄μž.

    https://docs.microsoft.com/ko-kr/windows/win32/api/fileapi/nf-fileapi-getdrivetypea?redirectedfrom=MSDN

     

     

    ν•¨μˆ˜μ˜ 리턴값이 5 λ©΄ CD-ROM 으둜 인식함을 μ•Œκ²Œ λ˜μ—ˆλ‹€.

     

    λ‚˜μ€‘μ— ESI 와 λΉ„κ΅ν•˜λŠ”λ°, ESI λŠ” 00401000 이기 λ•Œλ¬Έμ— 00401005 둜 EAX λ₯Ό μˆ˜μ •ν•΄μ€€λ‹€.

     

    (μ›λž˜λŠ” 00000005 λ©΄ λ˜κ² λŠ”λ°.. μ™œ μ΄λŸ°μ§€λŠ”..)

     

     

    GetDriveTypeA ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜λŠ” κ³³μ—μ„œ F7 둜 ν•¨μˆ˜ λ‚΄λΆ€λ‘œ λ“€μ–΄κ°„λ‹€.

     

    μ‹€ν–‰ν•˜λ‹€κ°€ Ctrl + F9 둜 ν•¨μˆ˜ λ¦¬ν„΄μœΌλ‘œ λ°”λ‘œ λ„˜μ–΄κ°€μ„œ EAX 값을 μˆ˜μ •ν•΄μ€€λ‹€.

     

     

     

     

    이제 ν•¨μˆ˜λ₯Ό λ‚˜μ™€μ„œ main μ—μ„œ CMP λΆ€λΆ„μœΌλ‘œ κ°„λ‹€.

     

    Register Window 에 λ‚˜μ˜€λ‹€μ‹œν”Ό EAX 와 ESI κ°€ 값이 κ°™λ‹€. 

    μ—­μ‹œλ‚˜ CMP λ₯Ό ν•˜λ‹ˆ ZF κ°€ 1 이 되고, μ„±κ³΅μ μœΌλ‘œ μ›ν•˜λŠ” λ©”μ‹œμ§€μ°½μ„ μ–»λŠ”λ‹€.!!

     

     

     

     

     

    λ‹€λ§Œ 이 방법은 μ €μž₯ν•  μˆ˜κ°€ μ—†μ–΄μ„œ.. μ•„μ‰½μ§€λ§Œ 일단은 μ΄λ ‡κ²Œ λ§ˆλ¬΄λ¦¬ν•œλ‹€.

    λŒ“κΈ€

Designed by Tistory.