SECURITY/REVERSING

μ•ˆν‹° 리버싱 :: 03 - μ•ˆν‹° 디버깅 예제

\b\t 2020. 8. 4. 15:32

μ•ˆν‹° 디버깅에 λŒ€ν•œ κ°„λ‹¨ν•œ 예제λ₯Ό ν•˜λ‚˜ μ‚΄νŽ΄λ³Ό 것이닀.

 

예제 λ¬Έμ œλŠ” lena 의 κ°•μ’Œ 19편 Debugger detected and anti-anti-techniques 쀑 ReverseMe.A 이닀.

(https://forum.tuts4you.com/files/file/1307-lenas-reversing-for-newbies/)

 

ReverseMe.A 

 

κ·Έλƒ₯ μ‹€ν–‰μ‹œν‚€λ©΄ 

이 λœ¨μ§€λ§Œ, ollydbg 둜 디버깅을 μ‹œμž‘ν•˜λ©΄

 

이 λœ¬λ‹€. 

 

λ””λ²„κ±°λ‘œ μ‹€ν–‰ν•˜κ³  μžˆλ‹€λŠ” 것을 κ°μ§€ν•˜κ³ , λ‹€λ₯Έ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•˜λŠ” 것이닀.

 

ν•¨μˆ˜ CALL 을 μ‚΄νŽ΄λ³΄λ©΄ IsDebuggerPresent ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” 것을 λ³Ό 수 μžˆλ‹€.

 

 

IsDebuggerPresent ν•¨μˆ˜ : https://docs.microsoft.com/en-us/windows/win32/api/debugapi/nf-debugapi-isdebuggerpresent

 

- 리턴값 : λ””λ²„κ±°λ‘œ μ‹€ν–‰ν•œλ‹€λ©΄ 0 이 μ•„λ‹Œ κ°’, λ””λ²„κ±°λ‘œ 싀행쀑이지 μ•ŠμœΌλ©΄ 0 을 리턴

 

즉, 이 ν•¨μˆ˜κ°€ 디버거λ₯Ό κ°μ§€ν•˜κ³  1을 λ¦¬ν„΄ν•˜μ—¬ "keyfile is not valid. Sorry." λ₯Ό 좜λ ₯ν•˜λŠ” 것이닀.

 

 

이λ₯Ό ν•΄μ²΄ν•˜κΈ° μœ„ν•΄μ„ , ν•¨μˆ˜ 호좜 λ‚΄λΆ€λ‘œ λ“€μ–΄κ°€μ„œ EAX 에 0 을 λ„£μ–΄μ£Όλ©΄ λœλ‹€.

 

 

디버거λ₯Ό ν†΅ν•΄μ„œλ„ 이 λ©”μ‹œμ§€ 좜λ ₯ 성곡 ~

 

 

λ‹€λ₯Έ λ°©λ²•μœΌλ‘œλŠ” IsDebeggerPresent ν•¨μˆ˜ 호좜 자체λ₯Ό λ¬΄νš¨ν™”μ‹œν‚€κ±°λ‚˜ (NOP), 

 

ν˜Ήμ€ 00401103 의 JE λ₯Ό JNZ 둜 νŒ¨μΉ˜ν•΄λ„ 디버깅을 ν•  수 μžˆλ‹€. (λ‹€λ§Œ κ·Έλƒ₯ νŒŒμΌμ„ μ‹€ν–‰ν•˜λ©΄ λ°˜λŒ€μ˜ κ²°κ³Όκ°€ λ‚˜μ˜¬ 뿐..)