E D R , A S I H C RSS

STL Error Decryptor

1. Before Reading

λ³Έ λ¬Έμ„œλŠ” QuickInstallation For STLErrorDecryptor 의 λ‚΄μš©μ„ λ°±μ—…ν•˜κΈ° μœ„ν•œ λͺ©μ μœΌλ‘œ λ§Œλ“  νŽ˜μ΄μ§€μž…λ‹ˆλ‹€. λ”°λΌμ„œ 원 ν™ˆνŽ˜μ΄μ§€μ˜ μžλ£Œκ°€ 사라지지 μ•Šμ€ 이상 κ°€λŠ₯ν•˜λ©΄ 원 ν™ˆνŽ˜μ΄μ§€μ—μ„œ 글을 μ½μœΌμ…¨μœΌλ©΄ ν•©λ‹ˆλ‹€.
κ°œμΈν™ˆνŽ˜μ΄μ§€κ°€ μΆœμ²˜λΌμ„œ μ–Έμ œμ‚¬λΌμ§€κ²Œ 될지 λͺ¨λ₯΄κ² κ΅°μš”.
μ΄ν•˜ 원 ν™ˆνŽ˜μ΄μ§€μ˜ λ‚΄μš©κ³Ό λ™μΌν•œ λ‚΄μš©λ₯΄ μœ„ν‚€μ˜ λ¬Έλ²•μœΌλ‘œ μž¬κ΅¬μ„±ν•œ 것 μž…λ‹ˆλ‹€.

2. λ“€μ–΄κ°€κΈ° 전에

VC++λΌ κ°€μ§€κ³  STL ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜μ‹œλŠ” 뢄듀이 κ°€μž₯ 많이 λŠλΌλŠ” λΆˆνŽΈν•¨(μ–΄λŠ ν”Œλž«νΌμ΄λ‚˜ λ§ˆμ°¬κ°€μ§€μ΄μ§€λ§Œ)쀑 ν•˜λ‚˜κ°€ λ°”λ‘œ "μ—λŸ¬ λ©”μ‹œμ§€μ— λ‚˜νƒ€λ‚˜λŠ” STL μ»΄ν¬λ„ŒνŠΈκ°€ 무엇인지 도톡 λͺ¨λ₯΄κ² λ‹€"λΌλŠ” 점일 κ²λ‹ˆλ‹€. μ΄λŠ” μ»΄νŒŒμΌλŸ¬κ°€ STL ν…œν”Œλ¦Ώμ„ μΈμŠ€ν„΄μŠ€ν™”ν•  λ•Œ νƒ€μž… 맀개 λ³€μˆ˜κ°€ λͺ¨λ‘ ν¬ν•¨λœ μƒνƒœλ‘œ 전체 이름을 써 버리기 λ•Œλ¬Έμ— STL 책에 λ‚˜μ˜€μ§€λ„ μ•ŠλŠ” 클래슀 이름과 ν…œν”Œλ¦Ώ 이름 등이 마ꡬ νŠ€μ–΄λ‚˜μ˜΄μ€ λ¬Όλ‘ μ΄κ±°λ‹ˆμ™€, μΈμŠ€ν„΄μŠ€ν™”ν•œ 클래슀 이름 μžμ²΄κ°€ μ—„μ²­λ‚˜κ²Œ κΈΈμ–΄μ Έμ„œ, μ½”λ“œ ν•œ μ„에 λŒ€ν•œ μ—λŸ¬ λ©”μ‹œμ§€κ°€ μˆ˜μ‹­ μ—¬ μ„κΉŒμ§€ λ§Œλ“€μ–΄μ§€λŠ” ν˜„μƒμ΄ μΌμ–΄λ‚˜μ§€μš”.
μ΄λŸ¬ν•œ ν˜„μƒμ€ μ΄νŽ™ν‹°λΈŒ STL의 ν•­λͺ© 49μ—μ„œλ„ 닀루어진 μ΄μ•ΌκΈ°μž…λ‹ˆλ‹€. μ›μ €μžλŠ” "많이 μ½μ–΄μ„œ μ΅μˆ™ν•΄μ ΈλΌ"λΌλŠ” 결둠을 내리고 μžˆμ§€λ§Œ, 이 λ¬Έμ œλΌ λ„κ΅¬μ μœΌλ‘œ ν•΄κ²°ν•œ 방법도 μžˆλ‹€λŠ” 언급도 ν•˜κ³  μžˆμ—ˆμ£ . μ—¬κΈ°μ„œ μ΄μ•ΌκΈ°ν•˜λŠ” STL μ—λŸ¬ 해독기(μ΄ν•˜ 해독기)κ°€ λ°”λ‘œ κ·Έκ²ƒμž…λ‹ˆλ‹€. 이 λ„κ΅¬λŠ” VC μ»΄νŒŒμΌλŸ¬κ°€ 좜λ ₯ν•˜λŠ” μ—λŸ¬ λ©”μ‹œμ§€λΌ κ°€λ‘œμ±„μ–΄ STL에 κ΄€λ ¨λœ 뢀뢄을 μ μ ˆν•˜κ²Œ 필터링해 μ€λ‹ˆλ‹€.
μ—­μ‹œ, 잘 μ•„μ‹œκ² μ§€λ§Œ, λ³Έ λ¬Έμ„œλŠ” μ½μœΌμ‹œλŠ” λΆ„κ»˜μ„œ Visual C++ 개발 ν™˜κ²½κ³Ό C++ μ‚¬μš©μ— λΆˆνŽΈν•΄ν•˜μ§€ μ•Šκ³  탐색기 화면을 λ‘λ €μ›Œν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ°€μ • ν•˜μ— μž‘μ„±ν–ˆκ³ , μœˆλ„μš° ν™˜κ²½μ„ μ΅œλŒ€ν•œ μ‚¬μš©ν•˜λŠ” μͺ½μœΌλ‘œ μž‘μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€. :)

