๊ทธ๋์์ ๊ฒ์๊ธ์์๋ C/C++๋ก ์์ฑ๋ PE ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ถ์ํ์์ต๋๋ค.
์ด๋ฒ์๋ ์ฒ์์ผ๋ก .NET ์ ์ฑ์ฝ๋๋ฅผ ํฌ์คํ ํด๋ณด๊ฒ ์ต๋๋ค.
์ํ ํด์(SHA256)๋ ed22dd68fd9923411084acc6dc9a2db1673a2aab14842a78329b4f5bb8453215์ ๋๋ค.
โ ์ํ ์ ๋ณด ์์ง
๋จผ์ ํจํน ๋ฐ ๋๋ ํ ํ์ธ์ ์ํด DiE๋ฅผ ์ฌ์ฉํด๋ณด๋ .NET Reactor๋ก ํ๋กํ ํธ ๋์ด ์๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
dnSpy๋ก๋ ํ์ธํด๋ณด๋ฉด,
dnSpy ์ฒซ ํ๋ฉด์ ํตํด ์ป์ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- 5๊ฐ์ ์๋ฒ ๋๋๋ ๋ฆฌ์์ค
- Entry point (WaitCallb.Filter.GlobalValueFilter.MapVisitor)
- Type References์์ ํ์ธํ ์ ์๋ ์ ๋ณด๋ค: class, enumeration, structure, delegation
- ์ด์ ๋ธ๋ฆฌ ์ด๋ฆ: WaitCallb
- ๋ชจ๋ ์ด๋ฆ: WaitCallb.exe
- 2๊ฐ์ ๋ชจ๋
๊ฐ๋ณ๊ฒ ์ป์ ์ ์๋ ์ ๋ณด๋ค์ ๋๊ฐ ํ์ธํ๊ณ ์ด์ EP๋ก ์ง์ ํด๋ณด๊ฒ ์ต๋๋ค.
โ (stage 1) Entry Point ๋ถ์
EP ๋ฉ์๋์์๋ 4๊ฐ์ ๋ฉ์๋๋ฅผ ํ์ธํด๋ณผ ์ ์๊ณ ๋ณ์ num์ ๋ฐ๋ผ ์คํ๋๋ ๋ฉ์๋๊ฐ ๋ฌ๋ผ์ง๋๋ค.
์ฒ์ ์ค์ ๋์ด ์๋ num์ด 4์ด๋ฏ๋ก case 4์ Application.EnableVisualStyles()๊ฐ ์คํ๋ฉ๋๋ค.
EnableVisualStyles ๋ฉ์๋๋ ์์ฒด ๋ก๋๋ ์ด์ ๋ธ๋ฆฌ์ ์ ์ฒด ๊ฒฝ๋ก๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ๋ํ ๋ง์ง๋ง์ Application.EnableVisualStylesInternal()์ ํธ์ถํฉ๋๋ค.
์ด๋ฅผ ํตํด EnableVisualStylesInternal ์ฒซ ๋ฒ์งธ ์ธ์๋ ์ด์
๋ธ๋ฆฌ ํ์ผ ์ด๋ฆ์ด๊ณ ,
๋ ๋ฒ์งธ ์ธ์์ธ ๋ค์ดํฐ๋ธ ๋ฆฌ์์ค ID๊ฐ 101์ธ ๊ฒ๊ณผ,
UnsafeNativeMethods ํด๋์ค์ CreateActivationContext ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
- UnsafeNativeMethods ํด๋์ค
- ๋ค์ดํฐ๋ธ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์ก์ธ์คํ๋๋ฐ ์ฌ์ฉ
- ๋ค์ดํฐ๋ธ ์ฝ๋์์ ์ํธ์์ฉ์ ์ํ ๋ด๋ถ ํด๋์ค
- .NET์์๋ ์์ ํ ์ฝ๋(safe code)์ ์์ ํ์ง ์์ ์ฝ๋(unsafe code)๊ฐ ๊ตฌ๋ถ๋ฉ๋๋ค. ๋ค์ดํฐ๋ธ ์ฝ๋๋ unmanaged code๋ก, ๊ด๋ฆฌ๋์ง ์์ ์์ ํ์ง ์์ ์ฝ๋๋ก ๋ถ๋ฅ๋ฉ๋๋ค. managed code์ธ .NET ์ฝ๋์์ ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ๋ถ์์ ํ ๋ฐฉ๋ฒ์ด๋๋ผ๋ ํธ์ถํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํด๋์ค์
๋๋ค.
- ๋ค์ดํฐ๋ธ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์ก์ธ์คํ๋๋ฐ ์ฌ์ฉ
- CreateActivationContext ๋ฉ์๋
- ์ ํ๋ฆฌ์ผ์ด์
์ ์คํ ์ปจํ
์คํธ๋ฅผ ์์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ API
- ์ ํ๋ฆฌ์ผ์ด์
์คํ๊ณผ ๊ด๋ จ๋ ์ ๋ณด๋ฅผ ์ค์ ํ๊ณ ์คํ ํ๊ฒฝ์ ์ค๋นํ๋๋ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก COM ๊ฐ์ฒด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ํ์ฑํ ์ปจํ
์คํธ๋ฅผ ์ค์ ํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- COM ๋๋ .NET ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ์ํ ๋งค๋ํ์คํธ ๋ฐ ์ด์ ๋ธ๋ฆฌ์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ์ค์ ํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์
์ ์คํ ์ปจํ
์คํธ๋ฅผ ์์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ API
CreateActivationContext ๋ฉ์๋๋ฅผ ํตํด ๊ตฌ์ฒด์ ์ธ DLL ๋ชจ๋ ๋๋ COM ๊ฐ์ฒด ์ธ์คํด์ค ๋ก๋๋ฅผ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ฒด๋ฅผ ์ค์ ํ๊ณ ์์ต๋๋ค.
์ด๋ ๊ฒ EnableVisualStyles ๋ฉ์๋๊ฐ ํธ์ถ๋๊ณ ๋๋ฉด, num ๋ณ์๋ 3์ผ๋ก ์ค์ ๋๊ณ 2๊ฐ์ ๋ฉ์๋ Application.SetCompatibleTextRenderingDefault()์ RecordParam.SelectConfig()๊ฐ ํธ์ถ๋ฉ๋๋ค.
์ด๋ฅผ ๋์ผ๋ก swtich ๋ฌธ์ด ์ข ๋ฃ๋๋ฉด Application.Run(new ReponseListState())๋ฅผ ํธ์ถํฉ๋๋ค.
ReponseListState ๋ฉ์๋๋ switch-case๋ฌธ๊ณผ ์ํ ๋ณ์ num์ ํตํด ์คํ๋ ์ฝ๋๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
์ฒ์ ์ค์ ๋ num=6์ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฅ ๋จผ์ RecordParam.SelectConfig()์ ReponseListState.PostProcess() ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
SelectConfig ๋ฉ์๋๋ ์๋ฌด ์์ ํ์ง ์๊ณ PostProcess๋ false๋ง ๋ฐํํด์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ num์ 2๋ก ์ค์ ๋ฉ๋๋ค.
case 2๋ IL_0C ๋ ์ด๋ธ๋ก ์ด๋ํฉ๋๋ค.
IL_0C์์๋ ctor, CompareVisitor, PostProcess ๋ฉ์๋๊ฐ ํธ์ถ๋๊ณ ์์ต๋๋ค.
๊ทธ์ค CompareVisitor ๋ฉ์๋์ ๋ค์ด๊ฐ๋ณด๋ฉด 258๋ฒ์งธ ์ค์์ this.Text = "Form 1" ๋ผ๋ ๋ช ๋ น์ด๋ฅผ ๋ฐ๊ฒฌํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ "Text" ์์ฑ์ ์ ๊ทผ์/๋ณ๊ฒฝ์(accessor/mutator)์ ์ฐ๊ฒฐ๋์ด ์๊ณ , ์๋ ๊ทธ๋ฆผ์ 292๋ฒ์งธ ์ค์์ ๋ค๋ฅธ ์ ๊ทผ์/๋ณ๊ฒฝ์๋ก ์ค๋ฒ๋ผ์ด๋๋ฉ๋๋ค.
- ์ ๊ทผ์(accessor)
- ํด๋์ค ๋ด๋ถ์ ํ๋ ๊ฐ์ ์ฝ๋ ๋ฉ์๋๋ก, ํ๋์ ๊ฐ์ ์ธ๋ถ์์ ์กฐํํ ์ ์๋๋ก ์ ๊ณตํ๋ ๋ฉ์๋
- ํด๋์ค์ private ํ๋์ ๋ํด ์ธ๋ถ์์ ๊ฐ์ ์ฝ์ ์ ์๊ฒ ํด์ค
- get ์ ๊ทผ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ์๋๋ฉฐ getter๋ผ๊ณ ๋ ๋ถ๋ฆผ
- ๋ณ๊ฒฝ์(mutator)
- ํด๋์ค ๋ด๋ถ์ ํ๋ ๊ฐ์ ์์ ํ๋ ๋ฉ์๋๋ก, ํ๋์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋๋ก ์ ๊ณตํ๋ ๋ฉ์๋
- ํด๋์ค์ private ํ๋์ ๋ํด ์ธ๋ถ์์ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๊ฒ ํด์ค
- set ์ ๊ทผ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ์๋๋ฉฐ setter๋ผ๊ณ ๋ ๋ถ๋ฆผ
- ์ค๋ฒ๋ผ์ด๋(override)
- ๋ถ๋ชจ ํด๋์ค์์ ์ ์๋ ๋ฉ์๋๋ฅผ ์์ ํด๋์ค์์ ์ฌ์ ์ํ๋ ๊ฒ
- ๊ฐ์ ๋ฉ์๋ ํธ์ถ์ ๋ํด ์์ ํด๋์ค๋ง๋ค ๋ค๋ฅด๊ฒ ๋์ํ๊ฒ ํ ์ ์๋ ๋คํ์ฑ(polymorphism)์ ์ง์ํ๊ณ , ์ฝ๋ ์ ์ฐ์ฑ์ ๋์ฌ์ค
์ค๋ฒ๋ผ์ด๋ฉ๋ ์ ๊ทผ์ ๋ด๋ถ์์๋ ResetVisitor ๋ฉ์๋๊ฐ ํธ์ถ๋ฉ๋๋ค.
ResetVisitor()๊ฐ ํธ์ถ๋๋ฉด 5๋ก ์ธํ ๋ ์ํ ๋ณ์์ ์ํด case 5๊ฐ ์คํ๋์ด ๋จผ์ ResourceManager ํด๋์ค๊ฐ ์ธ์คํด์คํ๋๊ณ , (case 3) Vargo ๋ฆฌ์์ค๊ฐ array ๋ณ์์ ๋ก๋๋ฉ๋๋ค. ํด๋น array ๋ณ์์๋ ๋ก๋๋์ด ์คํ๋ ์ธ์ฝ๋ฉ๋ .NET ๋ชจ๋์ ํฌํจํ๊ณ ์์ต๋๋ค. ๋ํ text ๋ณ์์ XOR ํค๋ฅผ ์ค์ ํ๊ณ case 2๋ก ์ด๋ํ์ฌ ๋ฆฌ์์ค ํฌ๊ธฐ(num2)๋ฅผ ์ค์ ํฉ๋๋ค.
๋ก๋๋ ๋ฆฌ์์ค(.NET ๋ชจ๋)์ ์ค์ ํ ํค, ๋ฆฌ์์ค ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ฝ๋ฉ ๊ณผ์ ์ ์ํํฉ๋๋ค.
์ด์ ์คํํ์ฌ ์์ฑ๋๋ ๋ชจ๋์ ํ์ธํด๋ณด๊ฒ ์ต๋๋ค.
ํด๋น ๋ฉ์๋ ๊ณผ์ ์ ๋ชจ๋ ๋ง์น๋ฉด array ๋ณ์์ ๋์ฝ๋ฉ๋, 4D5A(MZ)๋ก ์์ํ๋ ๋ฐ์ดํธ๋ค์ด ์ ์ฅ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๋ชฉ๋ก์ ํ์ธํด๋ณด๋ฉด ์๋ก์ด ๋ชจ๋ SharpStructures๊ฐ ๋ก๋๋์์ต๋๋ค.
์ถ์ถ๋ ๋ชจ๋์ DiE๋ฅผ ํตํด ํ์ธํด๋ณด๋ฉด Smart Assembly Obfuscator๋ก ๋๋ ํ๋์ด ์์์ ํ์ธํ ์ ์์ต๋๋ค.
๋ํ dnSpy๋ฅผ ํตํด์ ์ ๋์ฝ๋ ํ๊ธฐ(\u)์ SmartAssembly ๊ด๋ จ ์์ฑ๋ค์ด ํ์ธ๋ ๊ฒ์ผ๋ก๋ ๋๋ ํ๋์์์ ์ ์ ์์ต๋๋ค.
โ (stage 2) SharpStructures ๋ถ์
- ๋๋ ํ ํด์ ํ์ฌ ๋ก๋ํ๊ธฐ
์ถ์ถํ SharpStructures ๋ชจ๋์ ๋๋ ํ ํด์ ํด์ ์คํ๋๋ .NET ๋ฐ์ด๋๋ฆฌ์ ๋์๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ ค๋ณด๊ฒ ์ต๋๋ค.
ํด๋น ๋ชจ๋์ de4dot์ ํตํด .NET ๋ฐ์ด๋๋ฆฌ์ ๋๋ ํ๋ฅผ ํด์ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ค์ ์คํํด์ Assembly.Load(arrary) (370๋ฒ์งธ ์ค)๊ฐ ์คํ๋๊ธฐ ์ ์์ ๋ฉ์ถ๊ณ , array ๋ฐฐ์ด์ ๋ํด memory ํญ(Memory 1)์ ์ ํํฉ๋๋ค.
๋๋ ํ ํด์ ํ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ณต์ฌํ์ฌ ํด๋น ๋ฉ๋ชจ๋ฆฌ ์์น์ ๋ฎ์ด์จ์ฃผ๋ฉด, ๋๋ ํ ํด์ ๋ ๋ชจ๋๋ก ๊ต์ฒดํด์ฃผ๋ ์์ ์๋ฃ์ ๋๋ค.
GetMethod() ํจ์๋ฅผ ํตํด SharpSturctures ๋ชจ๋์ InvalidCast ๋ฉ์๋๋ฅผ ๊ฐ์ ธ์ค๋ ค๊ณ ์๋ํ๊ณ ์์ผ๋ ํด๋น ๋ฉ์๋ ์์ ๋ถ๋ถ์ breakpoint๋ฅผ ๊ฑธ๊ณ ์คํํด๋ณด๊ฒ ์ต๋๋ค.
Invoke ๋ฉ์๋๋ฅผ ํตํด InvalidCast ๋ฉ์๋๋ก ์ ํ์ ์ํํฉ๋๋ค.
์ด์ ์ ํ๋ ๋ชจ๋์ ๋ถ์ํด๋ณด๊ฒ ์ต๋๋ค.
- SharpStructures(stage2) ๋ถ์ํ๊ธฐ
InvalidCast ๋ฉ์๋์์ ๋ง์ด ํธ์ถ๋๋ Class0 ํด๋์ค๋ฅผ ๋ถ์ํด๋ณด๊ฒ ์ต๋๋ค.
smethod_0๊ณผ smethod_1์ ๋ฐฐ์ด ์กฐ์(manipulating)ํ๋ ๋์ผํ ๋ฉ์๋์ ๋๋ค.
smethod_2์ smethod_4์ ๋ฉ์๋๋ฅผ ํธ์ถ(Invoke)ํ๋ ๋์ผ ๋ฉ์๋์ ๋๋ค.
smethod_3๊ณผ smethod_6์ ์ด์ ๋ธ๋ฆฌ๋ฅผ ๋ก๋(Assembly.Load)ํ๋ ๋์ผ ๋ฉ์๋์ ๋๋ค.
smethod_5์ smethod_7์ ๋ฌธ์์ด์ ์์ฑํ๋ ๋์ผ ๋ฉ์๋์ ๋๋ค.
์ด 8๊ฐ์ ๋ฉ์๋๊ฐ ์์ง๋ง ๋์ผํ ์ฝ๋์ ๋ฉ์๋๊ฐ ์ค๋ณต๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ฅ์ ์ผ๋ก๋ 4๊ฐ์ง๊ฐ ์กด์ฌํฉ๋๋ค.
๋ค์ InvalidCast ๋ฉ์๋๋ก ๋์์ค๋ฉด 25๋ฒ์งธ ์ค์ DemandedResources ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์์ต๋๋ค.
DemandedResources ๋ฉ์๋๋ ResourcesManager ํด๋์ค๋ฅผ ์ธ์คํด์คํํ์ฌ ๋ฆฌ์์ค์ ์ ๊ทผํ๊ณ smethod_5์์ ์์ฑ๋์ด ์ฃผ์ด์ง ๋ฆฌ์์ค ์ด๋ฆ์ ์ฝ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฆฌ์์ค ํ์ผ์์ ํด๋น ๋ฆฌ์์ค ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค.
๋ํ InvalidCast ๋ฉ์๋ 26๋ฒ์งธ ์ค์ ConstructionResponse ๋ฉ์๋๋ฅผ ์ดํด๋ณด๋ฉด
smethod_1์์ ๋ฐ์ดํธ ๋ฐฐ์ด bytes์ ๋ฐ์ ๋น ์๋์ ์์ ํ์(UTF-16)์ผ๋ก ๋ฎ์ด์๋๋ค. ๊ทธ๋ฆฌ๊ณ bytes์ ๋ง์ง๋ง ๋ฐ์ดํธ์ ์ซ์ 112๋ฅผ ์ฌ์ฉํ์ฌ XOR ์ฐ์ฐ์ ์ํํฉ๋๋ค.
์๋ก ํ ๋นํ ๋ฐ์ดํธ ๋ฐฐ์ด array์ ๋ ๋ฒ์ XOR ์ฐ์ฐ์ ์ํํ bytes๋ฅผ ์ ์ฅํฉ๋๋ค. ๊ฒฐ๊ณผ ๋ฐ์ดํธ ๋ฐฐ์ด array์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ํ ์ต์ข ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
ConstructionResponse ๋ฉ์๋๋ XOR ์ฐ์ฐ์ ํตํ ๋์ฝ๋ฉ์ ์ํํ๊ณ ์์ต๋๋ค.
InvalidCast ๋ฉ์๋ ๋ด์ฉ์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
[line 26]
๋ฆฌ์์ค์์ ๋ฐ์ดํธ ์ํ์ค๋ฅผ ์ฝ์ด์ค๊ณ (smethod_5), ๊ทธ ๋ฆฌ์์ค์ ์ด๋ฆ์ smethod_1 ๋ฐํ๊ฐ์ผ๋ก ์ฃผ์ด์ง๋๋ค.
ConstructionResponse ๋ฉ์๋๋ฅผ ํตํด ๋์ฝ๋ฉํ๋ฉด ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ์ฝํ
์ธ ๋ ๋ ํ๋์ ๋ชจ๋์
๋๋ค.
[line 27]
๋ํ ๊ฒฐ๊ณผ ๋ฐฐ์ด์ smethod_6(Assembly.Load)์ ์ํด ๋ก๋๋ฉ๋๋ค.
๋ชจ๋ ์ ํ์ ๋ก๋๋ ์ด์
๋ธ๋ฆฌ์ ์ํด ๋ฐํ๋๊ณ ๊ทธ๋ค ์ค ํ๋๊ฐ ์ ํ๋ฉ๋๋ค.
[line 28-29]
GetTypes()๋ก ๋ฐํ๋ ํ์
์ ๋ํด ๋ชจ๋ public ๋ฉ์๋๊ฐ GetMethods()๋ฅผ ์ฌ์ฉํด ๋ฐํ๋๊ณ ๊ทธ ์ค ํ๋๊ฐ ์ ํ๋ฉ๋๋ค.
[line 30]
๋ง์ง๋ง์ผ๋ก ์ ํ๋ ๋ฉ์๋๋ smethod_4(Invoke)๋ฅผ ํตํด ํธ์ถ๋ฉ๋๋ค.
InvalidCast ๋ฉ์๋ ํตํด์ ์๋ก์ด ๋ชจ๋์ ๋ก๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์๊น๋ ๋๊ฐ์ด ์คํํ๋ฉด์ ๋ฐ๋ผ๊ฐ๋ณด๋ byte_์ PE ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ก๋๋์์ต๋๋ค.
ํ ๋ฒ ๋ ์คํํ์ฌ smethod_6(Assembly.Load) ๋ฉ์๋๋ก ๋ก๋ํ๋ฉด ๋ชจ๋ ๋ชฉ๋ก์์๋ ์ ๋ชจ๋์ ๋ณผ ์ ์์ต๋๋ค.
2๋ฒ์งธ๋ก ๋ก๋๋ DotNetZipAdditionalPlatforms ๋ชจ๋์ ํด๋์ค ๋ฐ ๋ฉ์๋์ ์ด๋ฆ์ด ๊ฐ LajJueXX7RvrQwTLPl.XcuCxUwDbNNwbx89AI, RrRUhxJmfM์ธ ๊ฒ๊ณผ, DiE๋ฅผ ํตํด ํ์ธํ .NET Reactor ์ฌ์ฉ์ผ๋ก ๋ณด์ ํด๋น ๋ชจ๋์ ๋๋ ํ๋์ด ์์ต๋๋ค.
ํฌ์คํ ์ด ๋๋ฌด ๊ธธ์ด์ ธ์ ๋ค์๋ฒ์ ์ด์ด์ ๋ถ์ํด๋ณด๊ฒ ์ต๋๋ค.
Ref. "Malware Analysis Series(MAS) – Article 4", Alexandre Borges