리λ²μ± κΈ°μ΄
λͺ¨λ λ΄μ©μ μΆμ²λ ꡬκΈ, κ΅¬κΈ μν€λ°±κ³Ό, κ·ΈμΈμ λΈλ‘κ·Έ λ±μ μ°Έκ³ νμμ΅λλ€.
λν νκ΅ μμ μκ°μ μλ£λ₯Ό μ°Έκ³ νμ¬ κΈμ μμ±νμμ΅λλ€.
리λ²μ± κΈ°μ΄μ λν λμμ΄ λ λ― νμ¬ μ¬λ € λμ κ²μ΄λ©°,μμ©λͺ©μ μ΄ μλλλ€.
1-1. 리λ²μ± μμ§λμ΄λ§
리λ²μ€ μμ§λμ΄λ§(reverse engineering, RE) λλ μ곡ν(ιε·₯εΈ)μ μ₯μΉ λλ μμ€ν μ κΈ°μ μ μΈ μ리λ₯Ό κ·Έ ꡬ쑰λΆμμ ν΅ν΄ λ°κ²¬νλ κ³Όμ μ΄λ€. μ΄κ²μ μ’ μ’ λμ(κΈ°κ³ μ₯μΉ, μ μ λΆν, μννΈμ¨μ΄ νλ‘κ·Έλ¨ λ±)μ μ‘°κ°λ΄μ λΆμνλ κ²μ ν¬ν¨νλ€. κ·Έλ¦¬κ³ μ μ§ λ³΄μλ₯Ό μν΄, λλ κ°μ κΈ°λ₯μ νλ μ μ₯μΉλ₯Ό μλ³Έμ μΌλΆλ₯Ό μ΄μ©νμ§ μκ³ λ§λ€κΈ° μν΄ λμμ μΈλΆμ μΈ μλμ λΆμνλ κ²μ ν¬ν¨νλ€.
리λ²μ€ μμ§λμ΄λ§μ κΈ°μμ μμ μ λλ κ΅°μ¬μ μΌλ‘ νλμ¨μ΄λ₯Ό λΆμν κ²μμ μμλμλ€. λͺ©μ μ μλ³Έ μμ°μ μ μ°¨μ κ΄ν μ§μμ΄ κ±°μ μλ μνμμ, μ΅μ’ μ νμ κ°μ§κ³ λμμΈ κ²°μ κ³Όμ μ μΆλ‘ νλ κ²μ΄λ€. κ°μ κΈ°μ μ΄ λ κ±°μ μννΈμ¨μ΄ μμ€ν μ μμ©νκΈ° μν΄ νμ¬ μ°κ΅¬λκ³ μλλ°, μ°μ μ΄λ κ΅λ°©μ΄ μλκ³ , μ€λ₯, λ―Έμμ±, μ κ·Ό λΆκ°μΈ λ¬Έμλ₯Ό μμ νκΈ° μν¨μ΄λ€. (κ΅¬κΈ μν€λ°±κ³Ό)
1-2. λ°μ΄λ리
- λ°μ΄λ리λ 2μ§μ λΌλ μλ―Έλ‘μ, λ°μ΄λ리 νμΌμ 0κ³Ό1, μ¦ 2μ§μλ‘ μ΄λ€μ§ νμΌμ μλ―Ένλ€. νμ§λ§ 'λ°μ΄λ리 λΆμ'μμμ λ°μ΄λ리λ μ΄κ²λ³΄λ€ μ νμ μΈ μλ―Έλ₯Ό κ°μ§λ€. μ’μ μλ―Έλ‘ μ€ν κ°λ₯ν νμμ λ°μ΄ν° νμΌμ λ§νλ€. νμμΌλ‘λ μλμ°μ PEλ 리λ μ€μ ELFκ°μ κ²μ΄ μλ€.
- μ΄λ€ νλ‘κ·Έλ¨μ΄ μ΄λ»κ² λμνλμ§ λΆμν λ, μ°μ μ€μ λ‘ νλ‘κ·Έλ¨μ μ€νν΄ λ³΄λ©΄ μ΄λ€ λμμ νλμ§ λλ΅μ μΌλ‘ μ μ μλ€. κ·Έλ¦¬κ³ λμ± μμΈν μκ³ μΆμ λΆλΆμ΄ μλ€λ©΄ μ½λλ₯Ό νμΈνλ€. νμ§λ§ λλΆλΆμ κ²½μ° μμ€μ½λκ° μμΌλ―λ‘ μμ€μ½λκ° μλ λ€λ₯Έ ννμ μ½λλ₯Ό μ½μ΄μΌ νλ€. λμμ νμΈν΄λ³΄κΈ° μν΄μλ μ°μ μ€νν΄λ³΄λ κ²μ΄ μ μΌμ΄λ€.
νμ§λ§ μ΄κ²λ§μΌλ‘λ νμ€ μ
μΆλ ₯ μ΄μμ μ 보λ₯Ό μ»μ μ μμΌλ―λ‘ λ€μν μ 보λ₯Ό μ»μ μ μλ μ μ© νλ‘κ·Έλ¨μ μ¬μ©ν΄ λμμ λ°λ κ²μ΄ μ’λ€. κ·Έλ¦¬κ³ λ°μ΄λ리 μ½λλ₯Ό μ½λλ€. λ¨ λ°μ΄λ리μ μ½λλ νλ² μ»΄νμΌλ κ²μ΄κΈ° λλ¬Έμ μμ€μ½λκ° μλλΌ disassembleμ΄λΌλ μ²λ¦¬ κ³Όμ μΌλ‘ μ»μ΄μ§ μ΄μ
λΈλ¦¬ μ½λλ₯Ό μ½κ² λλκ²μ΄λ€. μ΄κ²μ΄ mov addμκ°μ assemblyμ΄μ΄λ€. disassembleμ΄λ κΈ°κ³μ΄λ‘ λ μ½λλ₯Ό μ¬λμ΄ ν΄μνκΈ° μ¬μ΄ μ΄μ
λΈλ¦¬ μΈμ΄λ‘ λ³ννλ κ²μ΄λ€.
1-3. λ°μ΄λ리 λΆμ
λ°μ΄λ리 λΆμ(Binary Analysis) ν΄μ μ΄λ€ ν¨μ»€λ₯Ό μ΄μ©ν΄μ λ°μ΄λ리λ₯Ό ν¨νΉνλμ§, μ΄λ€ μΈμ΄λ‘ μ μλ νλ‘κ·Έλ¨μΈμ§λ₯Ό μμλΌ λ μ¬μ©λλ€. νμΌμ μ΄μ΄λ λκ³ λλκ·Έ μ€ λλ‘μ νμ¬ νμΌμ λ£μ μλ μλ€.
μμ€ μ½λλ₯Ό λΆμν΄μλ μ΄λ¬ν μ μ²μ μ·¨μ½μ κ³Ό κ°μ κ²°ν¨μ΄ μλμ§ μ λ°©λ²μ΄ μμ§λ§ μ΄λ₯Ό μ°ΎμλΌ κΈΈμ μμ°ν μ‘΄μ¬νλ€. λ°λ‘ λ°μ΄λ리 νμΌμ λΆμνλ κ²μ΄λ€. λ°μ΄λ리 νμΌ λΆμμ μννΈμ¨μ΄ μ€ν νμΌ μ체λ₯Ό λΆμνλ―λ‘ λ μ§μ μ μ΄κ³ λͺ ννκ² μννΈμ¨μ΄λ₯Ό λΆμν μ μλ λ°©λ²μ΄κΈ°λ νλ€.(μΆμ² : https://gnu-cse.tistory.com/22?category=601172)
1-4. κ³΅κ²©μ’ λ₯(νμ )
1-5. λ°μ΄λ리 λΆμ λꡬ
- showString
곡격νμ μ Binary Analyysisλ‘ νλ‘κ·Έλ¨ λ΄λΆ μ€νΈλ§μ 보μ¬μ£Όλ λꡬμ΄λ€.
- Resource Hacker Plus
곡격νμ μ Binary Analyysisλ‘ μννΈμ¨μ΄ 리μμ€λ₯Ό νΈμ§ν μ μλ λꡬμ΄λ€.
- Windbg
곡격νμ μ Debugger λ‘ λλ²κΉ μ ν μ μλ λꡬμ΄λ€.
- Ollydbg
곡격νμ μ Debugger, Disassembler λ‘, κ°μ₯ λ²μ©μΌλ‘ μ¬μ©λλ λλ²κ·Έ, λμ€μ΄μ λΈλ¬ ν΄μ΄λ€.
OllyDbg (λ§λ μ΄μΈ Oleh Yuschukμ μ΄λ¦μ λ΄)λ λ°μ΄λ리 μ½λ λΆμμ μν x86 λλ²κ±°λ‘μ, μμ€ μ½λκ° μμ λ μ μ©νκ² μ¬μ©λλ€. μ΄κ²μ λ μ§μ€ν°λ₯Ό μΆμ νκ³ , ν¨μ, API νΈμΆ, Switch λ¬Έ, ν (table), μμ κ·Έλ¦¬κ³ λ¬Έμμ΄μ μΈμνλ©°, μ€λΈμ νΈ νμΌκ³Ό λΌμ΄λΈλ¬λ¦¬μμ 루ν΄λ€μ μμΉλ₯Ό μ°Ύμμ€λ€.
- VBDE
곡격νμ μ Decompiler λ‘, λΉμ£ΌμΌλ² μ΄μ§μΌλ‘ λ§λ€μ΄μ§ νλ‘κ·Έλ¨ λΆμ ν΄μ΄λ€.
- W32dsm9b
곡격νμ μ Desassemblerλ‘, κΈ°κ³μ΄λ₯Ό μ΄μ λΈλ¦¬μ΄λ‘ λ²μν΄μ£Όλ ν΄μ΄λ€.
- WinHex
곡격νμ μ Hex Editorλ‘ μ΄μ§ νμΌμ μ½λ ν΄μ΄λ€.
- Procexp
곡격νμ μ Monitoring μΌλ‘, μμ€ν λͺ¨λν°λ§μ ν μ μλ ν΄μ΄λ€.
- Exeinfo PE & VMUnpacker
λλ€ κ³΅κ²©νμ μ Unpackerμ΄λ©°, μΈν¨νΉμ ν μ μλ ν΄μ΄λ€.
κ·Έ μΈμλ νμ μ λ°λΌμ, λ§μ ν΄λ€μ΄ μ‘΄μ¬νλ€.