3. STL μ—λŸ¬ ν•΄λ…κΈ°μ˜ μž‘λ™ 원리

κ°€) μ—¬λŠ κ°œλ°œλ„κ΅¬μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ VC의 IDEλŠ” κ·Έ μžμ²΄μ— λΉŒλ“œμš© μž₯치(μ»΄νŒŒμΌλŸ¬μ™€ 링컀)λΌ λ‚΄μž₯ν•˜κ³  μžˆμ§€ μ•Šκ³ , 외뢀에 μžˆλŠ” μ»΄νŒŒμΌλŸ¬μ™€ λ§μ»€λΌ μ‹€ν–‰ν•΄μ„œ ν”„λ‘œκ·Έλž¨μ„ λΉŒλ“œν•©λ‹ˆλ‹€. μ»΄νŒŒμΌλŸ¬μ™€ 링컀의 좜λ ₯ κ²°κ³ΌλŠ” μ‹€μ œλ‘œ μ½˜μ†”λ‘œ λΉ μ Έ λ‚˜μ˜€λŠ” 좜λ ₯μ΄μ§€λ§Œ, λ„μž„λ“œ νŒŒμ΄ν”„(named pipe)λž€ 것을 톡해 VC의 IDE둜 λ‹€μ‹œ λ“€μ–΄κ°€ 좜λ ₯(output) μœˆλ„μš°μ— λ””μŠ€ν”Œλ ˆμ΄λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€.
μ»΄νŒŒμΌμ„ 맑은 ν”„λ‘œκ·Έλž¨μ€ CL.EXEλž€ 것인데, 이 ν”„λ‘œκ·Έλž¨μ€ C/C++컴파일러(C2.DLL+C1XX.DLL)λΌ λ‚΄λΆ€μ μœΌλ‘œ μ‹€ν–‰μ‹œν‚€λŠ” ν”„λ‘ νŠΈμ—”λ“œμ˜ μ—­ν• λ§Œμ„ λ§‘μŠ΅λ‹ˆλ‹€. VC IDEλŠ” μ»΄νŒŒμΌμ‹œ 이 ν”„λ‘œκ·Έλž¨μ„ μ‚¬μš©ν•˜λ„λ‘ λ‚΄μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜) μ›λž˜μ˜ C/C++ μ»΄νŒŒμΌλŸ¬λΌ μž‘λ™μ‹œν‚€λ˜ κ·Έ κ²°κ³ΌλΌ ν•„ν„°λ§ν•΄μ£ΌλŠ” κΈ°λŠ₯이 μΆ”κ°€λœ ν”„λ‘ νŠΈμ—”λ“œλΌ CL.EXEμ΄λž€ μ΄λ¦„μœΌλ‘œ ν–‰μ„Έ(?)ν•˜κ²Œ ν•˜λ©΄, VC의 IDEλ‚˜ 기쑴의 κ°œλ°œν™˜κ²½μ— μ „ν˜€ 영ν–₯을 주지 μ•Šκ³  ν•„ν„°λ§λ§Œ ν•  수 있게 될 κ²λ‹ˆλ‹€. 해독기 νŒ¨ν‚€μ§€μ—λŠ” 이런 CL.EXEκ°€ ν¬ν•¨λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 이것을 "ν”„λ‘μ‹œ(proxy) CL"이라고 λΆ€λ¦…λ‹ˆλ‹€.

