These days •••/diary

de4dot μ‚¬μš©ν•˜κΈ°

μœ€μ •_ 2025. 3. 14. 13:29

.NET λ‚œλ…ν™” ν•΄μ œλ₯Ό μœ„ν•œ 도ꡬ de4dot에 λŒ€ν•œ κΈ°λ‘μž…λ‹ˆλ‹€.

 

 

 

de4dot

  • C#으둜 μž‘μ„±λœ μ˜€ν”ˆμ†ŒμŠ€ .NET deobfuscator 및 unpacker
  • λ¬Έμžμ—΄ λ“± λŒ€λΆ€λΆ„μ˜ λ‚œλ…ν™”λŠ” μ™„μ „νžˆ 볡원 κ°€λŠ₯ν•˜μ§€λ§Œ 심볼 이름을 λ³€κ²½ν•œ 것은 볡원 λΆˆκ°€λŠ₯
  • λ¬΄λ£Œμ§€λ§Œ 곡식(?)적인 지원은 ν•˜μ§€ μ•Šκ³  μ˜€ν”ˆμ†ŒμŠ€μ΄λ‹ˆ 직접 μ—…λ°μ΄νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • Agile.NET (aka CliSecure), .NET Reactor, SmartAssembly 등에 λŒ€ λ‚œλ…ν™” ν•΄μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • de4dot github: https://github.com/de4dot/de4dot

 

 

[였λ₯˜ 및 ν•΄κ²° μ˜ˆμ‹œ]

de4dot -f <target_file> -o <renamed_file> 을 톡해 λ‚œλ…ν™” ν•΄μ œν•΄μ£Όλ € ν–ˆλŠ”λ° μ‹€νŒ¨ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚œλ…ν™” ν•΄μ œ μ‹€νŒ¨

λ‹€λ₯Έ 뢄석가뢄은 동일 νŒŒμΌμ„ 동일 de4dot λ²„μ „μœΌλ‘œ λ‚œλ…ν™” ν•΄μ œλ₯Ό ν•˜μ…¨λ”λΌκ³ μš”

κ·Έλž˜μ„œ μ•Œμ•„λ³΄λ‹€ λ‚œλ…ν™” 방식을 μ§€μ •ν•΄μ£Όλ‹ˆ λ‚œλ…ν™” ν•΄μ œκ°€ κ°€λŠ₯ν–ˆμŠ΅λ‹ˆλ‹€.

(μ°Έκ³ : MalwareAnalysisForHedgehogs, "Malware Analysis - When De4dot fails, Removing Anti Tamper from NullShield", 2018.01.28, https://www.youtube.com/watch?v=1RNcZpBLZHs)

 

.NET Reactor 3.x둜 λ‚œλ…ν™”λœ λ°”μ΄λ„ˆλ¦¬λΌ dr3 μ˜΅μ…˜μ„ μ§€μ •ν•΄μ£Όμ—ˆκ³  κΉ”λ”ν•˜κ²Œ deobfuscator된 것은 μ•„λ‹ˆμ§€λ§Œ κ·Έλž˜λ„ μ„±κ³΅ν–ˆμŠ΅λ‹ˆλ‹€.

de4dot <target_file> -p dr3 -o <renamed_file> 

 

 

de4dot μ£Όμš” μ˜΅μ…˜

[File option]

 

  • -f
    • λ³΅ν˜Έν™”ν•  .NET μ–΄μ…ˆλΈ”λ¦¬ 파일 μ§€μ •

  • -o
    • λ³΅ν˜Έν™”ν•œ κ²°κ³Όλ₯Ό μ €μž₯ν•  디렉터리/파일

  • -p
    • νŠΉμ • λ‚œλ…ν™” ν”„λ‘œνŒŒμΌ(λ‚œλ…ν™” 방식) 선택

  • -strtypp TYPE
    • μ•”ν˜Έν™”λœ λ¬Έμžμ—΄μ„ λ³΅ν˜Έν™”
    • TYPE: xor, base64, custom λ“±

  • -strtok METHOD
    • λ³€ν˜•λœ λ¬Έμžμ—΄μ„ λ³΅ν˜Έν™”
    • METHOD: xor, reverse, custom λ“±

 

 

[Deobfuscator option (일뢀)]

 

  • Type df (Dotfuscastor)
    • μ½”λ“œ λ‚œλ…ν™” 도ꡬ Dotfuscator둜 λ‚œλ…ν™”λœ μ–΄μ…ˆλΈ”λ¦¬λ₯Ό 처리

  • Type dr3 (.NET Reactor 3.x)
    • λ‚œλ…ν™” 도ꡬ .NET Reactor 3.x 버전에 ν•΄λ‹Ήν•˜λŠ” λ‚œλ…ν™” 및 protect 방식을 처리

  • Type dr4 (.NET Reactor 4.x)
    • λ‚œλ…ν™” 도ꡬ .NET Reactor 4.x 버전에 ν•΄λ‹Ήν•˜λŠ” λ‚œλ…ν™” 및 protect 방식을 처리

  • Type go (Goliath.NET)
    • μ½”λ“œ λ‚œλ…ν™” 도ꡬ Goliath.NET둜 λ‚œλ…ν™”λœ μ–΄μ…ˆλΈ”λ¦¬λ₯Ό μ²˜λ¦¬ν•  λ•Œ μ‚¬μš©

 

 

적힌 λ‚΄μš©λΏλ§Œ μ•„λ‹ˆλΌ λ‹€λ₯Έ μ—¬λŸ¬ λ‚œλ…ν™” 도ꡬλ₯Ό 직접 μ§€μ •ν•˜μ—¬ λ‚œλ…ν™”λ₯Ό μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.