λ¬Έμ λ μ¬κΈ°μ λ€μ΄λ°μ μ μμ΅λλ€. (μμΆ ν΄μ μ λΉλ°λ²νΈ : codeengn)
λͺ©νκ° : λλ²κ±°λ₯Ό νμ§νλ ν¨μ μ΄λ¦
ν λ² μ€νμ μμΌλ³΄κ² μ΅λλ€.
"μ μ"μ΄λΌλ λ¬Έμμ΄μ΄ κ³μν΄μ μΆλ ₯λ©λλ€.
λ¬Έμ κ° λλ²κ±° νμ§ ν¨μμ κ΄ν κ²μ΄λ, μλ§ μ΄ μ μμ΄λΌλ λ¬Έμμ΄μ λλ²κ±°κ° νμ§λμ§ μμλ€λ λ»μΌ λ― ν©λλ€.
κ·Έλ λ€λ©΄ λλ²κ±°λ‘ μ΄μ΄μ ν λ² μ€νν΄λ³΄λλ‘ νκ² μ΅λλ€.
[Ctrl + F8] ν€λ₯Ό λλ¬ Animate over κΈ°λ₯μ μ¬μ©ν΄λ΄ μλ€.
λ΄λ €κ°λ€ ν μ§μ (00408454 μ£Όμ) μμ λ©μΆ λ€ "λλ²κΉ λΉν¨" μ΄λΌλ λ¬Έμμ΄μ΄ μ°μν΄μ μΆλ ₯λ©λλ€.
Animate over κΈ°λ₯μ μ¬μ©νμΌλ λ©μΆ°μλ κ²μ²λΌ 보μ¬λ νΈμΆν ν¨μ λ΄λΆμμ μ€νμ΄ λλ κ² μ λλ€.
μ΄λ₯Ό λ°νμΌλ‘ CALL λͺ λ Ήμ΄ νΈμΆνλ ν¨μ λ΄λΆμ λλ²κ±°λ₯Ό νμ§νλ λΆλΆμ΄ μλ€κ³ μκ°νμ΅λλ€.
[F7] ν€λ‘ CALL λͺ λ Ήμ΄ νΈμΆνλ μμ μμΌλ‘ λ€μ΄κ°λλ€.
μ΄λ κ² IsDebuggerPresent λΌλ ν¨μκ° λμ λλ€μ.
μ΄ λΆλΆμμ "λλ²κΉ λΉν¨" νΉμ "μ μ" λ¬Έμμ΄ μΆλ ₯μΌλ‘ κ²°κ³Όκ° λλ λ― ν©λλ€.
[Ctrl + F8] λ‘ Animate over κΈ°λ₯μ μ¬μ©νμ¬ λμΌλ‘ νμΈν΄ λ΄ μλ€.
μ΄λ κ² ν ꡬκ°μ κ³μν΄μ λλ©΄μ "λλ²κΉ λΉν¨" μ΄λΌλ λ¬Έμμ΄μ μΆλ ₯ν©λλ€.
μ¬κΈ°μ νλ‘κ·Έλ¨μ λ΄λΆ ꡬ쑰λ₯Ό μ΄ν΄ν μ μμ΅λλ€.
νμ§ ν¨μλ₯Ό μ΄μ©ν΄ λλ²κ±°κ° μ€νλκ³ μλμ§λ₯Ό νμΈν ν, κ·Έ λ°νκ°μ λ°λΌ λ¬Έμμ΄μ μΆλ ₯ κ²°κ³Όκ° "λλ²κΉ λΉν¨" κ³Ό "μ μ" μΌλ‘ λΆκΈ°νλ κ²λλ€. μ΄ κ³Όμ μ κ³μ λ°λ³΅νλ©΄μμ.
κ·Έλ λ€λ©΄ μ΄ μμ λ΄λΆμ λλ²κ±° νμ§ ν¨μκ° μλ€λ κ²μ΄ νμ€ν΄μ‘μ΅λλ€.
μ΄μ λλ²κ±° νμ§ ν¨μμ λ°νκ°μ λ°λΌ μΆλ ₯ κ²°κ³Όκ° λ¬λΌμ§λ€λ κ²μ μ΄μ©ν κ²λλ€.
μΌλ¨ 맨 μμμ νΈμΆλλ Sleep ν¨μλ μΆλ ₯ μκ°μ μ§μ°ν΄μ£Όλ μν μΈ λ― νλ λμ΄κ°λλ€.
IsDebuggerPresent ν¨μμ BP λ₯Ό κ±Έκ³ λ°νκ°κ³Ό μΆλ ₯ κ²°κ³Όμ κ΄κ³λ₯Ό 보λλ‘ νκ² μ΅λλ€.
[F9] ν€λ‘ BP μ κΉμ§ μ€νμ ν΄μ€ λ€ [F8] ν€λ‘ IsDebuggerPresent ν¨μλ₯Ό step over νκ² μ΅λλ€.
λ μ§μ€ν° μ°½μ 보면 ν¨μμ 리ν΄κ°μ μ μ₯νλ λ μ§μ€ν°, EAX κ° 1μ΄ λ κ²μ νμΈν μ μμ΅λλ€.
μ΄λ κ² λ°νκ°μ΄ 1μ΄ λκ³ , λλ²κΉ λΉν¨μ΄λΌλ κΈμκ° μΆλ ₯λ©λλ€.
μ΄ ν¨μκ° λλ²κ±° νμ§ ν¨μμΈμ§ νμ€ν μμλ΄κΈ° μν΄ μΆλ ₯ μ 리ν΄κ°μ λ°κΏ νμΈν΄λ³΄κ² μ΅λλ€.
λ€μ IsDebuggerPresent ν¨μκΉμ§ μ€νν ν, 1μ΄ λ 리ν΄κ°μ 0μΌλ‘ μμ ν΄μ€λλ€.
OK λ₯Ό λλ₯΄κ³ λ€μ μ€νν΄λ΄ μλ€.
λλ²κ±°λ₯Ό μ€νμ€μΈλ°λ μ μμ΄λΌλ λ©μΈμ§κ° λΉλλ€.
IsDebuggerPresent ν¨μμ λ°ν κ°μ μμ νμλλ κ²°κ³Όκ° λ¬λΌμ§λ€μ.
λ°λΌμ IsDebuggerPresent ν¨μλ λλ²κ±° νμ§ ν¨μ μ λλ€.
λλ²κ±° νμ§ ν¨μμ μ΄λ¦ : IsDebuggerPresent
(IsDebuggerPresent : νμ¬ νλ‘μΈμ€κ° λλ²κ±°μμ μ€νμ΄ λλ©΄ λ°νκ°μ΄ 0μ΄ μλκ³ , νμ¬ νλ‘μΈμ€κ° λ€λ²κ±°μμ μ€νλμ§ μμΌλ©΄ λ°νκ°μ΄ 0μ΄λ€. -MSDN)
'reverse engineering > CodeEngn' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[CodeEngn] Basic RCE L06 λ¬Έμ νμ΄ (3) | 2020.12.06 |
---|---|
[CodeEngn] Basic RCE L05 λ¬Έμ νμ΄ (5) | 2020.12.05 |
[CodeEngn] Basic RCE L03 λ¬Έμ νμ΄ (0) | 2020.12.03 |
[CodeEngn] Basic RCE L02 λ¬Έμ νμ΄ (0) | 2020.12.02 |
[CodeEngn] Basic RCE L01 λ¬Έμ νμ΄ (4) | 2020.12.02 |