λ‹€) ν•΄λ…κΈ°λŠ” 이런 μƒνƒœμ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€.

  • μ›λž˜μ˜ CL,EXE이 CL2.EXE둜 리λ„μž„λ¨
  • 해독기 νŒ¨ν‚€μ§€μ— ν¬ν•¨λœ ν”„λ‘μ‹œ CL이 μ›λž˜μ˜ CL.EXE이 있던 μžλ¦¬λΌ λŒ€μ‹ ν•¨
  • νŽ„ 슀크립트 인터프리터(PERL.EXE)κ°€ μ‚¬μš© κ°€λŠ₯함
  • 해독기 νŒ¨ν‚€μ§€μ— ν¬ν•¨λœ μ—λŸ¬ ν•„ν„° 슀크립트(STLfilt.pl)κ°€ μ‚¬μš©κ°€λŠ₯ 함

라)ν•΄λ…κΈ°λŠ” μœ„μ˜ μƒνƒœμ—μ„œ μ΄λ ‡κ²Œ μž‘λ™ν•©λ‹ˆλ‹€.
  • ν”„λ‘μ‹œ CL(CL,EXE)이 CL2.EXEλΌ μ‹€ν–‰ν•¨
  • νŽ„ 슀크립트 인터프리터(PERL.EXE)λΌ μ‹€ν–‰ν•˜κ³ , μ—λŸ¬ ν•„ν„° 슀크립트(STLfilt.pl)λΌ λ„μ›€
  • CL2.EXEκ°€ λ‚΄λŠ” 컴파일 κ²°κ³ΌλΌ μ—λŸ¬ ν•„ν„° μŠ€ν¬λ¦½νŠΈμ— νŒŒμ΄ν”„(pipe)λΌ ν†΅ν•΄ ν†΅κ³Όμ‹œν‚΄
  • μ—λŸ¬ ν•„ν„° μŠ€ν¬λ¦½νŠΈλŠ” μžμ‹ μ΄ 받은 컴파일 κ²°κ³ΌλΌ ν•„ν„°λ§ν•˜μ—¬ λ‹€μ‹œ VC의 IDE둜 전솑

전체적인 λ™μž‘ μ›λ¦¬λΌ κ°„λž΅ν•˜κ²Œ μ•„λž˜μ˜ 그림으둜 정리해 λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

WorkingMethod.gif

마) λ³„λ‘œ λ³΅μž‘ν•΄λ³΄μ΄μ§„ μ•Šμ§€λ§Œ, λ¬Έμ œλŠ” 이 μž‘μ—…μ„ μ†μœΌλ‘œ λͺ¨λ‘ ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€λŠ” κ²λ‹ˆλ‹€. μ—¬κΈ°κΉŒμ§€ λ‹€ μ½μœΌμ‹  뢄은 이제 본문으둜 λ“€μ–΄κ°‘μ‹œλ‹€.

4. ν•„μš”ν•œ ν”„λ‘œκ·Έλž¨κ³Ό λ„κ΅¬λΌ λ°›μ•„μ„œ μ€λΉ„ν•˜κΈ°

κ°€) ν•΄λ…κΈ°λΌ μ„μΉ˜ν•˜λŠ”λ° ν•„μš”ν•œ μ€λΉ„물은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. ν•˜λ‚˜μ”© λ°›μ•„λ‘‘μ‹œλ‹€. μ°Ύμ•„λ‹€λ‹ˆκΈ° κ·€μ°μœΌμ‹  뢄은 이 μ›Ή μ‚¬μ΄νŠΈμ˜ μžλ£Œμ‹€μ—μ„œ λͺ¨λ‘ λ°›μ•„ 와도 λ˜κ² μ§€μš”.

  • STL μ—λŸ¬ 해독기 νŒ¨ν‚€μ§€ (Win32용) : STLfilt.zipμ΄λž€ 이름을 가지고 μžˆμŠ΅λ‹ˆλ‹€ (http://ww.bdsoft.com/tools/stlfilt.html)
  • νŽ„ 슀크립트 인터프리터(Win32용) : μ—¬κΈ°μ„œλŠ” ActivePerl을 μ‚¬μš©ν•©λ‹ˆλ‹€. (http://ww.activestate.coml)
  • MSVCP60.DLL : STL μ—λŸ¬ ν•΄λ…κΈ°μ˜ μ»¨νŠΈλ‘€λŸ¬κ°€ μ‚¬μš©ν•˜λŠ” DLLμž…λ‹ˆλ‹€ (μ˜΅μ…˜).

λ‚˜) νŽ„μŠ€ν¬λ¦½νŠΈ μΈν„°ν”„λ¦¬ν„°λΌ μ„μΉ˜ν•©λ‹ˆλ‹€.(μ €λŠ” D:\에 μ„μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€)

λ‹€) λ§Œλ§Œν•΄ λ³΄μ΄λŠ” 디렉토리에닀가 STLfilt.zip의 압좕을 ν’‰λ‹ˆλ‹€. (μ €λŠ” H:\STLfilt λž€ 디렉토리에 압좕을 ν’€μ—ˆμŠ΅λ‹ˆλ‹€.)

FilesUnzipped.gif

라) κΌ­ μ•Œκ³  μžˆμ–΄μ•Ό ν•˜λŠ” 파일만 κ°„λ‹¨νžˆ μ„λͺ…ν•˜λ©΄ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. 일단 ν›‘μ–΄λ§Œ λ³΄μ‹œμ£ .

  • CL.EXE : VCμ—μ„œ μ‚¬μš©ν•˜λŠ” μ›λž˜μ˜ CL.EXEλΌ λŒ€μ‹ ν•  ν”„λ‘μ‹œ CL.
  • STLTask.EXE : ν•΄λ…κΈ°μ˜ 필터링 κΈ°λŠ₯을 ν† κΈ€ν•˜λŠ” 컨트둀러둜, μœˆλ„μš° μž‘μ—…ν‘œμ‹œμ„(TaskBar)에 μœ„μΉ˜ν•˜κ²Œ λ©λ‹ˆλ‹€.
  • Proxy-CL.INI : ν”„λ‘μ‹œ CL이 μž‘λ™ν•˜λŠ” ν™˜κ²½μ„ μ œκ³΅ν•˜λŠ” INI 파일.
  • STLfilt.pl : 컴파일러의 좜λ ₯ κ²°κ³ΌλΌ ν•„ν„°λ§ ν•΄μ£ΌλŠ” νŽ„ 슀크립트.이 파일의 μœ„μΉ˜λΌ μž˜ κΈ°μ–΅ν•΄λ‘μ„Έμš”.
  • CL.CPP: ν”„λ‘μ‹œ CL의 μ†ŒμŠ€ μ½”λ“œ. κ΄€μ‹¬μžˆλŠ” 뢄은 ν•œ 번 λ³΄μ„Έμš”. κ½€ 잘 μ§°μŠ΅λ‹ˆλ‹€.
마) λ‹€ λ˜μ—ˆμœΌλ©΄, 4둜 λ„˜μ–΄κ°‘λ‹ˆλ‹€.

5. ν”„λ‘μ‹œ CL μ„μΉ˜ν•˜κΈ°

ν”„λ‘μ‹œ CL이 μ›λž˜μ˜ CL.EXE의 ν–‰μ„ΈλΌ ν•  수 μžˆλ„λ‘ ν•˜λŠ” κ³Όμ •μž…λ‹ˆλ‹€.

κ°€) Visual C++κ°€ μ„μΉ˜λœ λ””λ ‰ν† λ¦¬λ‘œ μ΄λ™ν•˜κ³ , μ—¬κΈ°μ„œ \bin λ””λ ‰ν† λ¦¬κΉŒμ§€ μ°Ύμ•„ λ“€μ–΄κ°‘λ‹ˆλ‹€. (제 κ²½μš°μ—λŠ” D:\Program Files2\Microsoft Visual Studio .NET\Vc7\binμž…λ‹ˆλ‹€.) μ œλŒ€λ‘œ κ°”μœΌλ©΄, μ›λž˜μ˜ CL을 λ°±μ—…μš©μœΌλ‘œ λͺ¨μ…”λ‹€ 놓을 ν΄λ”λΌ ν•˜λ‚˜ λ§Œλ“­λ‹ˆλ‹€. (제 κ²½μš°μ—λŠ” native_clμ΄λž€ μ΄λ¦„μœΌλ‘œ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.) 그리고 λ‚˜μ„œ CL.EXEλΌ κ·Έ 폴더에 볡사해 λ‘‘λ‹ˆλ‹€.

OriginalCLFolderMaking.gif

λ‚˜) \bin 디렉토리에 μžˆλŠ” CL.EXEλΌ CL2.EXE둜 이름을 λ°”κΎΈμ–΄ μ€λ‹ˆλ‹€.

CL2Rename.gif

λ‹€) 이젠 ν”„λ‘μ‹œ CL의 λ™μž‘μ— ν•„μš”ν•œ ν™˜κ²½ μ˜΅μ…˜μ„ μ œκ³΅ν•˜λŠ” Proxy-CL.INI νŒŒμΌμ„ μ—¬λŸ¬λΆ„μ˜ κ°œλ°œν™˜κ²½μ— 맞게 고쳐야 ν•©λ‹ˆλ‹€. ν…μŠ€νŠΈ νŽΈμ§‘κΈ°λ‘œ Proxy-CL.INIλΌ μ—΄λ©΄ μ•„λž˜μ˜ common, proxy.cl, stltask.exe 뢀뢄이 λͺ¨λ‘ λΉ„μ–΄ μžˆλŠ”λ°, μœ—λΆ€λΆ„μ˜ 주석문을 μ°Έκ³ ν•˜λ©΄μ„œ ν™˜κ²½ λ³€μˆ˜λΌ κ³ μ³μ€λ‹ˆλ‹€. λ°˜λ“œμ‹œ μ„μ •ν•΄μ•Ό ν•˜λŠ” μ˜΅μ…˜μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

  • FILTER_SCRIPT : 필터링 νŽ„ 슀크립트(STLfilt.zip)의 전체 경둜. λ°˜λ“œμ‹œ 파일 μ΄λ¦„κΉŒμ§€ 써 μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • TOGGLE_FILE : 필터링 ν™œμ„±ν™”λΌ ν† κΈ€λ§ν•˜λŠ” 파일이 μœ„μΉ˜ν•  디렉토리. 생각할 μ‹œκ°„ μ—†λŠ” 뢄은 STLfilt.zip의 압좕을 ν‘Ό μœ„μΉ˜λ‘œ μ •ν•΄μ£Όμ„Έμš”.
  • PERL_EXE : νŽ„ 슀크립트 인터프리터(PERL.EXE)의 전체 경둜. μ—­μ‹œ 파일 μ΄λ¦„κΉŒμ§€ 써 μ£Όμ„Έμš”.
  • CL_DIR : VC의 컴파일러 ν”„λ‘ νŠΈμ—”λ“œμΈ CL.EXEκ°€ μœ„μΉ˜ν•œ 디렉토리. 이 뢀뢄을 μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ 해독기 μ»¨νŠΈλ‘€λŸ¬κ°€ μ œλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ•„λž˜μ˜ 그림은 μ €μ˜ Proxy-CL.INI νŒŒμΌμž…λ‹ˆλ‹€.
ProxyCLConfigure.gif

라) μ΄λ ‡κ²Œ νŽΈμ§‘ν•œ Proxy-CL.INIλΌ μœˆλ„μš° 디렉토리에 λ³΅μ‚¬ν•©λ‹ˆλ‹€. μœˆλ„μš° λ””λ ‰ν† λ¦¬λž€ μœˆλ„μš° 98/ME 등에선 \WINDOWS이겠고, μœˆλ„μš° NT/2000/XP 등에선 \WINNT μ΄κ² μ§€μš”. 즉 μš΄μ˜μ²΄μ œμ™€ ν”„λ‘œνŒŒμΌ νŒŒμΌλ“€μ΄ λ“€μ–΄ μžˆλŠ” κ³³μž…λ‹ˆλ‹€. ν”„λ‘μ‹œ CL은 기본적으둜 이 μœˆλ„μš° λ””λ ‰ν† λ¦¬μ—μ„œ 읽은 Proxy-CL.INI을 가지고 λ™μž‘ μ˜΅μ…˜μ„ μ •ν•©λ‹ˆλ‹€.
ProxyCLConfigFileCopy.gif

마) 이제, STLfilt.zip의 압좕을 ν‘Ό λ””λ ‰ν† λ¦¬μ—μ„œ ν”„λ‘μ‹œ CL을 λ³΅μ‚¬ν•΄μ„œ VC의 \bin 디렉토리에 λΆ™μž…λ‹ˆλ‹€.
ProxyCLCopy.gif

κ°™μž–μ§€λ§Œ νž˜λ“  일은 이제 λλ‚¬μŠ΅λ‹ˆλ‹€. ^^ λ‹€ λ˜μ—ˆμœΌλ©΄ 5번으둜 λ„˜μ–΄κ°‘μ‹œλ‹€.

6. 해독기 컨트둀러 μ‹€ν–‰ν•˜κΈ°

ν”„λ‘μ‹œ CL의 μ—λŸ¬ 필터링을 ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•˜λŠ” 역할을 맑은 ν”„λ‘œκ·Έλž¨μΈ STLtask.exeλΌ μ‹€ν–‰μ‹œμΌœ νƒœμŠ€ν¬λ°”μ— λ„μš°λŠ” κ³Όμ •μž…λ‹ˆλ‹€.

κ°€) STLfilt.zip의 압좕을 ν‘Ό λ””λ ‰ν† λ¦¬μ—μ„œ STLtask.exeλΌ μ‹€ν–‰ν•©λ‹ˆλ‹€. 별 λ¬Έμ œκ°€ μ—†μœΌλ©΄ μ•„λž˜μ™€ 같은 λŒ€ν™” μƒμžκ°€ λœΉλ‹ˆλ‹€.
STLTaskFirstRun.gif

μ°Έκ³ ) λŒ€ν™” μƒμžμ˜ 상단을 보면 "CL.EXEλΌ CL.STL둜 λ³΅μ‚¬ν–ˆλ‹€"λž€ λ©”μ‹œμ§€κ°€ λ³΄μ΄λŠ”λ°, μ΄λŠ” ν”„λ‘μ‹œ CL도 λ°±μ—…μš©μœΌλ‘œ ν•˜λ‚˜ 볡사해 λ‘”λ‹€λŠ” λœ»μ΄λ‹ˆ κ΄˜λ…μΉ˜ μ•Šμ•„λ„ λ©λ‹ˆλ‹€.

μ°Έκ³ 2) 이 λŒ€ν™” μƒμžκ°€ λœ¨μ§€ μ•Šκ³  "MSVCP60.DLL이 μ—†λ‹€" λΌλŠ” λ©”μ‹œμ§€κ°€ λ‚˜μ˜€λ©΄ 이 DLL을 μ‹œμŠ€ν…œ 디렉토리에 볡사해 μ£Όμ„Έμš”.

λ‚˜) μœ„μ˜ λŒ€ν™” μƒμžμ—μ„œ Back to taskbar λ²„νŠΌμ„ λˆ„λ₯΄λ©΄ μœˆλ„μš°μ˜ μž‘μ—… ν‘œμ‹œμ„(νƒœμŠ€ν¬λ°”)에 μ•„μ΄μ½˜μ΄ ν•˜λ‚˜ λœΉλ‹ˆλ‹€. 이 μ•„μ΄μ½˜μ„ 였λ₯Έμͺ½ ν΄λ¦­ν•˜λ©΄ 메뉴가 λœΉλ‹ˆλ‹€.
STLTaskMenu.gif

μ—¬κΈ°μ„œ "Enable Filtering"을 μ„ νƒν•˜λ©΄ κ·Έλ•ŒλΆ€ν„° STL μ—λŸ¬ 필터링이 κ°€λŠ₯ν•΄μ§‘λ‹ˆλ‹€. 그리고, μ•žμœΌλ‘œ STL μ—λŸ¬ 필터링을 ν™œμ„±ν™”ν•˜κ±°λ‚˜ λΉ„ν™œμ„±ν™”ν•  λ•Œμ—λŠ” 이 νƒœμŠ€ν¬λ°”μ˜ μ•„μ΄μ½˜μ„ μ‚¬μš©ν•˜λ©΄ λ©λ‹ˆλ‹€(Enable filtering/Disable filtering을 μ„ νƒν•˜λ©΄ 되겠죠). 필터링이 ν™œμ„±ν™” λ˜μ–΄ μžˆλŠλƒ 그렇지 μ•ŠμœΌλƒμ˜ μ—¬λΆ€λŠ” μž‘μ—… ν‘œμ‹œμ„μ˜ μ•„μ΄μ½˜ 색깔( STLTaskActIcon.gif은 ν™œμ„±ν™”λ˜μ—ˆλ‹€λŠ” 뜻)둜 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

7. ν…ŒμŠ€νŠΈ!

이제 λ‹€ λλ‚¬μŠ΅λ‹ˆλ‹€. 해독기가 μ œλŒ€λ‘œ μ„μΉ˜λ˜μ—ˆλŠ”μ§€ ν™•μΈν•˜λŠ” 의λΈμ—μ„œ μ—λŸ¬λΌ μΌμœΌμΌœλ΄μ•Όκ² μŠ΅λ‹ˆλ‹€.^^

κ°€) VC++λΌ μ‹€ν–‰μ‹œν‚€κ³ , μ•„λž˜μ™€ 같이 ν”„λ‘œκ·Έλž¨μ„ 써 λ΄…μ‹œλ‹€.
~cpp 
#include<string>
using namespace std;

int main()
{
   string s(10); // 컴파일 μ—λŸ¬λΌ μΌμœΌν‚€λŠ” λ¬Έμž₯, ν•˜λ‚˜μ˜ 맀개 λ³€μˆ˜λΌ λ°›λŠ” string μƒμ„±μžλŠ” ν• λ‹Ήμžλ§Œμ„ λ°›μŠ΅λ‹ˆλ‹€.
   return 0;
}

λ‚˜) Buildλ‚˜ Complie λͺ…령을 λ‚΄λ €μ„œ 이 μ†ŒμŠ€λΌ μ»΄νŒŒμΌν•΄ λ΄…μ‹œλ‹€.

-> STL 필터링이 ν™œμ„±ν™”λ˜μ–΄ μžˆμ§€ μ•Šμ•˜μ„ λ•Œμ˜ 컴파일 κ²°κ³Ό(VC++.NET의 경우)λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. 절망적인 μ•”ν˜Έκ°€ λ„λΈŒλŸ¬μ Έ μžˆμŒμ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.


~cpp 
μ»΄νŒŒμΌν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

     ****** {BD Software Proxy CL v2.26} STL Message Decryption is Off ******

Test.cpp
h:\MyProgrammingLab\JunkRoom\Weired_C++\Test.cpp(6) : 
error C2664: 'std::basic_string<_Elem,_Traits,_Ax>::basic_string(const std::basic_string<_Elem,_Traits,_Ax>::_Alloc &) with [_Elem=char,_Traits=std::char_traits<char>,_Ax=std::allocator<char>]' : 맀개 λ³€μˆ˜ 1을(λΌ) 'int'μ—μ„œ 'const std::basic_string<_Elem,_Traits,_Ax>::_Alloc & with [_Elem=char,_Traits=std::char_traits<char>,_Ax=std::allocator<char>]'(으)둜 λ³€ν™˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€.; 원인: 'int'μ—μ„œ 'const std::basic_string<_Elem,_Traits,_Ax>::_Alloc with [_Elem=char,_Traits=std::char_traits<char>,_Ax=std::allocator<char>]'(으)둜 λ³€ν™˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€.; μ†ŒμŠ€ ν˜•μ‹μ„ κ°€μ Έμ˜¬ 수 μžˆλŠ” μƒμ„±μžκ°€ μ—†κ±°λ‚˜ μƒμ„±μž μ˜€λ²„λ‘œλ“œ 확인이 λͺ¨ν˜Έν•©λ‹ˆλ‹€.

-> STL 필터링이 ν™œμ„±ν™”λ˜μ–΄ μžˆμ„ λ•Œμ˜ 컴파일 κ²°κ³Ό(VC++.NET의 경우)λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. 참으둜 λ§Žμ€ 뢀뢄이 μ•ŒκΈ° μ‰½κ²Œ λ˜μ–΄ μžˆμŒμ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.


~cpp 
μ»΄νŒŒμΌν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

  ****** {BD Software Proxy CL v2.26} STL Message Decryption is ON! ******

Test.cpp
h:\MyProgrammingLab\JunkRoom\Weired_C++\Test.cpp(6): 
error C2664: 'string::basic_string(alloc &)': 맀개 λ³€μˆ˜ 1을(λΌ) 'int'μ—μ„œ 'alloc &'(으)둜 λ³€ν™˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€.;원인: 'int'μ—μ„œ 'alloc'(으)둜 λ³€ν™˜ν•  수 μ—†μŠ΅λ‹ˆλ‹€.; μ†ŒμŠ€ ν˜•μ‹μ„ κ°€μ Έμ˜¬ 수 μžˆλŠ” μƒμ„±μžκ°€ μ—†κ±°λ‚˜ μƒμ„±μž μ˜€λ²„λ‘œλ“œ 확인이 λͺ¨ν˜Έν•©λ‹ˆλ‹€.

μ°Έκ³ ) VC++.NET을 μ‚¬μš©ν•˜μ‹œλŠ” λΆ„μ˜ κ²½μš°μ—” 컴파일 전에 λ°˜λ“œμ‹œ /WL μ˜΅μ…˜μ„ μ£Όμ–΄μ•Ό ν•©λ‹ˆλ‹€. /WL μ˜΅μ…˜μ€ λͺ¨λ“  μ—λŸ¬ 및 κ²½κ³  λ©”μ‹œμ§€λΌ ν•œ μ„λ‘œ ν‘œμ‹œν•΄ μ£ΌλŠ” μ˜΅μ…˜μž…λ‹ˆλ‹€. VC++.NET은 μ†ŒμŠ€ μ½”λ“œ ν•œ μ„에 λŒ€ν•œ μ—λŸ¬ λ©”μ‹œμ§€λΌ μ—¬λŸ¬ μ„에 걸쳐(\nλ¬ΈμžλΌ λΌμ›Œλ„£μ–΄μ„œ) ν‘œμ‹œν•˜λŠ”λ°, μ—λŸ¬ 필터링 μŠ€ν¬λ¦½νŠΈλŠ” μ—λŸ¬ λ©”μ‹œμ§€κ°€ ν•œ μ„λ‘œ λ˜μ–΄ μžˆμ„ λ•Œ μž¬λŒ€λ‘œ λ™μž‘ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. μ•„λž˜μ™€ 같이 ν”„λ‘œμ νŠΈ 속성 νŽ˜μ΄μ§€μ—μ„œ C/C++의 λͺ…λ Ήμ„ ν•­λͺ©μ„ μ„ νƒν•œ ν›„ /WL μ˜΅μ…˜μ„ μΆ”κ°€ν•©μ‹œλ‹€.

8. λ¬Έμ„œμ •λ³΄ 및 좜처

λ¬Έμ„œ 정보
졜초 μž‘μ„± :2001/04/24
μ΅œμ’… μ—…λ°μ΄νŠΈ : 2001/04/26
ν¬μŠ€νŒ… : 2001/04/26
적용 ν”Œλž«νΌ : Win32 / VC++ 6 & VC++.NET
μž‘μ„±/μ €μž‘μž: 곽용재 (kwak101@hitel.net)
원문)http://www.kwak101.pe.kr/kwak101/works/InternData/STLDecryptor_QuickGuide.html

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:27:57
Processing time 0.0390 sec