æ§æãã¡ã€ã« ãªãã¡ã¬ã³ã¹
æ§æãã¡ã€ã«ã®ç·šéæ¹æ³ã«ã€ããŠã¯ãä¿è·ã®æ¡å€§ãŸãã¯æ§æãšãã£ã¿ãŒ ã€ã³ã¿ãŒãã§ã€ã¹ãåç §ããŠãã ããã
- ããŒãžã§ã³
- ãããã㣠ãªã¹ããšããããã£
- ã°ããŒãã« ãªãã·ã§ã³ ã»ã¯ã·ã§ã³
- å ¥å管ç
- library ãªãã·ã§ã³
- VerboseãQuietãInvestigate ãªãã·ã§ã³
- SuppressIldasm ã°ããŒãã« ãªãã·ã§ã³
- ãããã° ãªãã·ã§ã³
- NoDotfuscatorAttribute ãªãã·ã§ã³
- å ¥åã¢ã»ã³ã㪠ãªã¹ã
- ã¢ã»ã³ããªåäœã®ã©ã€ãã©ãª ã¢ãŒã
- ã¢ã»ã³ããªåäœã®å®£èšã«ããé£èªå
- ã¢ã»ã³ããªåäœã®å·®ã蟌ã¿åŠç
- ã¢ã»ã³ããªåäœã® XAML ã®å€æã¢ãŒã
- ãŠãŒã¶ãŒå®çŸ©ã®ã¢ã»ã³ã㪠ããŒã ãã¹
- åºåãã£ã¬ã¯ããª
- äžæãã£ã¬ã¯ããª
- é£èªåå±æ§ã®æ©èœå²ãåœãŠ
- ååã®å€æŽã»ã¯ã·ã§ã³
- ååã®å€æŽèŠå
- ååã®å€æŽãªãã·ã§ã³
- ååã®å€æŽã®å¯Ÿè±¡é€å€ãªã¹ã
- ååã®å€æŽã®åç §èŠå
- åºåå²ãåœãŠãã¡ã€ã«
- HTML 圢åŒã®ååã®å€æŽã¬ããŒã
- å ¥åå²ãåœãŠãã¡ã€ã«
- å¶åŸ¡ãããŒã®é£èªåã»ã¯ã·ã§ã³
- å¶åŸ¡ãããŒã®é£èªåã¬ãã«
- å¶åŸ¡ãããŒã®é£èªåãªãã·ã§ã³
- å¶åŸ¡ãããŒã®å¯Ÿè±¡é€å€ãªã¹ã
- æååã®æå·åã»ã¯ã·ã§ã³
- é€å»ã»ã¯ã·ã§ã³ïŒäžèŠã³ãŒãã®é€å»ïŒ
- é€å»ç¡å¹ãªãã·ã§ã³
- ConstOnly ãªãã·ã§ã³
- é€å»ããªã¬ãŒ ãªã¹ã
- æ¡ä»¶ä»ã察象éžæãªã¹ã
- é€å»ã®åç §èŠå
- é€å»ã¬ããŒã
- ãªã³ã¯ ã»ã¯ã·ã§ã³
- PreMark ã»ã¯ã·ã§ã³
- 眲åã»ã¯ã·ã§ã³
- ããžã¿ã«çœ²åã»ã¯ã·ã§ã³
- EventList ã»ã¯ã·ã§ã³
- PreEmptive Analytics ã»ã¯ã·ã§ã³
- æ¡åŒµå±æ§ã»ã¯ã·ã§ã³
- SmartObfuscation ã»ã¯ã·ã§ã³
- XML æ§æãã¡ã€ã«ã«é¢ãã泚æ
- ã«ã¹ã¿ã èŠå
Dotfuscator æ§æãã¡ã€ã«ã«ã¯ãä»»æã®ååãŸãã¯æ¡åŒµåãä»ããããšãã§ããŸãããéåžžã®æ¡åŒµå㯠.xml
ã§ãã
æ§æãã¡ã€ã«ã«ã¯ãæå®ããã¢ããªã±ãŒã·ã§ã³ãã©ã®ããã«é£èªååŠçããããã«ã€ããŠã®æ
å ±ãå«ãŸããŠããŸãã
æ§æãã¡ã€ã«ã¯ãdotfuscator_v2.5.dtd
ïŒãŸãã¯ãã以åã®ãã®ïŒã«æºæ ãã XML ããã¥ã¡ã³ãã§ãã
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãDotfuscator ã® XML æ§æãã¡ã€ã«ã«ã€ããŠèª¬æããŸãã æ§æãã¡ã€ã«ãçæããããã«ãVisual Studioãæ§æãšãã£ã¿ãŒãã³ãã³ãã©ã€ã³ã®ãããã®ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠããå Žåã«ããªãã¡ã¬ã³ã¹ãšããŠåœ¹ç«ã€ããã«ãåæ§æãªãã·ã§ã³ã詳ãã解説ããŸãã
ããŒãžã§ã³
.xml ãã¡ã€ã«ã® Version å±æ§ã¯å¿ é æ å ±ã§ããããå©çšã«ãªã Dotfuscator ã®ããŒãžã§ã³ã«é©åããŠããå¿ èŠããããŸãã Version å±æ§ã¯ãæºæ ãã DTD ã®ããŒãžã§ã³çªå·ã«äžèŽããå¿ èŠããããŸãã Dotfuscator ã®ããæç¹ã®ãªãªãŒã¹ã¯ã以åã®ããŒãžã§ã³ããå€æŽãããŠããªãæ§æãã¡ã€ã«ã䜿çšã§ããããã«èšèšãããŠããŸãã ããšãã°ãVersion 1.0 ã®æ§æãã¡ã€ã«ã䜿çšã㊠Dotfuscator 1.1 ãå®è¡ã§ããŸãããã®ãšããæ§æãã¡ã€ã«ãç·šéããå¿ èŠã¯ãããŸããã
ããŒãžã§ã³ïŒ
<dotfuscator version="2.2">
ãããã㣠ãªã¹ããšããããã£
<propertylist>
ïŒãããã㣠ãªã¹ãïŒã»ã¯ã·ã§ã³ã¯çç¥å¯èœã§ãããæ§æãã¡ã€ã«ã§åŸããå©çšãããå¯èœæ§ã®ããïŒ<ããããã£>
ãšåŒã°ããïŒå€æ°ã®å®çŸ©ããã³å€ã®ä»£å
¥ãè¡ãããšãã§ããŸãã
ãã®ã»ã¯ã·ã§ã³ã§å®çŸ©ããããããã£å®çŸ©ã¯ãæ§æããããã£ãšåŒã°ããŸãã
æ§æããããã£ïŒ
<!-- æ¡åŒµå¯èœãªããããã£ãå®çŸ©ããŸã -->
<!-- çç¥å¯èœ -->
<propertylist>
<property name="name" value="myapp"/>
<property name="outdir" value="c:\myapp\out"/>
</propertylist>
å€æ°ãŸãã¯ããããã£åç §ã¯ããã®ã»ã¯ã·ã§ã³å ã§å®çŸ©ããªããŠããæ§æãã¡ã€ã«å ã§äœ¿çšããããšã¯ã§ããŸãã ããšãã°ãã³ãã³ã ã©ã€ã³ã§å€æ°ãå®çŸ©ããããç°å¢å€æ°ãå©çšããããšãã§ããŸãã ããããã£ã¯ã次ã®ã¢ã«ãŽãªãºã ã䜿çšããŠãã®ããããã£ã«é¢é£ä»ããããå€ãæ€çŽ¢ããæååã®çœ®ãæããè¡ãããšã«ãã£ãŠæ©èœããŸãã
- å€éšã®ãããã㣠ãªã¹ãã§å€ã確èªããŸãã
- èŠã€ãããªãå Žåã¯ãããããã£ãšåãååã®ç°å¢å€æ°ã確èªããŸãã
- ããã§ãèŠã€ãããªãå Žåã¯ãæ§æãã¡ã€ã«ã® propertylist ã»ã¯ã·ã§ã³ã«æ§æã®å®çŸ©ããªããã©ããããã§ãã¯ããŸãã
- ããã§ãèŠã€ãããªãå Žåã¯ãå€ã«ç©ºã®æååã䜿çšããŸãã
å€éšã®ããããã£ã¯ãâp
ãªãã·ã§ã³ã䜿çšããŠãã³ãã³ã ã©ã€ã³ããæž¡ãããŸãã
çµã¿èŸŒã¿ã®å€éšããããã£ã«ã¯æ¬¡ã® 3 ã€ããããŸãã
applicationdir
ãDotfuscator ã®ã€ã³ã¹ããŒã« ãã£ã¬ã¯ããªãè¡šããŸãappdatadir
ãDotfuscator ã®ããŒã«ã« ããŒã¿ ãã£ã¬ã¯ããªãè¡šããŸãconfigdir
ãæ§æãã¡ã€ã«ãååšãããã£ã¬ã¯ããªã瀺ããŸã
ããããã£ã¯ãæ§æãã¡ã€ã«ã®äœæã«åœ¹ç«ã¡ãŸãããã®æ§æãã¡ã€ã«ã¯ãè€æ°ã®ã¢ããªã±ãŒã·ã§ã³ãåãã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªããŒãžã§ã³ããããã¯ããŸããŸãªãã«ãç°å¢éã§ã®ç§»æ€ã容æã«ãããã³ãã¬ãŒããšããŠã®åœ¹å²ãæãããŸãã ããããã£ã¯ã次ã®æ§æã§åç §ãããŸãã
ããããã£ã®æ§æïŒ
${property_name}
ããããã£åç
§ã¯å€§æåãšå°æåãåºå¥ããã®ã§ã${OutDir}
㯠${outdir}
ãšã¯ç°ãªãããããã£ãåç
§ããŸãã
çŸåšãããããã£ã®åç
§ã¯ã<file>
èŠçŽ ã® dir
å±æ§ãŸã㯠name
å±æ§ã®å€ãšããŠã®ã¿äœ¿çšã§ããæ§æãã¡ã€ã«ã®ã©ã®å Žæã§ã䜿çšã§ããããã§ã¯ãããŸããã
<file>
èŠçŽ ã䜿çšããã»ã¯ã·ã§ã³ã®äžèŠ§ã¯ä»¥äžã®ãšããã§ãã
- inputassembly
- mapinput
- mapoutput
- output
- tempdir
- assembly
- removalreport
- transform
- key
- loadpaths
- program
- filelist
- smartobfuscationreport
- pfx
ããããã£åç §ã¯ãæ§æãã¡ã€ã«å ã®ãã®ä»ã®å Žæã§ã¯æåã©ããã«è§£éãããŸãã ããããã£åç §ã¯ãå ¥ãåã«ããããšã¯ã§ããŸãããå ¥ãåã«ãããšããšã©ãŒã«ãªããŸãã
ããããã£åç §ã®äœ¿çšäŸïŒ
<output>
<file dir="${testdir}\output"/>
</output>
ã°ããŒãã« ãªãã·ã§ã³ ã»ã¯ã·ã§ã³
ã°ããŒãã« ãªãã·ã§ã³ ã»ã¯ã·ã§ã³ã¯ãå®è¡å šäœã«ããã£ãŠé©çšããæ§æãªãã·ã§ã³ãå®çŸ©ããããã«ãããŸãã ãã®ã»ã¯ã·ã§ã³ã§ã¯ãåãªãã·ã§ã³ã«ã€ããŠè©³ãã説æããŸãããã®ã»ã¯ã·ã§ã³ã¯å¿ é ã§ã¯ãããŸããã
å ¥å管ç
å
¥å管çã«ã¯ãmanual
ïŒæ¢å®å€ïŒãš automatic
ã® 2 ã€ã®ã¢ãŒãããããŸãã
ãã®ãªãã·ã§ã³ã¯ãåŠçããå
¥åã Dotfuscator ã§æ±ºå®ããæ¹æ³ãå¶åŸ¡ããŸãã
manual
ã¯ãDotfuscate ã¿ã¹ã¯ã MSBuild ããåŒã³åºããããšãã« InputAssemblies ããããã£ããã®å
¥åãšæ§æãã¡ã€ã«ã«åæãããå
¥åãããŒãžããããšãæå®ããŸãã
ãã®ããŒãžã¯ãDotfuscate ãåŒã³åºããããã³ã«è¡ãããŸãããæ§æãã¡ã€ã«ãå€æŽãããã®ã§ã¯ãããŸããã
automatic
ã¯ãDotfuscate ã¿ã¹ã¯ã MSBuild ããåŒã³åºããããšãã« InputAssemblies ããããã£ã«æå®ãããå
¥åã®ã¿ã䜿çšããããšãæå®ããŸãã
æ§æãã¡ã€ã«ã«æå®ãããå
¥åã¯ç¡èŠãããŸãã
Dotfuscate ã¿ã¹ã¯ã®äžç°ãšããŠãæ§æãã¡ã€ã«ã¯ãã¿ã¹ã¯ã«æå®ãããå
¥åå
容ãåæ ããããèªåçã«æŽæ°ãããŸãã
ãã®ãããDotfuscator æ§æãšãã£ã¿ãŒã§æ§æãã¡ã€ã«ãéããå Žåã¯ãMSBuild ã«ãã£ãŠå€å¥ãããçŽè¿ã®å
¥åã«ç
§ãããŠæ§æãå€æŽããããšãã§ããŸãã
ãã®èšå®ã«é¢ä¿ãªãããã«ãæã« Dotfuscate ã¿ã¹ã¯ã«æå®ããã Properties ã®ããããã£å€ã¯ãæ§æãã¡ã€ã«ã«æå®ãããããããã£å€ãšïŒãã«ãæã«ïŒããŒãžãããŸãã ãã ããProperties ã¯ä¿åãããŸããã
automatic
ã®å€ã¯ãDotfuscate
MSBuild ã¿ã¹ã¯ã§ã®ã¿äœ¿çšã§ããŸãã
automatic
ãæå¹ã«ããå Žåã«ã¯ãDotfuscator æ§æãšãã£ã¿ãŒãã³ãã³ã ã©ã€ã³ã§ãã«ããè¡ãããšã¯ã§ããªããªããŸãã
automatic
ã®å Žåã«ã¯ããªã³ã¯ã¯ãµããŒããããŸããã
å ¥å管çèšå®ïŒ
<global>
<input_management>automatic</input_management>
</global>
library ãªãã·ã§ã³
ãã®ãªãã·ã§ã³ã¯ Dotfuscator 3.0 ã§éæšå¥šãšãªãã åã ã®å ¥åã¢ã»ã³ããªã«å¯ŸããŠé©çšã§ããããã詳现㪠library ãªãã·ã§ã³ã«çœ®ãæããããŸããã Dotfuscator ãæ§ããŒãžã§ã³ã®æ§æãã¡ã€ã«ãèªã¿èŸŒãã å Žåã«ãããã®ãªãã·ã§ã³ã¯æå¹ãªãã®ãšããŠåŠçãããŸãããæ§æãšãã£ã¿ãŒã§ãã®æ§æãã¡ã€ã«ãä¿åãããšãæ°ãããªãã·ã§ã³ã䜿çšãããŸãã ã¢ã»ã³ããªåäœã®ã©ã€ãã©ãª ã¢ãŒããåç §ããŠãã ããã
library ãªãã·ã§ã³ïŒ
<global>
<!â library ãªãã·ã§ã³ãèšå®ããŸã -->
<option>library</option>
</global>
VerboseãQuietãInvestigate ãªãã·ã§ã³
ãããã®ãªãã·ã§ã³ã¯ã察å¿ããã³ãã³ã ã©ã€ã³ ãªãã·ã§ã³ãšåãã§ãããæ§æãã¡ã€ã«ãŸãã¯ã³ãã³ã ã©ã€ã³ã䜿ã£ãŠæå¹ã«ããããšãã§ããŸãã ã³ãã³ã ã©ã€ã³ãããªãã·ã§ã³ã®èšå®ã解é€ããæ¹æ³ã¯ãããŸããã
VerboseãQuietãInvestigate ãªãã·ã§ã³ïŒ
<global>
<!-- 詳现衚瀺ã¢ãŒãã§å®è¡ããŸã -->
<option>verbose</option>
<!-- ã¡ãã»ãŒãžé衚瀺ã¢ãŒãã§å®è¡ããŸã -->
<option>quiet</option>
<!-- 調æ»ã®ã¿ãå®è¡ããŠå²ãåœãŠãã¡ã€ã«ãçæããŸã -->
<option>investigate</option>
</global>
SuppressIldasm ã°ããŒãã« ãªãã·ã§ã³
ãã®ãªãã·ã§ã³ãèšå®ããããšã«ãããMicrosoft ã® Ildasm ãŠãŒãã£ãªãã£ãã¢ã»ã³ã㪠IL ã衚瀺ããªããã Dotfuscator ã«æ瀺ããŸãã ãŸãããã®ãªãã·ã§ã³ãæå¹ã«ãããšã"Navigate to Decompiled Sources"ïŒéã³ã³ãã€ã«ããããœãŒã¹ãžã®ç§»åïŒæ©èœã䜿ã£ãŠãVisual Studio ããœãŒã¹ ã³ãŒããéã³ã³ãã€ã«ã§ããªãããã«ããŸãã ãã㯠.NET 2.0 以äžã察象ãšããã¢ã»ã³ããªã«ã®ã¿æå¹ã§ãã
SuppressIldasm ã°ããŒãã« ãªãã·ã§ã³ïŒ
<global>
<option>suppressildasm</option>
</global>
ãããã° ãªãã·ã§ã³
Dotfuscator ã§ã¯ãäžèšã®ãªãã·ã§ã³ã®ãããããèšå®ããããšã§ãåºåã¢ã»ã³ããªãšäžç·ã«ãããã° ã·ã³ãã«ãçæãããããšãã§ããŸãã
ãããã®ãªãã·ã§ã³ã¯ãã³ãã³ã ã©ã€ã³ã§ã® /debug
ã¹ã€ãããæ§æãšãã£ã¿ãŒå
ã®ãããã° ã·ã³ãã«ã®åºåãªãã·ã§ã³ã«çžåœããŸãã
æ§æãã¡ã€ã«ã®ã°ããŒãã« ãªãã·ã§ã³ | ã³ãã³ã ã©ã€ã³ ã¹ã€ãã | æ§æãšãã£ã¿ãŒã®èª¬æ |
---|---|---|
ïŒãªãïŒ | ïŒãªãïŒ ãŸã㯠/debug:off |
ãªã |
DebugAuto |
/debug:auto |
èªåçã«å ¥åã¢ã»ã³ããªã«åºã¥ã |
Debug ïŒéæšå¥šïŒ |
/debug:on |
JIT æé©åãªããPDB ã®ã·ãŒã±ã³ã¹ ãã€ã³ã (éæšå¥š) |
DebugImpl ïŒéæšå¥šïŒ |
/debug:impl |
JIT æé©åãªããMSIL ã®ã·ãŒã±ã³ã¹ ãã€ã³ãã (éæšå¥š) |
DebugOpt ïŒéæšå¥šïŒ |
/debug:opt |
JIT æé©åãMSIL ã®ã·ãŒã±ã³ã¹ ãã€ã³ã (éæšå¥š) |
Pdb ïŒéæšå¥šïŒ |
/debug:pdb |
JIT æé©åãPDB ã®ã·ãŒã±ã³ã¹ ãã€ã³ã (éæšå¥š) |
ãããã° ã·ã³ãã«ã«ã¯ããœãŒã¹ ãã¡ã€ã«ã®ãã¹ãããŒã«ã«ã®å€æ°åãããã³è¡çªå·ãªã©ã®æ å ±ãå«ãŸããŠããŸãã éåžžããããã¯ã¢ã»ã³ããªãšåããã£ã¬ã¯ããªã§åå¥ã® PDB ãã¡ã€ã«ã«æ ŒçŽãããŸãã ãããã¬ãŒã¯ãããã°æã«ãã®æ å ±ã䜿çšããŠãã¬ãŒã¯ ãã€ã³ããèšå®ããåŒã®å€ãç¹å®ããŸãã
ãããã° ãªãã·ã§ã³ã® ïŒ ã€ãæå¹ã«ãããšãå
¥åã¢ã»ã³ããªã®æ¢åã®ãããã° ã·ã³ãã«ãèªã¿èŸŒã¿ãDotfuscator ã«ãã£ãŠè¡ãããå€æŽãåæ ããããã«æŽæ°ããããããã° ã·ã³ãã«ãçæããŸãã
ãã®åŸãå
ã®ãœãŒã¹ ã³ãŒãã«å¯ŸããŠã¢ããªã±ãŒã·ã§ã³ã®ãããã°ãç¶è¡ããé£èªåãããã³ãŒãã«ãã¬ãŒã¯ ãã€ã³ããèšå®ã§ããŸãã
ãããã®èšå®ã¯åã¢ã»ã³ããªã«ã¢ã¿ãããããŠãã DebuggableAttribute
ã«ãäœçšããŸããããã¯ãããšãã°ãJITïŒãžã£ã¹ãã€ã³ã¿ã€ã ïŒæé©åãç¡å¹ã«ãããªã©ããããã°ãå¯èœã«ããæ¹æ³ã .NET ã©ã³ã¿ã€ã ã«æå®ããŸãã
ãããã° ãªãã·ã§ã³ãäœãèšå®ãããªããšãDotfuscator ã¯å
¥åã¢ã»ã³ããªçšã«ã·ã³ãã«ããã£ãŠããåºåã¢ã»ã³ããªçšã®ãããã° ã·ã³ãã«ãçæããŸããã
å
¥åã¢ã»ã³ããªã«ãã DebuggableAttribute
ã®ã€ã³ã¹ã¿ã³ã¹ã¯åºåã¢ã»ã³ããªããã¯åé€ãããŸãã
DebugAuto ãªãã·ã§ã³
DebugAuto
ãªãã·ã§ã³ã䜿çšãããšãå
¥åã¢ã»ã³ããªã®ã·ã³ãã«ãšåã圢åŒã§ã察å¿ããåºåã¢ã»ã³ããªã®æŽæ°æžã¿ãããã° ã·ã³ãã«ãèªåçã«äœæããŸãã
<global>
<option>debugauto</option>
</global>
ãã®èšå®ã¯ãåå ¥åã¢ã»ã³ããªã§ååšããã·ã³ãã«ã®çš®é¡ã«å¿ããŠã移æ€å¯èœãª PDBïŒPortable PDBïŒ ãŸãã¯å ã® .NET Framework 圢åŒã® PDB ãçæã§ããŸãã
å ¥åã¢ã»ã³ããªã«ãé¢é£ä»ããããŠãããããã° ã·ã³ãã«ããªãå ŽåãDotfuscator ã¯å¯Ÿå¿ããåºåã·ã³ãã«ãçæããŸããã
å
¥åã¢ã»ã³ããªã« DebuggableAttribute
ããããšããã㯠"ãã®ãŸãŸ" åºåã¢ã»ã³ããªã«ä¿æãããŸãã
ãã®èšå®ã¯ã.NET Core ã .NET Standard ã¢ã»ã³ããªãªã©ãmscorlib
ã¢ã»ã³ããªãåç
§ããªãã¢ã»ã³ããªããµããŒãããŸãã
ãã®èšå®ã¯ .NET 1.0 ãŸã㯠1.1 ãã¿ãŒã²ãããšããã¢ã»ã³ããªã¯ãµããŒãããŸããã
ãã®å Žåã¯ãDebug
ã䜿çšããŠãã ããã
DebugãDebugImplãDebugOptãããã³ Pdb ãªãã·ã§ã³
Dotfuscator ã§ã¯ãããã 4 ã€ã®ãªãã·ã§ã³ããããããå ã® .NET Framework PDB 圢åŒã§ãã¹ãŠã®åºåã¢ã»ã³ããªçšã®ãããã° ã·ã³ãã«ãäœæããŸãã
<!-- PDB ãã¡ã€ã«ãäœæãã
DebuggableAttribute ã次ã®ããã«èšå®ïŒ
JIT æé©åãç¡å¹ã«ã
PDB ãã¡ã€ã«ã®ã·ãŒã±ã³ã¹ ãã€ã³ããäœ¿çš -->
<global>
<option>debug</option>
</global>
<!-- PDB ãã¡ã€ã«ãäœæãã
DebuggableAttribute ã次ã®ããã«èšå®ïŒ
JIT æé©åãç¡å¹ã«ã
ã¢ã»ã³ããªã® IL ã®æé»ã®ã·ãŒã±ã³ã¹ ãã€ã³ãã䜿çš-->
<global>
<option>debugimpl</option>
</global>
<!-- PDB ãã¡ã€ã«ãäœæãã
DebuggableAttribute ã次ã®ããã«èšå®ïŒ
JIT æé©åãæå¹ã«ã
ã¢ã»ã³ããªã® IL ã®æé»ã®ã·ãŒã±ã³ã¹ ãã€ã³ãã䜿çš-->
<global>
<option>debugopt</option>
</global>
<!-- PDB ãã¡ã€ã«ãäœæãã
DebuggableAttribute ãèšå®ããªããã©ã³ã¿ã€ã ã®æ¢å®å€ã¯æ¬¡ã®ãšããïŒ
JIT æé©åã¯æå¹ã§ã
PDB ãã¡ã€ã«ã®ã·ãŒã±ã³ã¹ ãã€ã³ããäœ¿çš -->
<global>
<option>pdb</option>
</global>
ãããã®èšå®ã§ã¯ã移æ€å¯èœãª PDB ã䜿çšããå ¥åã¢ã»ã³ããªã§ããçæããã®ã¯ å ã® .NET Framework 圢åŒã® PDB ã®ã¿ã§ãã
å ¥åã¢ã»ã³ããªã«ãé¢é£ä»ããããŠãããããã° ã·ã³ãã«ããªãå ŽåãDotfuscator ã§ã¯é«æ°Žæºã®ãœãŒã¹èšèªïŒC# ãªã©ïŒã§ã¯ãªãã.NET äžéèšèªïŒILïŒã«åºã¥ããœãŒã¹ ãã¡ã€ã«ãšè¡çªå·æ å ±ã§åºåã·ã³ãã«ãçæããŸãã
å
¥åã¢ã»ã³ããªã«ãã DebuggableAttribute
ã¯åé€ãããŸãã
èšå®ã«å¿ããŠãæ°ãã DebuggableAttribute
ãã¢ã»ã³ããªã«è¿œå ããããã®æå³ãäžã® XML ã³ã¡ã³ãã§èª¬æããŸãã
ãããã®èšå®ããµããŒããããã®ã¯ãmscorlib
ã¢ã»ã³ããªãåç
§ããã¢ã»ã³ããªã®ã¿ã§ãã
ãããã®ãªãã·ã§ã³ã®ãããããæå®ãããå
¥åã¢ã»ã³ããªïŒ.NET Core ãŸã㯠.NET Standard ã¢ã»ã³ããªãªã©ïŒã mscorlib
ãåç
§ããªãå Žåããã®åºåã¢ã»ã³ããªã«ã¯ãããã° ã·ã³ãã«ãå«ãŸãããDebuggableAttribute
ã®ã€ã³ã¹ã¿ã³ã¹ã¯ãã¹ãŠåé€ãããŸãã
DebugImpl
ãDebugOpt
ãããã³ Pdb
ãªãã·ã§ã³ã¯ã.NET 2.0 以äžã察象ãšããã¢ã³ããªã«å¯ŸããŠãµããŒããããŸãã
ãããã®ãªãã·ã§ã³ã®ãããããæå®ãããå
¥åã¢ã»ã³ããªã以åã®ããŒãžã§ã³ã® .NET ã察象ãšããŠããå Žåããã®åºåã¢ã»ã³ããªã«ã¯ãããã° ã·ã³ãã«ãå«ãŸãããDebuggableAttribute
ã®ã€ã³ã¹ã¿ã³ã¹ã¯ãã¹ãŠåé€ãããŸãã
NoDotfuscatorAttribute ãªãã·ã§ã³
Dotfuscator ã¯æ¢å®å€ã§ã¯ãåŠçããã¢ããªã±ãŒã·ã§ã³ã« DotfuscatorAttribute
ãšããååã®ã«ã¹ã¿ã å±æ§ãæ¿å
¥ããŸãã
ãã®å±æ§ã«ã¯ãããã°ã©ã ã®é£èªåã«äœ¿çšãã Dotfuscator ã®ããŒãžã§ã³ã«é¢ããæ
å ±ãæ ŒçŽãããŸãããã®æ
å ±ã«ã¯è£œå IDïŒCommunity ããã㯠ProfessionalïŒãšããŒãžã§ã³çªå·ããããŸãã
DotfuscatorAttribute
ãæ¿å
¥ããããªãå Žåã¯ãnodotfuscatorattribute
ãšããæ§æãã¡ã€ã«ã«ãããªãã·ã§ã³ãæåã§èšå®ããããšã§ç¡å¹ã«ããããšãã§ããŸãã
NoDotfuscatorAttribute ãªãã·ã§ã³ïŒ
<global>
<option>nodotfuscatorattribute</option>
</global>
å ¥åã¢ã»ã³ã㪠ãªã¹ã
å ¥åã¢ã»ã³ã㪠ãªã¹ãã«ã¯ãé£èªåããã¢ã»ã³ããªããã³/ãŸãã¯ããã±ãŒãžã®ãã¡ã€ã«åãšãã£ã¬ã¯ããªãå«ããŸãã ãŸããããã±ãŒãžãŸãã¯ã¢ã»ã³ã㪠ã¬ãã«ã§èšå®ããæ§æãªãã·ã§ã³ãããã«å«ããŸãã
è€æ°ã®ã¢ãžã¥ãŒã«ããæãã¢ã»ã³ããªã®å Žåã¯ããããã§ã¹ããæã€ã¢ãžã¥ãŒã«ã ããå«ããŸãã
å ¥åã¢ã»ã³ã㪠ãªã¹ãïŒ
<input>
<asmlist>
<inputassembly>
...
<file dir="c:\temp" name="myproj.dll"/>
</inputassembly>
...
</asmlist>
</input>
ã¢ã»ã³ããªåäœã®ã©ã€ãã©ãª ã¢ãŒã
å
¥åã¢ã»ã³ããªã«ã©ã€ãã©ãª ã¢ãŒããæå®ããã«ã¯ããã®å
¥åã¢ã»ã³ããªã® <inputassembly>
èŠçŽ ã« library
ãªãã·ã§ã³ãè¿œå ããŸãã
<inputassembly>
<option>library</option>
...
</inputassembly>
ã¢ã»ã³ããªåäœã®å®£èšã«ããé£èªå
宣èšã«ããé£èªåã®æå¹åãšç¡å¹å
å
¥åã¢ã»ã³ããªã«å¯Ÿãã宣èšã«ããé£èªåãæå¹ã«ããã«ã¯ããã®å
¥åã¢ã»ã³ããªã® <inputassembly>
èŠçŽ ã« honorOAs
ãªãã·ã§ã³ãè¿œå ããŸãã
<inputassembly>
<option>honoroas</option>
...
</inputassembly>
é£èªåå±æ§ã®é€å»
å
¥åã¢ã»ã³ããªã«å¯Ÿããé£èªåå±æ§ã®é€å»ãæå¹ã«ããã«ã¯ããã®å
¥åã¢ã»ã³ããªã® <inputassembly>
èŠçŽ ã« stripOA
ãªãã·ã§ã³ãè¿œå ããŸãã
<inputassembly>
<option>stripoa</option>
...
</inputassembly>
ã¢ã»ã³ããªåäœã®å·®ã蟌ã¿åŠç
Dotfuscator ã§ã¯ãç¹å®ã®å ¥åã¢ã»ã³ããªçšã®ã³ãŒãã®å·®ã蟌ã¿ãå¶åŸ¡ããããšãã§ããŸãã ãã®ãªãã·ã§ã³ã®èšå®ãåãŒã圱é¿ã«ã€ããŠã¯ã差ã蟌ã¿ïŒœãšãã£ã¿ãŒã®ã»ã¯ã·ã§ã³ã§èª¬æããŸãã
å·®ã蟌ã¿ãæå¹ã«ãªã£ãŠããå ŽåãDotfuscator ã¯ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³å±æ§ãšãã§ãã¯å±æ§ãåãåããäžèŠãªã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³å±æ§ãšãã§ãã¯å±æ§ãåºåã¢ã»ã³ããªããé€å»ããŸãã æ¢å®ã®åäœã¯ã次ã®ãªãã·ã§ã³ã®äžæ¹ãŸãã¯äž¡æ¹ãæå®ããããšã«ãããå ¥åã¢ã»ã³ã㪠ã¬ãã«ã§å€æŽã§ããŸãã
nohonorsos
ã¯ãã¢ã»ã³ããªã§å®£èšãããã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³å±æ§ãšãã§ãã¯å±æ§ã Dotfuscator ãåŠçã§ããªãããã«ããŸããnostripsos
ã¯ãã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³å±æ§ãšãã§ãã¯å±æ§ã®åŠçåŸãã¢ã»ã³ããªãããããã®äžèŠãªå±æ§ã Dotfuscator ãé€å»ããªãããã«ããŸãã
ã¢ã»ã³ããªåäœã®å·®ã蟌ã¿åŠçïŒ
<inputassembly>
<!-- ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³å±æ§ãšãã§ãã¯å±æ§ãé€å»ããŸãã -->
<option>nostripsos</option>
<!-- ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³å±æ§ãšãã§ãã¯å±æ§ã䜿çšããŸãã -->
<option>nohonorsos</option>
...
</inputassembly>
ã¢ã»ã³ããªåäœã® XAML ã®å€æã¢ãŒã
ãã®èšå®ã¯ãç¹å®ã®å ¥åã¢ã»ã³ããªã«æ¬¡ã®ããŒã¯ã¢ãããå«ããããšãã§ããããšã Dotfuscator ã«ç€ºããŸãããã®ããŒã¯ã¢ããã¯ãSilverlight ã¢ããªã±ãŒã·ã§ã³ã§çšãããã XAMLãããã㯠Windows Presentation Foundation ã¢ããªã±ãŒã·ã§ã³ã§çšããããã³ã³ãã€ã«æžã¿ã® XAML ãªãœãŒã¹ïŒBAMLïŒã§ãããããã®ããŒã¯ã¢ããããååå€æŽã®ããã«åæãã察象ã«å ããããŸãã Dotfuscator ã§åŠçãããããå€æãããããŒã¯ã¢ããã¯èŠçŽ ã®åé¢ã³ãŒãåç §ãšãšãã«ååå€æŽãããèå¥åãæã¡ãŸãã ããŒã¯ã¢ãã ãªãœãŒã¹ããåç §ãããããããã£ã¯ããã®ãããã㣠ã¡ã¿ããŒã¿ã¯ä¿æãããŸãããååãå€æŽãããŸãã
å
¥åã¢ã»ã³ããªã« XAML ã®å€æã¢ãŒããæå®ããã«ã¯ããã®å
¥åã¢ã»ã³ããªã® <inputassembly>
èŠçŽ ã« <option>
èŠçŽ ãè¿œå ããŸãã
ã¢ã»ã³ããªåäœã® XAML ã®å€æã¢ãŒãïŒ
<inputassembly>
<option>transformxaml</option>
<file dir="c:\temp" name="myproj.dll"/>
</inputassembly>
ãŠãŒã¶ãŒå®çŸ©ã®ã¢ã»ã³ã㪠ããŒã ãã¹
å ¥åã¢ã»ã³ããªå ã§äœ¿çšããŠããåã®æ å ±ãç¥ãããã«ã¯ãå ¥åã¢ã»ã³ããªã«ãã£ãŠåç §ãããã¢ã»ã³ããªãèªã¿èŸŒãå¿ èŠããããŸãã Dotfuscator ã¯ãVisual Studio ã CLR èªäœã§äœ¿çšãããèŠåã«é¡äŒŒããæ€çŽ¢èŠåã䜿çšããŸãã
æ¢å®å€ã®æ€çŽ¢èŠåã§ã¯åç §ãããã¢ã»ã³ããªãèŠã€ãããªãå Žåã®ããã«ãæ€çŽ¢ãããã£ã¬ã¯ããªãè¿œå æå®ããæ段ãçšæãããŠããŸãã Dotfuscator ã¯ã¢ã«ãŽãªãºã ã®æçµã¹ããããšããŠããããã®ãã£ã¬ã¯ããªãæå®ãããé åºã§æ€çŽ¢ããŸãã ãã ããè¿œå ãªãã·ã§ã³ïŒããããã£ããã³ïŒ»èšå®ïŒœã¿ãã®ïŒ»ã¢ã»ã³ã㪠ããŒã ãã¹ïŒœã«ããæåã«æ€çŽ¢ïŒœãã§ã㯠ããã¯ã¹ïŒã䜿çšãããŠãããšãDotfuscator ã¯ãã®æšæºæ€çŽ¢ãé©çšããåã«ããŒã ãã¹ããæ€çŽ¢ããŸãã
ãŠãŒã¶ãŒå®çŸ©ã®ã¢ã»ã³ã㪠ããŒã ãã¹ã XML æ§æãã¡ã€ã«ã«è¿œå ããã«ã¯ã次ã®ããã«ããŸãã
ãŠãŒã¶ãŒå®çŸ©ã®ã¢ã»ã³ã㪠ããŒã ãã¹ã®è¿œå ïŒ
<input>
<loadpaths>
<option>prepend</option>
<file dir="C:\temp" />
...
</loadpaths>
....
</input>
åºåãã£ã¬ã¯ããª
ããã¯ãåºåã¢ã»ã³ããªãæžã蟌ãŸãããã£ã¬ã¯ããªã§ãã ã¢ããªã±ãŒã·ã§ã³ã¯ç¡æ¡ä»¶ã«ããã®ãã£ã¬ã¯ããªã«ãããã¡ã€ã«ãåžžã«äžæžãããŸãã
åºåãã£ã¬ã¯ããªïŒ
<!-- åºåå
ãã£ã¬ã¯ããªãå¿
èŠã§ã -->
<output>
<file dir="c:\work"/>
</output>
äžæãã£ã¬ã¯ããª
ãã®ã»ã¯ã·ã§ã³ã¯çç¥å¯èœã§ãããDotfuscator ã®äœæ¥ãã£ã¬ã¯ããªãæå®ããŸãã æå®ããªãå Žåãæ¢å®å€ã§ããã·ã¹ãã ã®äžæãã£ã¬ã¯ããªãäœæ¥ãã£ã¬ã¯ããªã«ãªããŸãã ã¢ããªã±ãŒã·ã§ã³ã¯ãäœæ¥ãã£ã¬ã¯ããªã䜿çšããŠå ¥åã¢ã»ã³ããªã§ ildasm ããã³ ilasm ãå®è¡ããŸãã éã¢ã»ã³ãã«ãããåºåã¯ãå ¥åã¢ã»ã³ããªã«åã蟌ãŸãããã¹ãŠã®ãªãœãŒã¹ãšå ±ã«ããã®ãã£ã¬ã¯ããªã«æ ŒçŽãããŸãã ãããã®ãã¡ã€ã«ã¯ãåŠçã®çµäºåŸãèªåçã«åé€ãããŸãã
äžæãã£ã¬ã¯ããªïŒ
<!-- äžæãã£ã¬ã¯ããªã¯çç¥å¯èœã§ã -->
<!-- æå®ããªãå Žåã¯ã·ã¹ãã ã®äžæãã£ã¬ã¯ããªãæ¢å®å€ãšããŠäœ¿çšãããŸã -->
<tempdir>
<file dir="c:\temp"/>
</tempdir>
é£èªåå±æ§ã®æ©èœå²ãåœãŠ
æ©èœå²ãåœãŠã¯ã宣èšã«ããé£èªåã®ããã®æ©èœã§ãã Dotfuscator ã®ã宣èšã«ããé£èªåãã®ãµããŒãã®è©³çŽ°ã«ã€ããŠã¯ãã«ã¹ã¿ã å±æ§ã䜿çšãã宣èšã«ããé£èªåãåç §ããŠãã ããã ãã®ã»ã¯ã·ã§ã³ã§ã¯ãæ©èœå²ãåœãŠã«ã€ããŠèª¬æããDotfuscator ãèªèãããã€ãã£ããªæ©èœæååã玹ä»ããŸãã
æ§æãã¡ã€ã«å
ã® <obfuscationattributemap>
èŠçŽ ã¯ãé£èªåå±æ§ã® feature ããããã£ããååŸããæååããDotfuscator ãèªèãã 1 ã€ä»¥äžã®æ©èœæååã«å²ãåœãŠãå Žæã§ãã
ãããã®å²ãåœãŠã¯ãXML æ§æãã¡ã€ã«å ã§æ¬¡ã®ããã«æå®ããŸãã
é£èªåå±æ§ã®æ©èœå²ãåœãŠïŒ
<obfuscationattributemap>
<feature name="testmode">renaming, controlflow</feature>
</obfuscationattributemap>
ååã®å€æŽã»ã¯ã·ã§ã³
ååã®å€æŽã»ã¯ã·ã§ã³ã§ã¯ããŠãŒã¶ãŒã¯å ¥åå²ãåœãŠãã¡ã€ã«ããã³åºåå²ãåœãŠãã¡ã€ã«ã®å Žæããååã®å€æŽããé ç®ãé€å€ããããã®è©³çŽ°ãªèŠåãªã©ãååã®å€æŽã«åºæã®ãªãã·ã§ã³ãæå®ã§ããŸãã
ååã®å€æŽã»ã¯ã·ã§ã³ã¯çç¥å¯èœã§ãã ãã®ã»ã¯ã·ã§ã³ãååšããªãå Žåã¯ã以äžã®æ¢å®ã®åŠçãé©çšãããŸãã
- æ¢å®ã®ååã®å€æŽãè¡ãããŸãïŒåå空éã¯åé€ãããŸãïŒã
loweralpha
ã®ååå€æŽèŠåã䜿ã£ãŠæ°ããååãéžæãããŸãã- å²ãåœãŠãã¡ã€ã«ã¯å¢åé£èªåã®èªã¿åããè¡ããŸããã
- å²ãåœãŠãã¡ã€ã«ã¯ {CurrentWorkingDir}/Dotfuscator/Map.xml ã«æžã蟌ãŸããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®çš®é¡ã«åŸã£ãŠè¡ããã察象é€å€ä»¥äžã®é€å€ã¯è¡ãããŸããã
ãèå¥åã®ååã®å€æŽãã»ã¯ã·ã§ã³ã§ã¯ãååã®å€æŽãªãã·ã§ã³ãå²ãåœãŠãã¡ã€ã«ãããã³ã«ã¹ã¿ã 察象é€å€ã«ã€ããŠè©³ãã説æããŸãã 以äžã®ã»ã¯ã·ã§ã³ã§ã¯ãããããã®æŠèŠã説æããŸãã
ååã®å€æŽèŠå
Dotfuscator ã§ã¯ãé£èªååŠçæã«èå¥åã®ååãçæããããã®ã¢ã«ãŽãªãºã ãããã€ãå®çŸ©ãããŠããããã®äžããéžãã§äœ¿çšã§ããŸãã
- Lower AlphaïŒããã¯ãDotfuscator ã®ãã¹ãŠã®ããŒãžã§ã³ã«ãããååã®å€æŽèŠåã®æ¢å®å€ã§ãå°æåã®è±æåã䜿çšããŸãã
{a,b,c,...}
- Upper AlphaïŒãã®èŠåã§ã¯ã倧æåã®è±æåã䜿çšããŸãã
{A,B,C,...}
- NumericïŒãã®èŠåã§ã¯ãæ°åã ãã䜿çšããŸãã
{0,1,2,...}
- UnprintableïŒãã®èŠåã§ã¯ãUnicode ã®äžäœéšåã«ããå°åäžèœæå矀ã䜿çšããŸãã
ååã®å€æŽèŠåã¯ã<renaming>
èŠçŽ ã®å±æ§ãšããŠæå®ããŸãã
䜿çšã§ããå€ã¯ãloweralpha
ãupperalpha
ãnumeric
ããŸã㯠unprintable
ã§ãã
ååã®å€æŽèŠåïŒ
<renaming scheme="unprintable">
...
</renaming>
ååã®å€æŽãªãã·ã§ã³
Dotfuscator ã«ã¯ãååã®å€æŽã¢ã«ãŽãªãºã ãåå空é
ãåŠçããæ¹æ³ã決å®ããããã®ãªãã·ã§ã³ãããã€ãçšæãããŠããŸãã
ããªãã¡ã"keepnamespace
" ãš "keephierarchy
" ã§ãããããã«ã€ããŠã¯ãèå¥åã®ååã®å€æŽã§è©³ãã説æããŸãã
Dotfuscator ã§ã¯ãé£èªåãããååã«å¯Ÿããæ¢å®å€ã®æååãŸãã¯ãŠãŒã¶ãŒæå®ã®æååããã¬ãã£ãã¯ã¹ãšããŠä»å ããããã«æå®ã§ããŸãã
ãã®æ©èœã䜿çšããå Žåã¯ãprefix
ãªãã·ã§ã³ãæå®ããŸãã
詳现ã«ã€ããŠã¯ãååã®å€æŽãã¬ãã£ãã¯ã¹ãåç
§ããŠãã ããã
ååã®å€æŽãã¬ãã£ãã¯ã¹æ©èœã®æå¹åïŒ
<renaming>
<!-- 次ã®èšå®ã«ãããååå€æŽã®ãã¬ãã£ãã¯ã¹æ©èœãæå¹ã«ãªããŸã -->
<option>prefix</option>
...
</renaming>
Dotfuscator ã§ã¯ãæ»ãå€ã®åã䜿çšããæ¡åŒµãªãŒããŒããŒãèªå°ã䜿çšã§ããŸãã
ãã®æ©èœãæå¹ã«ããããã®ãªãã·ã§ã³ã¯ enhancedOI
ã§ãããã®ãªãã·ã§ã³ã«ã€ããŠã¯ããªãŒããŒããŒãèªå°ã«ããã¡ãœããã®ååã®å€æŽã§è©³ãã説æããŸãã
æ¡åŒµãªãŒããŒããŒãèªå°ã®é©çšïŒ
<renaming> <!-- æ¡åŒµãªãŒããŒããŒãèªå°ãé©çšããŸã-->
<option>enhancedOI</option>
...
</renaming>
æ¡åŒµãªãŒããŒããŒãèªå°ã¯ãæ¢å®ã§ã¯ãã·ãªã¢ã«åå¯èœãšããŒã¯ãããŠããã¯ã©ã¹ã«ã¯é©çšãããŸããã
ã·ãªã¢ã«åå¯èœãªåãå«ãããã¹ãŠã®åã«æ¡åŒµãªãŒããŒããŒãèªå°ãé©çšãããå Žåã¯ãenhancedOIOnSerializables
ãªãã·ã§ã³ã䜿çšããŸãã
æ¡åŒµãªãŒããŒããŒãèªå°ã·ãªã¢ã«åãªãã·ã§ã³ã®é©çšïŒ
<renaming>
<!-- ã·ãªã¢ã«åå¯èœãªåã«ãæ¡åŒµãªãŒããŒããŒãèªå°ãé©çšããŸã-->
<option>enhancedOIOnSerializables</option>
...
</renaming>
XML ã·ãªã¢ã©ã€ã¶ãŒãšäºææ§ã®ããæ¹æ³ã§åãã¡ã³ããŒã®ååãå€æŽããããã«ãååã®å€æŽã¢ã«ãŽãªãºã ãå€æŽããããšãã§ããŸãã
ååã®å€æŽã¢ã«ãŽãªãºã ãå€æŽã㊠XML ã·ãªã¢ã©ã€ã¶ãŒãšã®äºææ§ãä¿ã€ïŒ
<renaming>
<!-- XML ã·ãªã¢ã«åã®äºææ§-->
<option>xmlserialization</option>
...
</renaming>
詳现ã«ã€ããŠã¯ãXML ã·ãªã¢ã«åãšååã®å€æŽãåç §ããŠãã ããã
ååã®å€æŽãªãã·ã§ã³ã® <explicitoverrides>
ã䜿çšãããšãDotfuscator ã¯æ瀺çãªïŒæ§æäžã§ãªãïŒã¡ãœããã®ãªãŒããŒã©ã€ããå°å
¥ããããšã«ãã£ãŠãããå€ãã®ã¡ãœããã®ååãå€æŽã§ããããã«ãªããŸãã
ã€ãŸãããªãŒããŒã©ã€ããããã¡ãœãããããªãŒããŒã©ã€ãããã¡ãœãããšã¯ç°ãªãååãæã€ããšãã§ããŸãã
ããšãã°ãã¡ãœãã㧠Object.ToString() ããªãŒããŒã©ã€ãããå ŽåãéåžžãDotfuscator ã¯ãªãŒããŒã©ã€ãã®é¢ä¿ãå£ããªãã§ååãå€æŽããããšã¯ã§ããŸãããããã¯ãäžè¬çã«å
¥åã¢ã»ã³ããªã«ã¯ Object ã¯ã©ã¹ããªããããToString() ã®ååã¯å€æŽãããªãããã§ãã
ãã®èšå®ãæå¹ã«ãããšãDotfuscator ã¯ãªãŒããŒã©ã€ãããã¡ãœããã®ååãå€æŽã§ãããã®ã¡ãœããã Object.ToString() ããªãŒããŒã©ã€ãããããã«æå³ããŠäœãããŠããããšã CLR ã«æ瀺ããã¡ã¿ããŒã¿ãå°å
¥ã§ããŸãã
詳现ã«ã€ããŠã¯ãååã®å€æŽæãæ瀺çãªã¡ãœããã®ãªãŒããŒã©ã€ããå°å
¥ãããåç
§ããŠãã ããã
æ瀺çãªã¡ãœããã®ãªãŒããŒã©ã€ããå°å ¥ããïŒ
<renaming>
<!-- ãªãŒããŒã©ã€ããããã¡ãœãããããªãŒããŒã©ã€ãããã¡ãœãããšã¯
ç°ãªãååãæã€ããšãã§ããŸã -->
<option>explicitoverrides</option>
...
</renaming>
ãªãŒããŒããŒããããã¡ãœãããåãååã«ãªãããã«ãããå Žåã¯ãååã®å€æŽãªãã·ã§ã³ã® <explicitoverrides>
ã䜿çšããªãã§ãã ããã
<randomizeRenaming>
ãªãã·ã§ã³ã䜿çšãããš Dotfuscator ã¯éçŽç·çãªé åºã§æ°ããååãå²ãåœãŠãŸãã
ãã®ãããè±å°æåã®ååã {a, b, c, d,...} ã®é ã§å²ãåœãŠãã®ã§ã¯ãªãã{u, p, k, f,...} ã®ããã«å²ãåœãŠãŸãã
ãã®ãªãã·ã§ã³ã¯ååã®å€æŽèŠåã§åäœããŸãã
ååã®ã©ã³ãã ãªå²ãåœãŠã䜿çšãã
<renaming>
<!-- ååã®ã©ã³ãã ãªå²ãåœãŠã䜿çšãã -->
<option>randomizeRenaming</option>
...
</renaming>
ååã®å€æŽã®å¯Ÿè±¡é€å€ãªã¹ã
ãã®ã»ã¯ã·ã§ã³ã¯ãå ¥åã¢ã»ã³ããªã®ååå€æŽãåçã«åŸ®èª¿æŽããæ¹æ³ãæäŸããŸãã ãã®ã»ã¯ã·ã§ã³ã«ã¯ãå®è¡æã«é©çšããã "察象é€å€èŠå" ã®ãªã¹ããå«ããããšãã§ããŸãã èŠåã§ç¹å®ã®ã¯ã©ã¹ãã¡ãœããããã£ãŒã«ããããããã£ããŸãã¯ã€ãã³ããéžæããå Žåããã®é ç®ã®ååã¯å€æŽãããŸããã
- ãããã®èŠåã¯ãlibrary ãªãã·ã§ã³ãªã©ã®ã°ããŒãã« ãªãã·ã§ã³ãæé»ã«é©çšãããèŠåãšå ±ã«é©çšãããŸãã
- åèŠåã¯è«ççã«
OR
ã§çµåãããããã1 ã€ã§ãèŠåã«ãããããé ç®ã®ååã¯å€æŽãããŸããã - 察象é€å€ãªã¹ãã¯ãåãã¡ãœããããã£ãŒã«ããããããã£ãã€ãã³ããã¢ã»ã³ããªãã¢ãžã¥ãŒã«ããŸãã¯åå空éã«ããååã®é€å€ããµããŒãããŠããŸãã
- åçš®èŠåã«ã€ããŠã¯ãèå¥åã®ååã®å€æŽã§è©³ãã説æããŸãã
ååã®å€æŽã®åç §èŠå
åç
§èŠåã䜿çšãããšãå€éšãã¡ã€ã«ããèŠåãã€ã³ããŒãããŠãæ§æéã§å
±æã§ããããã«ãªããŸãã
Dotfuscator ã®çµã¿èŸŒã¿ã®ååã®å€æŽèŠåã¯ãããã䜿çšã㊠%ProgramData%\PreEmptive Solutions\Common ããèŠåãã€ã³ããŒãããŠããŸãã
èŠå㯠rulekey
å±æ§ã§åç
§ãããŸããå€ã«ã¯ãåç
§ãããèŠåã«å®çŸ©ãã GUID ãæå®ããŸãã
åç §èŠåãªã¹ãïŒ
<referencerulelist>
<referencerule rulekey="{0D471A86-E98F-4493-849B-85BD4CC884A1}"/>
<referencerule rulekey="{C9D9BF84-4F0D-4e9f-B3EC-3038235AE741}"/>
</referencerulelist>
åºåå²ãåœãŠãã¡ã€ã«
ãã®æ©èœã¯ãç¹å®ã®å®è¡äžã« Dotfuscator ã䜿çšãããã¹ãŠã®ååã®å€æŽå²ãåœãŠã®ãã°ãäœæããŸãã ããã¯ãçµ±èšã»ã¯ã·ã§ã³ãæäŸããŸãã
ãã®ãªãã·ã§ã³ãæå®ããããšã§ãDotfuscator ã®ååã®å€æŽæ©èœã«å¯Ÿããååã®å€æŽãã©ã®ããã«è¡ããããã远跡èšé²ããããæ瀺ã§ããŸãããã®çµæããŠãŒã¶ãŒã¯ååã®å€æŽç¶æ³ãããã«èª¿æ»ã§ããã»ããä»åŸ Dotfuscator ãå®è¡ããéã«å ¥åãšããŠäœ¿çšããããšãã§ããŸãã ãã®ãªãã·ã§ã³ã§äœæããããã¡ã€ã«ã¯ããã®åŸå¢åå ¥åãã¡ã€ã« ãªãã·ã§ã³ã§äœ¿çšãããŸãã
ãã®ãã¡ã€ã«ãäžæ³šæã§å€±ã£ãŠããŸããšãå°æ¥ã®ã¢ããªã±ãŒã·ã§ã³ã®å¢åæŽæ°ã®æ©äŒã倱ãå¯èœæ§ããããŸãã ãã®ããããã®ãã¡ã€ã«ãé©åã«ããã¯ã¢ããããŠããããšãéåžžã«éèŠã«ãªããŸãã ãã®ãããªçç±ãããDotfuscator ã¯ïŒåãååã®ïŒæ¢åã®ãã¡ã€ã«ãæ€åºãããå Žåã«ã¯ãèªåçã«ãã®ãã¡ã€ã«ã®ååãå€æŽããŠãããæ°ããå²ãåœãŠãã¡ã€ã«ã§æ¢åã®å²ãåœãŠãã¡ã€ã«ãäžæžãããããã«ãªã£ãŠããŸãã
Dotfuscator ã«æ¢åã®å²ãåœãŠãã¡ã€ã«ã®ååãèªåçã«å€æŽãããªãããã«æ瀺ããã«ã¯ãæ§æãã¡ã€ã«ã« overwrite="true"
ãšããå±æ§ãèšå®ããŸãã
å²ãåœãŠãã¡ã€ã«ã®åœ¢åŒã«ã€ããŠã¯ãèå¥åã®ååã®å€æŽã§èª¬æããŸãã
å±æ§ãäžæžãã«èšå®ããïŒ
<renaming>
...
<mapping>
<mapoutput overwrite="true">
<file dir="c:\work" name="testout.xml"/>
</mapoutput>
</mapping>
</renaming>
HTML 圢åŒã®ååã®å€æŽã¬ããŒã
åºåå²ãåœãŠãã¡ã€ã«ã¯ãæ¬æ¥ã¯è§£æåãã® XML ããã¥ã¡ã³ããšããŠãã©ãŒããããããŸãã
ååã®å€æŽã¬ããŒããå€èªå¯èœã«ããããã«ãåºåå²ãåœãŠãã¡ã€ã«ã HTML 圢åŒã®ããã¥ã¡ã³ãã«å€æããããæ瀺ããããšãã§ããŸãã
Dotfuscator ã¯ããããããå®çŸ©ãããŠãã XSL ããã¥ã¡ã³ããåºåå²ãåœãŠãã¡ã€ã«ã«é©çšããããšã«ãããå€æåŠçãå®æœããŸãã
æ¢å®ã® HTML ã¬ããŒãã奜ã¿ã§ãªãå Žåã¯ãä»»æã§ãå€æã«äœ¿çšãã XML ããã¥ã¡ã³ãã«ç¬èªã®ãã®ãæå®ã§ããŸãã
åºåã¬ããŒãã¯ãXML 圢åŒã®å²ãåœãŠãã¡ã€ã«ãšåããã£ã¬ã¯ããªã«çœ®ãããŸãã
ãã¡ã€ã«å㯠XML ãã¡ã€ã«ãšåãã§ãæ¡åŒµåã .xml
ã§ã¯ãªã .html
ã«ãªããŸãã
HTML 圢åŒã®ååã®å€æŽã¬ããŒãïŒ
<renaming>
...
<mapping>
<mapoutput overwrite="true">
<file dir="c:\work" name="testout.xml"/>
<transform>
<!-- ç¬èªã® XSL ãã¡ã€ã«ã®æå®ã¯ä»»æã§ã -->
<file dir="c:\mytransforms" name="map.xsl"/>
</transform>
</mapoutput>
</mapping>
</renaming>
å ¥åå²ãåœãŠãã¡ã€ã«
Dotfuscator ã§ã¯ãå ¥åå²ãåœãŠãã¡ã€ã«ã«ãã£ãŠãååã® Dotfuscator ã®å®è¡ã§äœæãããååãã€ã³ããŒãããããšãã§ããŸãïŒãå¢åé£èªåããšããŠç¥ãããŠããåŠçã§ãïŒã Dotfuscator ã¯ã¯ã©ã¹ãã¡ãœãããããã³ãã£ãŒã«ãã®ååããå ¥åå²ãåœãŠãã¡ã€ã«ã«ç€ºãããŠããååã«å€æŽããããã«æåã®åªåãããŸãã
<mapinput>
èŠçŽ ã«å
¥åå²ãåœãŠãã¡ã€ã«ãæå®ã§ããŸãã
ãã®èŠçŽ ã«ã¯ä»»æã® obfuscatereferences
å±æ§ããããŸãããèšè¿°ããªããã°æ¢å®å€ã§ãã "true
" ã«ãªããŸãã
ãã®å±æ§ã¯ãå
¥åå²ãåœãŠãã¡ã€ã«ã«å«ãŸããŠããããå
¥åã¢ã»ã³ããªã®ã»ããå
ã«ã¯å®çŸ©ãããŠããªãååã Dotfuscator ã§ã©ã®ããã«åŠçããããå¶åŸ¡ããŸãã
true ã®å ŽåãçŸåšã®å
¥åã¢ã»ã³ããªã®ã»ããå
ã«ãã®ãããªååãžã®åç
§ãããã°ããã®ååã¯å€æŽãããŸãã
å ¥åå²ãåœãŠãã¡ã€ã«ïŒ
<renaming>
...
<mapping>
<mapinput obfuscatereferences="true">
<file dir="c:\work" name="testin.xml"/>
</mapinput>
</mapping>
</renaming>
å¶åŸ¡ãããŒã®é£èªåã»ã¯ã·ã§ã³
å¶åŸ¡ãã㌠ã»ã¯ã·ã§ã³ã§ã¯ãå¶åŸ¡ãããŒã®é£èªåããé ç®ãé€å€ããããã®è©³çŽ°ãªèŠåãªã©ãå¶åŸ¡ãããŒã®é£èªåã«åºæã®ãªãã·ã§ã³ãæå®ã§ããŸãã
å¶åŸ¡ãã㌠ã»ã¯ã·ã§ã³ã¯çç¥å¯èœã§ãã ãã®ã»ã¯ã·ã§ã³ãååšããªãå Žåãå¶åŸ¡ãããŒã®é£èªåã¯ç¡å¹ã«ãªããŸãã
å¶åŸ¡ãããŒã®é£èªåã¬ãã«
å¶åŸ¡ãããŒã®é£èªåã®ã¬ãã«ã¯ã"low
"ïŒäœïŒã"medium
"ïŒäžïŒã"high
"ïŒé«ïŒãšãã 3 ã€ã®å€ã®ããããã«èšå®ãããŸãã
ãããã®ã¬ãã«ã¯ãDotfuscator ã®å¶åŸ¡ãããŒã®é£èªåã¢ã«ãŽãªãºã ã®åŒ·åãã«å¯Ÿå¿ããŸãã
äžè¬ã«ãã¬ãã«ãé«ãã»ã©é£èªåã¯ãã匷åã«ãªããŸããããããšåŒãæãã«ã³ãŒã ãµã€ãºã¯å¢å ããããã©ãŒãã³ã¹ãäœäžããŸãã
ããã¯ãå¶åŸ¡ãããŒã®é£èªåã匷åã§ããã°ããã»ã©ãããå€ãã®åå²åœä»€ãã³ãŒãã«è¿œå ããããšã«ãªãããã§ãã
å¶åŸ¡ãããŒã®é£èªåã®ã¬ãã«ã¯ãé£èªåããããã¹ãŠã®ã¡ãœããã«å¯Ÿãã°ããŒãã«ã«é©çšãããŸãã
å¶åŸ¡ãããŒã®é£èªåãªãã·ã§ã³
"disable
" ãªãã·ã§ã³ã¯ãäž»ã«å©äŸ¿æ§ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããã«çšæãããŠããŸãã
ãã®ãªãã·ã§ã³ãèšå®ãããšãå¶åŸ¡ãã㌠ã»ã¯ã·ã§ã³ã®æ®ãã®éšåã®å
容ã«é¢ä¿ãªããDotfuscator ã¯å¶åŸ¡ãããŒã®é£èªåããŸã£ããè¡ããŸããã
å¶åŸ¡ãããŒã®é£èªåãªãã·ã§ã³ïŒ
<controlflow level="high">
<!-- æ¬ã»ã¯ã·ã§ã³ã®æ®ãéšåãç¡èŠããå¶åŸ¡ãããŒã®é£èªååŠçãã¹ãããããŸã-->
<option>disable</option>
...
</controlflow>
å¶åŸ¡ãããŒã®å¯Ÿè±¡é€å€ãªã¹ã
ãã®ã»ã¯ã·ã§ã³ã¯ãå ¥åã¢ã»ã³ããªã®å¶åŸ¡ãããŒã®é£èªåãåçã«åŸ®èª¿æŽããæ¹æ³ãæäŸããŸãã ãã®ã»ã¯ã·ã§ã³ã«ã¯ãå®è¡æã«é©çšããã "察象é€å€èŠå" ã®ãªã¹ããå«ããããšãã§ããŸãã èŠåã§ç¹å®ã®ã¯ã©ã¹ãŸãã¯ã¡ãœãããéžæãããšããã®é ç®ã¯å¶åŸ¡ãããŒã®é£èªåã®å¯Ÿè±¡ã«ãªããŸããã
åèŠåã¯è«ççã« OR
ã§çµåãããããã1 ã€ã§ãèŠåã«ãããããé
ç®ã¯å¶åŸ¡ãããŒã®é£èªåã®å¯Ÿè±¡ã«ãªããŸããã
察象é€å€ãªã¹ãã¯ãåãã¡ãœãããã¢ã»ã³ããªãã¢ãžã¥ãŒã«ããŸãã¯åå空éã«ããã¢ãžã¥ãŒã«ã®é€å€ããµããŒãããŠããŸãã
åçš®èŠåã«ã€ããŠã¯ãå¶åŸ¡ãããŒã®é£èªåã§è©³ãã説æããŸãã
æååã®æå·åã»ã¯ã·ã§ã³
æååã®æå·åã»ã¯ã·ã§ã³ã§ã¯ãæååã®æå·åã®å¯Ÿè±¡ã«ãªãåããã³ã¡ãœãããæå®ããããã®è©³çŽ°ãªèŠåãªã©ãæååã®æå·åã«åºæã®ãªãã·ã§ã³ãæå®ã§ããŸãã
æååã®æå·åã»ã¯ã·ã§ã³ã¯çç¥å¯èœã§ãã ãã®ã»ã¯ã·ã§ã³ãååšããªãå Žåãæååã®æå·åæ©èœã¯ç¡å¹ã«ãªããŸãã
æååã®æå·åãªãã·ã§ã³
ãã®ãªãã·ã§ã³ã¯ãäž»ãšããŠå©äŸ¿æ§ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããã«äœ¿çšãããŸãã ãã®ãªãã·ã§ã³ãèšå®ãããšãæååã®æå·åã»ã¯ã·ã§ã³ã®æ®ãã®éšåã®å 容ã«é¢ä¿ãªããDotfuscator ã¯æååã®æå·åããŸã£ããè¡ããŸããã
ãŠãŒã¶ãŒæååã®æå·åãªãã·ã§ã³ïŒ
<stringencrypt>
<!--æ¬ã»ã¯ã·ã§ã³ã®æ®ãéšåãç¡èŠããæååæå·ååŠçãã¹ãããããŸã-->
<option>disable</option>
...
</stringencrypt>
æååã®æå·å察象éžæãªã¹ã
ãã®ã»ã¯ã·ã§ã³ã¯ãå ¥åã¢ã»ã³ããªã«å¯Ÿããæååã®æå·åæ©èœãåçã«åŸ®èª¿æŽããæ¹æ³ãæäŸããŸãã ãã®ã»ã¯ã·ã§ã³ã«ã¯ãå®è¡æã«é©çšããã察象éžæèŠåã®ãªã¹ããå«ããŸãã èŠåã§ç¹å®ã®ã¯ã©ã¹ãŸãã¯ã¡ãœãããéžæãããšããã®é ç®ã¯æååã®æå·åã®å¯Ÿè±¡ã«ãªããŸãã
åèŠåã¯è«ççã« OR ã§çµåãããããã1 ã€ã§ãèŠåã«ãããããé ç®ã¯æååæå·åã®å¯Ÿè±¡ã«ãªããŸãã
察象éžæãªã¹ãã¯ãåãã¡ãœãããã¢ã»ã³ããªãã¢ãžã¥ãŒã«ããŸãã¯åå空éã«ããã¡ãœããéžæããµããŒãããŠããŸãã
åçš®èŠåã«ã€ããŠã¯ããŠãŒã¶ãŒæååã®æå·åã§è©³ãã説æããŸãã
é€å»ã»ã¯ã·ã§ã³ïŒäžèŠã³ãŒãã®é€å»ïŒ
<removal>
ã»ã¯ã·ã§ã³ã§ã¯ãäžèŠã³ãŒãã®é€å»ã®å¯Ÿè±¡ã«ãªãåããã³ã¡ã³ããŒãæå®ããããã®è©³çŽ°ãªèŠåãªã©ãé€å»æ©èœã«åºæã®ãªãã·ã§ã³ãæå®ã§ããŸãã
<removal>
ã»ã¯ã·ã§ã³ã¯çç¥å¯èœã§ãã
ãã®ã»ã¯ã·ã§ã³ãååšããªãå Žåãé€å»æ©èœã¯ç¡å¹ã«ãªãäžèŠã³ãŒãã®é€å»ã¯è¡ãããŸããã
é€å»ç¡å¹ãªãã·ã§ã³
ãã®ãªãã·ã§ã³ã¯ãäž»ãšããŠå©äŸ¿æ§ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããã«äœ¿çšãããŸãã ãã®ãªãã·ã§ã³ãèšå®ãããšãé€å»ã»ã¯ã·ã§ã³ã®æ®ãã®éšåã®å 容ã«é¢ä¿ãªããDotfuscator ã¯é€å»åŠçããŸã£ããè¡ããŸããã
é€å»ç¡å¹ãªãã·ã§ã³ïŒ
<removal>
<!--æ¬ã»ã¯ã·ã§ã³ã®æ®ãéšåãç¡èŠããé€å»(äžèŠã³ãŒãã®é€å»)åŠçãã¹ãããããŸã-->
<option>disable</option>
...
</removal>
ConstOnly ãªãã·ã§ã³
ãã®ãªãã·ã§ã³ã¯å®æ°ã®ã¿é€å»ãæå¹ã«ããããã«äœ¿çšããŸãã ãã®ã¢ãŒãã§ã¯ãå®æ°å®£èšã®ã¿ãé€å»ãããŸãã æªäœ¿çšã®åãã¡ãœããããã³ãã£ãŒã«ãã¯åºåã¢ã»ã³ããªã«åæ ãããŸãã
å®æ°ã®ã¿é€å»ãªãã·ã§ã³ïŒ
<removal>
<!--äžèŠã³ãŒãã®å®å
šãªé€å»ã§ã¯ãªãå®æ°ã®ã¿é€å»ã䜿çšããŸã-->
<option>constonly</option>
...
</removal>
é€å»ããªã¬ãŒ ãªã¹ã
äžèŠã³ãŒãã®é€å»ã«ãããããªã¬ãŒãšã¯ãDotfuscator ãã³ãŒãã§äœ¿çšãããŠããåãã¡ãœããããã³ãã£ãŒã«ããå€æããããã«è¡ãéçäŸåé¢ä¿ã®åæã®éå§ç¹ã§ãã å¥ã®èšãæ¹ããããšãããªã¬ãŒãšã¯ã¢ããªã±ãŒã·ã§ã³ãããã¯ã©ã€ãã©ãªã®ãšã³ã㪠ãã€ã³ãã§ãããšèšããŸãã
äžããããããªã¬ãŒã¯ Dotfuscator ã«ãã£ãŠåæããããã®ã¢ããªã±ãŒã·ã§ã³ãŸãã¯ã©ã€ãã©ãªãæ©èœããã«ã¯ã©ã®ã¯ã©ã¹ãã¡ãœããããã³ãã£ãŒã«ããå¿ èŠã§ããããå€æããŸãã ããšãã°ãããªã¬ãŒãåŒã³åºããã¹ãŠã®ã¡ãœãããããã³ãããã®ã¡ãœãããåŒã³åºãã¡ãœããã¯ãDotfuscator ã§å¿ èŠã§ãããšå€æãããŸãã ã€ãŸããDotfuscator ã«å¯ŸããŠç¹å®ã® Main ã¡ãœãããå¿ èŠã§ãããšéç¥ããå Žåããã® Main ã¡ãœãããåŒã³åºããã¹ãŠã®ã¡ãœãããå¿ èŠã§ãããšããããšã§ãã
ãªããlibrary ãªãã·ã§ã³ã䜿çšããå Žåãããªã¬ãŒ ãªã¹ãã¯å¿ èŠãããŸãããããã£ãŠãåãä»ããããŸãã
ããªã¬ãŒ ãªã¹ãã¯ãlibrary ãªãã·ã§ã³ãªã©ã®ãªãã·ã§ã³ãæé»ã«é©çšãããããªã¬ãŒãšå ±ã«äœ¿çšãããŸãã
ããªã¬ãŒ ãªã¹ãã«ããªã¬ãŒãæå®ããæ¹æ³ã¯ãæ§æãã¡ã€ã«ã®ä»ã®éšåã§é€å€ããã³éžæã®å¯Ÿè±¡ã«ããèŠçŽ ãéžæããæ¹æ³ãšåãã§ãã ãã®ãªã¹ãã«ã¯ãå®è¡æã«é©çšãããèŠåã®ãªã¹ããå«ããŸãã èŠåã§ç¹å®ã®ã¡ãœãããããã¯ãã£ãŒã«ããéžæãããšããã®ã¡ãœãããããã¯ãã£ãŒã«ãã¯ããªã¬ãŒã«ãªããŸãã
åèŠåã¯è«ççã« OR
ã§çµåãããããã1 ã€ã§ãèŠåã«ãããããé
ç®ã¯ããªã¬ãŒã«ãªããŸãã
ããªã¬ãŒ ãªã¹ãã¯ãåãã¡ãœãããã¢ã»ã³ããªãã¢ãžã¥ãŒã«ããŸãã¯åå空éã«ãããã£ãŒã«ããã¡ãœãããããããã£ãããã³ã€ãã³ãã®æå®ããµããŒãããŠããŸãã
åçš®èŠåã«ã€ããŠã¯ãäžèŠã³ãŒãã®é€å»ã§è©³ãã説æããŸãã
æ¡ä»¶ä»ã察象éžæãªã¹ã
ããåãéçäŸåé¢ä¿ã®åæã«ãã£ãŠæ€åºã§ããªãå ŽåïŒããªãã¡åãåçã«èªã¿èŸŒãŸããå ŽåïŒããã®åã¯æ¡ä»¶ä»ãã§å¯Ÿè±¡ãšããŠéžæãããå¿ èŠããããŸããããã¯ããã®åèªäœã¯äŸåé¢ä¿ã®åæ察象ã«ãªããŸããããã®ã¡ã³ããŒã¯äŸç¶ãšããŠé€å»ã®å¯Ÿè±¡ã«ãªãããšãæå³ããŸãã ãã®æ©èœã®è©³çŽ°ã«ã€ããŠã¯ã察象éžæããªã¬ãŒãšæ¡ä»¶ä»ã察象ã®ç解ãåç §ããŠãã ããã
ãã®ã»ã¯ã·ã§ã³ã¯ãæ¡ä»¶ä»ãã§å¯Ÿè±¡ãšããŠéžæãããåãåçã«æå®ããæ¹æ³ãæäŸããŸãã ãã®ã»ã¯ã·ã§ã³ã«ã¯ãå®è¡æã«é©çšããã察象éžæèŠåã®ãªã¹ããå«ããŸãã èŠåã§ç¹å®ã®åãéžæãããšããã®é ç®ã¯æ¡ä»¶ä»ãã§å¯Ÿè±¡ãšããŠéžæãããŸãã
åèŠåã¯è«ççã« OR
ã§çµåãããããã1 ã€ã§ãèŠåã«ãããããé
ç®ã¯æ¡ä»¶ä»ãã§å¯Ÿè±¡ãšããŠéžæãããŸãã
察象éžæãªã¹ãã¯ãååãã¢ã»ã³ããªãã¢ãžã¥ãŒã«ããŸãã¯åå空éã«ããåã®éžæããµããŒãããŠããŸãã
åçš®èŠåã«ã€ããŠã¯ãäžèŠã³ãŒãã®é€å»ã§è©³ãã説æããŸãã
é€å»ã®åç §èŠå
åç
§èŠåã䜿çšãããšãå€éšãã¡ã€ã«ããèŠåãã€ã³ããŒãããŠãæ§æéã§å
±æã§ããããã«ãªããŸãã
Dotfuscator ã®çµã¿èŸŒã¿ã®é€å»èŠåã¯ãããã䜿çšã㊠%ProgramData%\PreEmptive Solutions\Common\dotfuscatorReferenceRule_v1.4.xml ããèŠåãã€ã³ããŒãããŠããŸãã
èŠå㯠rulekey
å±æ§ã§åç
§ãããŸããå€ã«ã¯ãåç
§ãããèŠåã«å®çŸ©ãã GUID ãæå®ããŸãã
åç §èŠåïŒ
<referencerulelist>
<referencerule rulekey="{0D458786-E99F-4593-849B-8512493884A1}"/>
<referencerule rulekey="{C1159284-4F0D-4e9f-B3EC-303828419741}"/>
</referencerulelist>
é€å»ã¬ããŒã
é€å»ã¬ããŒãã¯ãçµ±èšã»ã¯ã·ã§ã³ãå«ãããç¹å®ã®å®è¡äžã« Dotfuscator ã«ãã£ãŠé€å»ããããã¹ãŠã®èŠçŽ ã®æŠèŠãæäŸããŸãã Dotfuscator ã¯é€å»ã¬ããŒãã解æå¯èœã§å€æã容æ㪠XML 圢åŒã§æžã蟌ã¿ãŸãã ååå€æŽå²ãåœãŠãã¡ã€ã«ã®ããã«ãDotfuscator ã¯æ¢å®ã®å€æãã¡ã€ã«ãæã£ãŠããããã®ãã¡ã€ã«ã䜿çšããŠå€èªå¯èœãª HTML 圢åŒã®ã¬ããŒããçæã§ããŸãã
Dotfuscator ã¯åãååã®æ¢åã®é€å»ã¬ããŒããæ€åºãããå Žåã«ã¯ãèªåçã«ãã®ã¬ããŒãã®ååãå€æŽããŠãããæ°ããã¬ããŒãã§æ¢åã¬ããŒããäžæžãããããã«ãªã£ãŠããŸãã
Dotfuscator ã«æ¢åã®é€å»ã¬ããŒãã®ååãèªåçã«å€æŽãããªãããã«æ瀺ããã«ã¯ãæ§æãã¡ã€ã«ã« overwrite="true"
ãšããå±æ§ãèšå®ããŸãã
XML 圢åŒã®é€å»ã¬ããŒã ãã¡ã€ã«ã«ã€ããŠã¯ãäžèŠã³ãŒãã®é€å»ã§èª¬æããŸãã
é€å»ã¬ããŒãïŒ
<removal>
<removalreport overwrite="true">
<file dir="c:\work" name="report.xml"/>
<transform>
<!-- ç¬èªã® XSL ãã¡ã€ã«ã®æå®ã¯ä»»æã§ã -->
<file dir="c:\mytransforms" name="removal.xsl"/>
</transform>
</removalreport>
</removal>
ãªã³ã¯ ã»ã¯ã·ã§ã³
ãªã³ã¯ ã»ã¯ã·ã§ã³ã§ã¯ãã¢ã»ã³ããªã®ãªã³ã¯ã«åºæã®ãªãã·ã§ã³ãæå®ã§ããŸãã ãªã³ã¯æ©èœã®è©³çŽ°ã«ã€ããŠã¯ãã¢ã»ã³ããªã®ãªã³ã¯ãåç §ããŠãã ããã
ãªã³ã¯ ã»ã¯ã·ã§ã³ã¯çç¥å¯èœã§ãã ãã®ã»ã¯ã·ã§ã³ãååšããªãå Žåãã¢ã»ã³ããªã®ãªã³ã¯æ©èœã¯ç¡å¹ã«ãªããŸãã
ãªã³ã¯ç¡å¹ãªãã·ã§ã³
ãã®ãªãã·ã§ã³ã¯ãäž»ãšããŠå©äŸ¿æ§ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããã«äœ¿çšãããŸãã ãã®ãªãã·ã§ã³ãèšå®ãããšããªã³ã¯ ã»ã¯ã·ã§ã³ã®æ®ãã®éšåã®å 容ã«é¢ä¿ãªããDotfuscator ã¯ãªã³ã¯åŠçããŸã£ããè¡ããŸããã
ãªã³ã¯ç¡å¹ãªãã·ã§ã³ïŒ
<linking>
<!-- æ¬ã»ã¯ã·ã§ã³ã®æ®ãéšåãç¡èŠãããªã³ã¯åŠçãã¹ãããããŸã -->
ãªã³ã¯ ã¢ã»ã³ããª
<linkedassembly>
èŠçŽ ã¯ã1 ã€ä»¥äžã®å
¥åã¢ã»ã³ããªãç¹å®ã®åºåã¢ã»ã³ããªã«ãªã³ã¯ããããšãæå®ããŸãã
ãªã³ã¯ ã»ã¯ã·ã§ã³ã«ã¯è€æ°ã® <linkedassembly>
èŠçŽ ãå«ãããšãã§ããããããã®ãªã³ã¯æ©èœã䜿ã£ãŠè€æ°ã®åºåã¢ã»ã³ããªãäœæã§ããŸãã
å¯äžã1 ã€ã®å
¥åã¢ã»ã³ããªãè€æ°ã®åºåã¢ã»ã³ããªã«ãªã³ã¯ãããããšã¯ã§ããªããšããå¶éããããŸãã
<linkedassembly>
èŠçŽ ã«ã¯åèŠçŽ ãå«ãããšãã§ããååå€æããªã·ãŒãªã©ã®ãªã³ã¯åŠçãªãã·ã§ã³ãããã©ã€ã㪠ã¢ã»ã³ããªãå
¥åã¢ã»ã³ããªã®ãªã¹ããããã³åºåã¢ã»ã³ããªã®ååãæå®ã§ããŸãã
ãªãã·ã§ã³
çŸåšæå®ã§ãããªãã·ã§ã³ã¯ "ååå€æããªã·ãŒ" ã®ã¿ã§ã次ã®ãããããæå®ã§ããŸãã
- donotmangleïŒæ¹å€ããªãïŒ
- manglesilentlyïŒæé»ã®æ¹å€ïŒ
- mangleandwarnïŒæ¹å€ããŠèŠåïŒ
ãã©ã€ã㪠ã¢ã»ã³ããª
<primaryinput>
èŠçŽ ã¯ãã©ã€ã㪠ã¢ã»ã³ããªãå®çŸ©ããŸãããã®ã¢ã»ã³ããªã®ãããã§ã¹ãæ
å ±ãåºã«ãåºåã¢ã»ã³ããªã®ãããã§ã¹ããäœæãããŸãã
ãã®ã¢ã»ã³ããªã¯ã次ã§èª¬æãã <assemblylist>
èŠçŽ ã«ãèšè¿°ããå¿
èŠããããŸãã
ãªã³ã¯ããã¢ã»ã³ããª
ãªã³ã¯ããã¢ã»ã³ããªã¯ã<assemblylist>
èŠçŽ ã䜿ã£ãŠåæããŸãã
ãŸããåã¢ã»ã³ããªã¯å
¥åã¢ã»ã³ããªãšããŠãåæããå¿
èŠããããŸãã
åºåã¢ã»ã³ããª
<outputassembly>
èŠçŽ ã«ã¯åºåã¢ã»ã³ããªã®ååãšãä»»æã§ãšã³ã㪠ãã€ã³ã ã¡ãœãããæå®ã§ããŸãã
ã¢ã»ã³ããªã¯åºåå
ãã£ã¬ã¯ããªã«æå®ãããååã§æžã蟌ãŸããŸãã
äŸ
次ã®äŸã® <linkedassembly>
èŠçŽ ã¯ãå
¥åã¢ã»ã³ããªã® Driver.exe
ãš LibraryC.dll
ã out.exe
ãšããååã®ã¢ã»ã³ããªã«ãªã³ã¯ããããšãæå®ããŠããŸãã
ãšã³ã㪠ãã€ã³ã ã¡ãœãã㯠Driver
ã¢ã»ã³ããªå
ã® Main
ã¡ãœããã§ãããšæ瀺çã«èšå®ãããŠããŸãã
ãªã³ã¯ ã¢ã»ã³ããªïŒ
<linkedassembly>
<option>donotmangle</option>
<primaryinput>
<assembly>
<file dir="${configdir}" name="Driver.exe" />
</assembly>
</primaryinput>
<assemblylist>
<assembly>
<file dir="${configdir}" name="Driver.exe" />
</assembly>
<assembly>
<file dir="${configdir}" name="LibraryC.dll" />
</assembly>
</assemblylist>
<outputassembly name="out.exe">
<entrypoint>
<type name="Driver.Form1">
<method name="Main" signature="" />
</type>
</entrypoint>
</outputassembly>
</linkedassembly>
PreMark ã»ã¯ã·ã§ã³
PreMark ã»ã¯ã·ã§ã³ã§ã¯ããŠã©ãŒã¿ãŒããŒã¯ã«åºæã®ãªãã·ã§ã³ãæå®ã§ããŸãã ã¢ã»ã³ããªã®ãŠã©ãŒã¿ãŒããŒã¯ã®è©³çŽ°ã«ã€ããŠã¯ããŠã©ãŒã¿ãŒããŒã¯ãåç §ããŠãã ããã
PreMark ãªãã·ã§ã³
ãŠã©ãŒã¿ãŒããŒã«ã¯ããã€ãã®æ§æãªãã·ã§ã³ããµããŒãããŠããŸãã
usepassphrase
ãªãã·ã§ã³ã¯ããŠã©ãŒã¿ãŒããŒã¯æååãæå·åããŠããéžæãããŠããã¢ã»ã³ããªã«é©çšããããããŠã©ãŒã¿ãŒããŒã«ã«æ瀺ããŸãã
truncatestring
ãªãã·ã§ã³ã¯ããŠã©ãŒã¿ãŒããŒã¯æååãæå®ãããã¢ã»ã³ããªã«åãŸããªãå Žåã«ã¯æååãåãæšãŠãããã«æ瀺ããŸãã
æ¢å®ã®åäœã§ã¯ããŠã©ãŒã¿ãŒããŒã¯æååã倧ããããå Žåã«ã¯ãã«ããäžæ¢ãããŸãã
詳现ã«ã€ããŠã¯ããŠã©ãŒã¿ãŒããŒã¯æååã®é·ããåç
§ããŠãã ããã
disable
ãªãã·ã§ã³ã¯ãäž»ã«å©äŸ¿æ§ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããã«çšæãããŠããŸãã
ãã®ãªãã·ã§ã³ãèšå®ãããšãPreMark ã»ã¯ã·ã§ã³ã®æ®ãã®éšåã®å
容ã«é¢ä¿ãªããDotfuscator ã¯ãŠã©ãŒã¿ãŒããŒã¯åŠçããŸã£ããè¡ããŸããã
PreMark ãªãã·ã§ã³ïŒ
<premark>
<!--æ¬ã»ã¯ã·ã§ã³ã®æ®ãéšåãç¡èŠãããŠã©ãŒã¿ãŒããŒã¯åŠçãã¹ãããããŸã-->
<option>disable</option>
<!-- ãŠã©ãŒã¿ãŒããŒã¯æååãæå·åããŸã -->
<option>usepassphrase</option>
<!-- æååã倧ããããå Žåã¯ãæååãåãè©°ããŠåŠçãç¶è¡ããŸã -->
<option>truncatestring</option>
...
</premark>
PreMark ã®èŠçŽ
premark ã»ã¯ã·ã§ã³ã«ã¯åèŠçŽ ãå«ãããšãã§ãããŠã©ãŒã¿ãŒããŒã¯ãèšå®ããå ¥åã¢ã»ã³ããªãããŠã©ãŒã¿ãŒããŒã¯æååãæå·åããéã«äœ¿çšãããã¹ãã¬ãŒãºã䜿çšããæåãšã³ã³ãŒããããã³ãŠã©ãŒã¿ãŒããŒã¯æååèªäœãæå®ã§ããŸãã
ãŠã©ãŒã¿ãŒããŒã¯ãèšå®ããã¢ã»ã³ããª
ãŠã©ãŒã¿ãŒããŒã¯ãèšå®ããã¢ã»ã³ããªã¯ã<assemblylist>
èŠçŽ ã䜿ã£ãŠåæããŸãã
ãŸããåã¢ã»ã³ããªã¯å
¥åã¢ã»ã³ããªãšããŠãåæããå¿
èŠããããŸãã
<passphrase>
<passphrase>
èŠçŽ ã§ã¯ããŠã©ãŒã¿ãŒããŒã¯æååãæå·åããéã«äœ¿çšãããã¹ãã¬ãŒãºãæå®ããŸãã
usepassphrase
ãªãã·ã§ã³ãèšå®ããã¹ãã¬ãŒãºãæå®ããã°ããŠã©ãŒã¿ãŒããŒã¯æååã¯æå·åãããŸãã
<encoding>
<encoding>
èŠçŽ ã§ã¯ããŠã©ãŒã¿ãŒããŒã¯æååããšã³ã³ãŒãããéã«äœ¿çšããæåãšã³ã³ãŒãïŒã€ãŸã "æåã³ãŒã"ïŒãæå®ããŸãã<encoding>
èŠçŽ ã¯name
å±æ§ãæã¡ããµããŒããããæåã³ãŒããèšå®ã§ããŸãã æåã³ãŒããšãã®ååã«ã€ããŠã¯ãæåã³ãŒãã§èª¬æããŸãã
<watermark>
<watermark>
èŠçŽ ã«ã¯ãéžæããã¢ã»ã³ããªã«é©çšããæååãæå®ããŸãã
æååã¯ããŸãæåã³ãŒãã«ãããšã³ã³ãŒãããã次ã«ãªãã·ã§ã³ã§æå·åãããŸãã
äŸ
次ã®äŸã¯ãMyApp.exe
ã«ãŠã©ãŒã¿ãŒããŒã¯ãé©çšããããã« PreMark ãæ§æããŠããŸãã
ãŠã©ãŒã¿ãŒããŒã¯æååã® MY WATERMARK
ã¯ããŸã 6bit-a
æåã³ãŒãã䜿ã£ãŠãšã³ã³ãŒããããŠããããã¹ãã¬ãŒãº "mommy
" ã䜿ã£ãŠæå·åãããŸãã
PreMark ã®èŠçŽ ïŒ
<premark>
<option>usepassphrase</option>
<option>truncatestring</option>
<assemblylist>
<assembly>
<file dir="${configdir}" name="MyApp.exe" />
</assembly>
</assemblylist>
<passphrase>mommy</passphrase>
<encoding name="6bit-a" />
<watermark>MY WATERMARK</watermark>
</premark>
眲åã»ã¯ã·ã§ã³
眲åã»ã¯ã·ã§ã³ã§ã¯ãå³å¯åã®åºåã¢ã»ã³ããªã« Dotfuscator ã§çœ²åãããã©ããããŸã眲åããå Žåã®æ¹æ³ãæå®ã§ããŸãã ã¢ã»ã³ããªã®çœ²åã«é¢ãã詳现ã«ã€ããŠã¯ãå³å¯åã®ã¢ã»ã³ããªã®é£èªåãåç §ããŠãã ããã
眲åã»ã¯ã·ã§ã³ã¯çç¥å¯èœã§ãã ãã®ã»ã¯ã·ã§ã³ãååšããªãå Žåãå³å¯åã®å ¥åã¢ã»ã³ããªã¯ Dotfuscator ã®åŠçåŸã«å眲åããããAuthenticode ããžã¿ã«çœ²åã¯é©çšãããŸããã
<key> èŠçŽ ã®æå®
眲åãããšãã« Dotfuscator ã䜿çšããããŒãŸãã¯ã㌠ãã¢ã <key>
èŠçŽ ã§æå®ã§ããŸãã
<key>
èŠçŽ ã«ã¯ãåèŠçŽ ã® <file>
ãŸã㯠<container>
ã®ãããããå«ãããšãã§ããŸãã
<file>
èŠçŽ ã¯ãããŒãŸãã¯ã㌠ãã¢ãå«ãã§ãããã¡ã€ã«ãåç
§ããŸãã
<container>
èŠçŽ 㯠"name
" å±æ§ãæã¡ãã㌠ã³ã³ãããŒã®ååãæå®ã§ããŸãã
<file> èŠçŽ ïŒ
<key>
<file dir="c:\temp" name="key.snk" />
</key>
<container> èŠçŽ ïŒ
<key>
<container name="foo"/>
</key>
<resign> èŠçŽ ïŒ
Dotfuscator ã®åŠçåã«æ¢ã«çœ²åãããŠããã¢ã»ã³ããªã«å眲åããå Žåã¯ã<resign>
èŠçŽ ã䜿çšããŸãã
䜿çšããããŒãæå®ããã«ã¹ã¿ã å±æ§ãã¢ã»ã³ããªã«èšè¿°ãããŠããå Žåã<key>
èŠçŽ ã®æå®ã¯å¿
èŠãããŸããã
å±æ§ãç¡èŠãããå Žå㯠dontuseattributes
ãªãã·ã§ã³ãèšå®ãã<key>
èŠçŽ ãæå®ããŸãã
ã¢ã»ã³ããªã«ããŒãæå®ããã«ã¹ã¿ã å±æ§ããªãå Žåã¯ã<key>
èŠçŽ ãæå®ããå¿
èŠããããŸãã
次ã®äŸã§ã¯ãDotfuscator ã«ã¯ããŒãæå®ããã«ã¹ã¿ã å±æ§ããã¹ãŠç¡èŠããããã«éç¥ãã代ããã«æäœæ¥ã§ã㌠ãã¡ã€ã«ãæå®ããŠããŸãã
<resign> èŠçŽ ïŒ
<signing>
<resign>
<option>dontuseattributes</option>
<key>
<file dir="c:\temp" name="key.snk" />
</key>
</resign>
...
</signing>
<delaysign> èŠçŽ ïŒ
å
¥åã¢ã»ã³ããªãé
延眲åãããŠãããšãããã®çœ²åããã»ã¹ã Dotfuscator ã§èªåçã«å®äºãããå Žåã¯ã<delaysign>
èŠçŽ ãšå
±ã« <key>
åèŠçŽ ãæå®ã§ããŸãã
<delaysign> èŠçŽ ïŒ
<signing>
...
<delaysign>
<key>
<file dir="c:\temp" name="key.snk" />
</key>
</delaysign>
</signing>
ããžã¿ã«çœ²åã»ã¯ã·ã§ã³
ããžã¿ã«çœ²åã»ã¯ã·ã§ã³ã§ã¯ãåºåã¢ã»ã³ããªã«å¯Ÿã Dotfuscator 㧠Authenticode ããžã¿ã«çœ²åãè¡ããã©ããããŸã眲åãè¡ãå Žåã®æ¹æ³ãæå®ã§ããŸãã
ããžã¿ã«çœ²åã»ã¯ã·ã§ã³ã¯çç¥å¯èœã§ãã ãã®ã»ã¯ã·ã§ã³ãååšããªãå ŽåãAuthenticode 眲åã¯é©çšãããŸããã
<pfx> èŠçŽ ã®æå®
Authenticode 眲åã§äœ¿çšããã³ãŒã眲åæš©éã«ãã£ãŠæäŸãããŠãã PKCS #12 ãã¡ã€ã«ã <pfx>
èŠçŽ ãçšããŠæå®ã§ããŸãã
<pfx> èŠçŽ ã«ã¯ã<file>
åèŠçŽ ããããŸãããã®èŠçŽ ã«ã¯ã³ãŒã眲å蚌ææžãå«ã PKCS #12ïŒ.pfxïŒãã¡ã€ã«ã®å Žæãæå®ããŸãã
ãŸãã<pfx>
èŠçŽ ã¯ã蚌ææžã®ããã¯è§£é€ã«äœ¿çšãããã¹ã¯ãŒããæå®ãã password å±æ§ããããŸãã
<pfx> èŠçŽ ïŒ
<pfx password="secret123">
<file dir="c:\temp" name="authenticode.pfx" />
</pfx>
<digitalsigning> èŠçŽ
åºåã¢ã»ã³ããªã« Authenticode 眲åãè¡ãã«ã¯ã<digitalsigning>
èŠçŽ ãæäŸã§ããŸããåèŠçŽ ãšã㊠<pfx>
ã䜿çšããŸãã
disable ãªãã·ã§ã³ã¯ãäž»ã«å©äŸ¿æ§ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããã«çšæãããŠããŸãã ãã®ãªãã·ã§ã³ãèšå®ãããšãAuthenticode 眲åã»ã¯ã·ã§ã³ã®æ®ãã®éšåã®å 容ã«é¢ä¿ãªããDotfuscator 㯠Authenticode 眲åããŸã£ããè¡ããŸããã
<timestampurl> åèŠçŽ ã䜿çšããã°ãAuthenticode ã®ã¿ã€ã ã¹ã¿ã³ã ãµãŒãã¹ã® URL ãæå®ããããšãã§ããŸãã ãã® URL 㯠Dotfuscator ã®çœ²åããã»ã¹æã«ã¢ã¯ã»ã¹ãããããããè¿œå ããŒã¿ãæäŸãããŸãããã®è¿œå ããŒã¿ã䜿çšããã°ãã¢ã»ã³ããªã® Authenticode 眲åã¯ãã³ãŒã眲å蚌ææžã®æå¹æéãåããåŸãæå¹ãªãŸãŸã«ãªããŸãã ãã®èŠçŽ ã¯çç¥å¯èœã§ãã ãã ããçç¥ããå Žåã«ã¯ãã®è¿œå ããŒã¿ã¯å«ãŸããªãã®ã§ãã³ãŒã眲å蚌ææžã®æå¹æéãåãããšã¢ã»ã³ããªã® Authenticode 眲åã¯ç¡å¹ã«ãªããŸãã
<digitalsigning> èŠçŽ ïŒ
<digitalsigning>
<!--æ¬ã»ã¯ã·ã§ã³ã®æ®ãéšåãç¡èŠããAuthenticode 眲åãã¹ãããããŸã-->
<option>disable</option>
<!--Authenticode 眲åã«äœ¿çšãã蚌ææžãæå®ããŸã-->
<pfx password="secret123">
<file dir="c:\temp" name="authenticode.pfx" />
</pfx>
<!--ä»»æã§ã¿ã€ã ã¹ã¿ã³ã ãµãŒãã¹ãžã® URL ãæå®ããŸã-->
<timestampurl>http://timestamp.comodoca.com/authenticode</timestampurl>
</digitalsigning>
EventList ã»ã¯ã·ã§ã³
eventlistïŒã€ãã³ã ãªã¹ãïŒã»ã¯ã·ã§ã³ã§ã¯ããã«ãåããã³ãã«ãåŸã®ã€ãã³ããæå®ã§ããŸãã Dotfuscator ã®ãã«ã ã€ãã³ãã®è©³çŽ°ã«ã€ããŠã¯ããã«ã ã€ãã³ããåç §ããŠãã ããã
eventlist ã»ã¯ã·ã§ã³ã¯çç¥å¯èœã§ãã
<event> èŠçŽ
ã€ãã³ãã¯æ¬è³ªçã«ã¯ 1 ã€ã®ããã°ã©ã ã§ãããDotfuscator ã®ãã«ãå·¥çšã«ãããããç¹å®ã®æç¹ã« Dotfuscator ãå®è¡ãããã®ã§ãã
ããã°ã©ã åãäœæ¥ãã£ã¬ã¯ããªãããã³ã³ãã³ã ã©ã€ã³åŒæ°ãæå®ã§ããŸãã
ããã«ãã€ãã³ãã¯ã<option>
èŠçŽ ã䜿ã£ãŠè¿œå ã®æ§æèšå®ããµããŒãããããšãã§ããŸãã
<event>
èŠçŽ 㯠type
å±æ§ãæã¡ãŸãã
çŸåšãDotfuscator ãèªèã§ããã¿ã€ã㯠prebuild
ãš postbuild
ã® 2 ã€ã§ãã
å®è¡ããããã°ã©ã 㯠<program>
èŠçŽ ã䜿ã£ãŠæå®ããŸãã
ã€ãã³ã <program> èŠçŽ
ã€ãã³ãã®çºçæã«å®è¡ããããã°ã©ã ã¯ã<program>
èŠçŽ ã§æå®ããŸãã
ãã®èŠçŽ ã¯ãããã°ã©ã ãšããã°ã©ã ã®å Žæãæå®ãã <file>
èŠçŽ ã ãã§ãªããã³ãã³ã ã©ã€ã³åŒæ°ãäœæ¥ãã£ã¬ã¯ããªãæå®ãã <environment>
èŠçŽ ãå«ãã§ããŸãã
commandline
å±æ§ã«ã¯ããã¡ã€ã«ããã£ã¬ã¯ããªãšåæ§ã«ããããã㣠ãã¯ããå«ãããšãã§ããŸãã
ãããã㣠ãã¯ãïŒ
<program>
<file dir="c\temp" name="copyfiles.bat" />
<environment commandline="${myproperty}" workingdir="c:\temp" />
</program>
ãã«ãåã®ã€ãã³ã ãªãã·ã§ã³
ãã«ãåã®ã€ãã³ã㯠1 ã€ã®ãªãã·ã§ã³ããµããŒãããŠããŸãããªãã·ã§ã³ã¯ããã«ãåã€ãã³ãã® <event>
èŠçŽ ã®äžã«å
¥ãå㧠<option>
èŠçŽ ãèšè¿°ããŠèšå®ã§ããŸãã
ãªãã·ã§ã³ | |
---|---|
haltonfail | ãã«ã ã€ãã³ã ããã°ã©ã ããŒã以å€ã®ãšã©ãŒ ã³ãŒããè¿ããå ŽåãDotfuscator ã®ãã«ããäžæ¢ããŸãã |
ãã«ãåŸã®ã€ãã³ã ãªãã·ã§ã³
ãã«ãåŸã®ã€ãã³ãã¯ããã€ãã®ãªãã·ã§ã³ããµããŒãããŠããŸãããªãã·ã§ã³ã¯ããã«ãåŸã€ãã³ãã® <event>
èŠçŽ ã®äžã«å
¥ãå㧠<option>
èŠçŽ ãèšè¿°ããŠèšå®ã§ããŸãã
ãªãã·ã§ã³ | |
---|---|
haltonfail | ãã«ã ã€ãã³ã ããã°ã©ã ããŒã以å€ã®ãšã©ãŒ ã³ãŒããè¿ããå ŽåãDotfuscator ã®ãã«ããäžæ¢ããŸãã |
runoneachmodule | åºåã¢ãžã¥ãŒã«ããšã« 1 åããã«ãåŸã®ã€ãã³ããå®è¡ããŸãã |
always | Dotfuscator ã®ãã«ããæåããã倱æãããã«ããããããåžžã«ãã«ãåŸã®ã€ãã³ããå®è¡ããŸãã |
buildfails | Dotfuscator ã®ãã«ãã倱æããå Žåã«ã®ã¿ããã«ãåŸã®ã€ãã³ããå®è¡ããŸãã |
buildsuccessful | Dotfuscator ã®ãã«ããæåããå Žåã«ã®ã¿ããã«ãåŸã®ã€ãã³ããå®è¡ããŸãã |
äŸ
以äžã«ãXML æ§æãã¡ã€ã«å ã§ãã«ãåããã³ãã«ãåŸã®ã€ãã³ããèšå®ããç®æã瀺ããŸãã ãã«ãåã®ã€ãã³ãã§ã¯ãc:\temp\copyfiles.bat ããã°ã©ã ãåŒæ°ãªãã§å®è¡ããŸãã ãã«ããæåãããããã«ãåŸã®ã€ãã³ãã§ã¯ãåºåã¢ã»ã³ããªããšã« PEVerify ããã°ã©ã ãå®è¡ããŸãã åºåã¢ã»ã³ããªåã¯ããããã£ãšã㊠PEVerify ã«æž¡ãããŠããããšã«æ³šç®ããŠãã ããã
XML æ§æãã¡ã€ã«ã®äŸïŒ
<eventlist>
<event type="prebuild">
<program>
<file dir="c\temp" name="copyfiles.bat" />
<environment commandline="" workingdir="c:\temp" />
</program>
</event>
<event type="postbuild">
<option>runoneachmodule</option>
<option>haltonfail</option>
<program>
<file dir="C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin" name="PEVerify.exe" />
<environment commandline="${dotf.current.out.module}"
workingdir="${dotf.destination}" />
</program>
</event>
</eventlist>
PreEmptive Analytics ã»ã¯ã·ã§ã³
PreEmptive Analytics ã»ã¯ã·ã§ã³ã§ã¯ãå ¥åã¢ã»ã³ããªã®ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³å±æ§ã®åŠçæ¹æ³ãå¶åŸ¡ãããªãã·ã§ã³ãæå®ã§ããŸãã å·®ã蟌ã¿ããã³é é枬å®ã®è©³çŽ°ã«ã€ããŠã¯ã差ã蟌ã¿ïŒœãšãã£ã¿ãŒãåç §ããŠãã ããã
PreEmptive Analytics ã»ã¯ã·ã§ã³ã¯çç¥å¯èœã§ãã
sos
èŠçŽ 㯠mergeruntime
å±æ§ãå®çŸ©ããŸãããã®å±æ§ã«ã¯true
ïŒæ¢å®å€ïŒãŸã㯠false
ãæå®ã§ããŸãã
true
ã®å ŽåãDotfuscator 㯠PreEmptive Analytics ã©ã€ãã©ãªãå
¥åã¢ã»ã³ããªã® 1 ã€ã«ããŒãžããŸãã
false
ã®å ŽåãDotfuscator ã¯ã©ã³ã¿ã€ã ã©ã€ãã©ãª DLL ãã»ãã®å
¥åã¢ã»ã³ããªãšäžç·ã«åºåå
ãã£ã¬ã¯ããªãžæžã蟌ã¿ãŸãã
PreEmptive Analytics ã«ã¯ã差ã蟌ã¿ãæå¹ã«ãããåæã¡ãã»ãŒãžã®é信ãæ¹ããã¡ãã»ãŒãžã®é信ãShelf Life ã¡ãã»ãŒãžã®é信ãããã³ïŒ»ãããã° ãã§ã㯠ã¡ãã»ãŒãžã®é信ãšããè¿œå ãªãã·ã§ã³ããããŸãã
sendanalytics
ãªãã·ã§ã³ã¯ãã¢ããªã±ãŒã·ã§ã³åæã®ã¹ã¿ãŒãã¢ãããã·ã£ããããŠã³ãããã³æ©èœã®ã¡ãã»ãŒãžã PreEmptive Analytics Endpoint ãžéä¿¡ããã³ãŒãããããŒã¯ãããã¢ã»ã³ããªã«è¿œå ãããã Dotfuscator ã«æ瀺ããŸãã
åæããªãã§æ¹ããã¡ãã»ãŒãžãéä¿¡ãããå Žåã«ã¯ããã®ãªãã·ã§ã³ã®èšå®ã解é€ããŸãã
dontsendtamper
ãªãã·ã§ã³ã¯ãæ¹ãããæ€åºãããŠãæ¹ããéç¥ãéä¿¡ããªããããDotfuscator ã«æ瀺ããŸãã
ããã¯ãæ¹ãããæ€åºããŠã¢ããªã±ãŒã·ã§ã³ã«ããŒã«ã«ã§å¯Ÿå¿ããããããã¢ããªã±ãŒã·ã§ã³ãã PreEmptive Analytics Endpoint ãžã¡ãã»ãŒãžãéä¿¡ãããããªãå Žåã«æçšã§ãã
sendshelflife
ãªãã·ã§ã³ã¯ãShelf Life ã®ç¶æ
ã¡ãã»ãŒãžãéä¿¡ããããžãã¯ãè¿œå ããã³ãŒãããããŒã¯ãããã¢ã»ã³ããªã«è¿œå ãããã Dotfuscator ã«æ瀺ããŸãã
ããã«ã¯ãèŠåãæéåããããã³ Sign of Life ã¡ãã»ãŒãžãå«ãŸããŸãã
senddebug
ãªãã·ã§ã³ã¯ãã¢ã¿ããããããããã¬ãŒãæ€åºãããå ŽåãäŸå€ã¡ãã»ãŒãžãéä¿¡ããããžãã¯ãè¿œå ããã³ãŒãããããŒã¯ãããã¢ã»ã³ããªã«è¿œå ãããã Dotfuscator ã«æ瀺ããŸãã
disable
ãªãã·ã§ã³ã¯ãäž»ã«å©äŸ¿æ§ãšãã©ãã«ã·ã¥ãŒãã£ã³ã°ã®ããã«çšæãããŠããŸãã
ãã®ãªãã·ã§ã³ãèšå®ãããšãå
¥åã¢ã»ã³ããªå
ã«ã©ã®ãããªå±æ§ãããããšãsos ã»ã¯ã·ã§ã³å
ã«ã»ãã®ãªãã·ã§ã³ãããããšé¢ä¿ãªããDotfuscator ã¯ãã®å±æ§ã®åŠçããŸã£ããè¡ããŸããã
PreEmptive Analytics ã®åŠçïŒ
<sos mergeruntime="true">
<!-- PreEmptive Analytics ã®åŠçãç¡å¹ã«ããŸã -->
<option>disable</option>
<!-- èµ·åãã·ã£ããããŠã³ãããã³æ©èœã®ã¡ãã»ãŒãžãéä¿¡ããŸã -->
<option>sendanalytics</option>
<!-- æ¹ããã¡ãã»ãŒãžãéä¿¡ããŸãã -->
<option>dontsendtamper</option>
<!-- Shelf Life ã¡ãã»ãŒãžãéä¿¡ããŸã -->
<option>sendshelflife</option>
<!-- ãããã° ãã§ã㯠ã¡ãã»ãŒãžãéä¿¡ããŸã -->
<option>senddebug</option>
</sos>
æ¡åŒµå±æ§ã»ã¯ã·ã§ã³
Dotfuscator ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ ã³ãŒããå€æŽããªããŠããã¡ãœãããã¢ã»ã³ããªã«æ¡åŒµå±æ§ãä»ããããšãã§ããŸãã æ¡åŒµå±æ§ã¯ãã³ãŒãå ã®ãµããŒããããŠããæ¢åã®ã«ã¹ã¿ã å±æ§ãå€æŽãããããµããŒããããŠããå±æ§ã®æ°ããã€ã³ã¹ã¿ã³ã¹ãšããŠåäœããããšãã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ã®åŠçããã³å€æãè¡ãéãDotfuscator ã¯æ¡åŒµå±æ§ãã«ã¹ã¿ã å±æ§ãšåçã®ãã®ãšããŠæ±ããŸãã
<codetransformlist>
èŠçŽ ã䜿çšãããšãå±æ§ãã³ãŒãã«åã蟌ãŸããŠãããã®ã§ãã£ãŠããæ¡åŒµå±æ§ã䜿ã£ãŠãããããµããŒããããŠããç¹å®ã®ã³ãŒãå€æã«å²ãåœãŠãããšãã§ããŸãã
ããã¯å±æ§ã®ãªãŒããŒããŒãããµããŒãããŠãããåãå±æ§ã®ã»ããã§è€æ°ã®å€æåŠçïŒã¢ããªã±ãŒã·ã§ã³åæãªã©ïŒãäœåãããããšãã§ããŸãã
ãµããŒããããŠããå±æ§ã®åŒæ°ã¯ã<propertylist>
èŠçŽ ã䜿çšããŠæå®ã§ããŸãã
ãã§ãã¯å±æ§ããã³ã€ã³ã¹ãã«ã¡ã³ããŒã·ã§ã³å±æ§ã®ããŒãžã«äžèŠ§è¡šç€ºãããŠãããã¹ãŠã®å±æ§ãããµããŒããããå±æ§ã§ãã
ã¡ãœãã ã¬ãã«ã®å±æ§
ã»ãšãã©ã®æ¡åŒµå±æ§ã¯ã¡ãœãã ã¬ãã«ã§èšå®ã§ããŸãã ã¡ãœãããèå¥ããã«ã¯ãå®çŸ©ããŠããåãååãããã³çœ²åãæå®ããå¿ èŠããããŸãã
äŸïŒ
<extattributes>
<extattribute name="PreEmptive.Attributes.FeatureAttribute">
<codetransformlist>
<codetransform name="analytics"/>
</codetransformlist>
<type name = "MyApplicaton.MainForm">
<method name="Main" signature="string[]" />
</type>
<propertylist>
<property name="Name" value="Execute"/>
<property name="ActivationStatusSinkElement" value="field"/>
<property name="ActivationStatusSinkName" value="activated"/>
</propertylist>
</extattribute>
</extattributes>
ã¢ã»ã³ã㪠ã¬ãã«ã®å±æ§
ApplicationAttribute
ãBinaryAttribute
ãããã³ BusinessAttribute
ãªã©ã®æ¡åŒµã©ã³ã¿ã€ã å±æ§ã¯ãã¢ã»ã³ã㪠ã¬ãã«ã§èšå®ã§ããŸãã
ã¢ã»ã³ããªãèå¥ããã«ã¯ããã®ååã <assembly>
èŠçŽ ã«æå®ããå¿
èŠããããŸãã
äŸïŒ
<extattributes>
<extattribute name="PreEmptive.Attributes.ApplicationAttribute">
<codetransformlist>
<codetransform name="sosruntime" />
</codetransformlist>
<assembly>
<file dir="${configdir}" name="MyApp.exe" />
</assembly>
<propertylist>
<property name="Version" value="" />
<property name="Name" value="" />
<property name="ApplicationType" value="" />
<property name="Guid" value="00000000-0000-0000-0000-000000000000" />
</propertylist>
</extattribute>
</extattributes>
SmartObfuscation ã»ã¯ã·ã§ã³
ã¹ããŒãé£èªåã«ãããDotfuscator ã¯ã¢ããªã±ãŒã·ã§ã³ã®çš®é¡ã«ç¹æã®èŠåã«åºã¥ããŠãååã®å€æŽãé€å»ãå®è¡ã§ããªãèŠçŽ ãèªåæ€åºã§ããããã«ãªããŸãã ã¹ããŒãé£èªåã¯æ¢å®ã§æå¹ã«èšå®ãããŠãããã»ãšãã©ã®å Žåã¯æå¹ã«ããŠããå¿ èŠããããŸãã ãŠãŒã¶ãŒãç©æ¥µçãªé£èªåãè¡ã£ãŠãã¢ããªã±ãŒã·ã§ã³ãæãªããªããšç¢ºä¿¡ããŠããå Žåã«ã¯ããã®ã»ã¯ã·ã§ã³ã®ãªãã·ã§ã³ã䜿çšããŠç¡å¹ã«èšå®ããããšãã§ããŸãã
ã¹ããŒãé£èªåã«ã¯ã¬ããŒãæ©èœãçšæãããŠããããã®ã»ã¯ã·ã§ã³ã§ã¬ããŒãã®è©³çŽ°ãæ§æã§ããŸãã
詳现å±æ§ã«äœ¿çšã§ããå€ã¯ããã¹ãŠ
ãèŠåã®ã¿
ãããã³ ãªã
ã§ãã
æ¢å®å€ã¯ all
ã§ãã
ã¹ããŒãé£èªåã¬ããŒãã¯ãä»»æã§ãã£ã¹ã¯ã«æžãåºãããšãã§ããŸãã
Dotfuscator ã¯åãååã®æ¢åã®ã¹ããŒãé£èªåã¬ããŒããæ€åºãããå Žåã«ã¯ãèªåçã«ãã®ã¬ããŒãã®ååãå€æŽããŠãããæ°ããã¬ããŒãã§æ¢åã¬ããŒããäžæžãããŸãã
Dotfuscator ã«æ¢åã®ã¹ããŒãé£èªåã¬ããŒãã®ååãèªåçã«å€æŽãããªãããã«æ瀺ããã«ã¯ãæ§æãã¡ã€ã«ã« overwrite="true"
ãšããå±æ§ãå¿
èŠã«ãªããŸãã
XML 圢åŒã®ã¹ããŒãé£èªåã¬ããŒãã«ã€ããŠã¯ããã¹ããŒãé£èªåãã»ã¯ã·ã§ã³ã§èª¬æããŠããŸãã
SmartObfuscationïŒ
<smartobfuscation>
<!-- æ¬ã»ã¯ã·ã§ã³ã®æ®ãéšåãç¡èŠããã¹ããŒãé£èªååŠçãã¹ãããããŸã -->
<option>disable</option>
<smartobfuscationreport verbosity="all" overwrite="true">
<!-- åºåã¬ããŒã ãã¡ã€ã«ã®æå®ã¯ä»»æã§ã -->
<file dir="c:\myapp" name="smartobfuscation.xml"/>
</smartobfuscationreport>
</smartobfuscation>
XML æ§æãã¡ã€ã«ã«é¢ãã泚æ
Dotfuscator ã¯ãæ§æãã¡ã€ã«ããã³å²ãåœãŠãã¡ã€ã«ã« XML 圢åŒã®ããã¥ã¡ã³ãã䜿çšããŸãã
ãããã®ããã¥ã¡ã³ãã¯èªã¿èŸŒãŸãããšãdoctype
ã§æå®ãããææžåå®çŸ©ïŒDTDïŒã«ãã£ãŠæ€èšŒãããŸãã
Dotfuscator ã¯æ€èšŒãå®è¡ããããã«ãé¢é£ãã DTD ã«ã¢ã¯ã»ã¹ã§ããå¿
èŠããããŸãã
Dotfuscator ã¯ãDTD ãæ€çŽ¢ããããã«ä»¥äžã®æé ãå®è¡ããŸãã
- DTD URI ãããŒã«ã« ãã¡ã€ã«ãæå®ããå Žåã¯ãDotfuscator ã¯æ瀺ãããå Žæã§ãã®ãã¡ã€ã«ãæ€çŽ¢ããŸãã èŠã€ãããªãå Žåã¯ããšã©ãŒãçºçããŸãã
- DTD ã® URI ã Web ãªãœãŒã¹ãæå®ããå Žåã¯ãDotfuscator ã¯æåã« URI ã§æå®ãããååãæã€ãã¡ã€ã«ã Dotfuscator ã®ãã£ãã·ã¥å ã«ãããã©ããã調ã¹ãŸãã Dotfuscator ã®ãã£ãã·ã¥ã¯ã%ProgramData%\PreEmptive Solutions\Common directory ãã£ã¬ã¯ããªã«ãããŸãã
- èŠã€ãããªãå ŽåãDotfuscator 㯠DTD ãååŸããããã« URI ã«ã¢ã¯ã»ã¹ããŸãã èŠã€ãã£ãå ŽåãDotfuscator ã¯æ¬¡åã®èŠæ±ããããã¯ãŒã¯ã«ã¢ã¯ã»ã¹ããå¿ èŠããªãããã«ãã€ã³ã¹ããŒã« ãã£ã¬ã¯ããªã« DTD ããã£ãã·ã¥ããŸãã DTD ãèŠã€ãããªãå ŽåããŸã㯠Dotfuscator ããããã¯ãŒã¯ãã DTD ãååŸã§ããªãå Žåã¯ããšã©ãŒãçºçããŸãã
ã«ã¹ã¿ã èŠå
Dotfuscator ã§ã¯ãã¢ããªã±ãŒã·ã§ã³ã«å¯Ÿããé£èªåèŠåãã«ã¹ã¿ãã€ãºããããšãã§ããŸãã
察象éžæèŠåããã³å¯Ÿè±¡é€å€èŠåã¯ãååã®å€æŽãå¶åŸ¡ãããŒã®é£èªåãæååã®æå·åããã³å
¥åã¢ã»ã³ããªã®é€å»ã«ã€ããŠåçã«åŸ®èª¿æŽããæ¹æ³ãæäŸããŸãã
ãããã®èŠåã¯ãlibrary ãªãã·ã§ã³ãªã©ã®ãªãã·ã§ã³ã«ãã£ãŠæé»ã«é©çšãããèŠåãšäœµããŠé©çšãããè«ççã« OR
ã§çµåãããŸãã
察象é€å€èŠå
察象é€å€ãªã¹ã ã»ã¯ã·ã§ã³ã¯ãå ¥åã¢ã»ã³ããªã®ååã®å€æŽããã³å¶åŸ¡ãããŒã®é£èªåãåçã«åŸ®èª¿æŽããæ¹æ³ãæäŸããŸãã ãŠãŒã¶ãŒã¯ãå®è¡æã«é©çšãããèŠåã®ãªã¹ããæå®ããŸãã èŠåã§ç¹å®ã®ã¯ã©ã¹ãã¡ãœããããŸãã¯ãã£ãŒã«ããéžæããå Žåããã®é ç®ã®ååã¯å€æŽãããŸããããŸãããã®é ç®ã¯å¶åŸ¡ãããŒã®é£èªåã®å¯Ÿè±¡ããé€å€ãããŸãã
ãããã®èŠåã¯ãlibrary ãªãã·ã§ã³ãªã©ã®ãªãã·ã§ã³ã«ãã£ãŠæé»ã«é©çšãããèŠåãšäœµããŠé©çšãããŸãã
èŠåã¯è«ççã« OR
ã§çµåãããŸãã
åå空éãåãã¡ãœããããŸãã¯ãã£ãŒã«ãã®éžæã«ã¯ãæ£èŠè¡šçŸïŒREïŒã䜿çšã§ããŸãã
ãããå®è¡ããã«ã¯ãçç¥å¯èœãª regex
å±æ§ã䜿çšããŸãã
regex
ã®æ¢å®å€ã¯ false ã§ãã
regex
ã true ã®å Žåãname
å±æ§ã®å€ã¯æ£èŠè¡šçŸãšããŠè§£éãããŸããregex
ã false ã®å Žåãname ã¯æåã©ããã«è§£éãããŸãã
æ£èŠè¡šçŸã¯ç¹å®ã®æåïŒããªãªããªã©ïŒã«ç¹å¥ãªæå³ãå²ãåœãŠãŠããã®ã§ãregex ã®å€ã¯éèŠã§ãã
以äžã«ãç°¡åãªæ£èŠè¡šçŸã®äŸã瀺ããŸãã
.* ãã¹ãŠãšäžèŽ
MyLibrar. MyLibraryãMyLibrari ãªã©ãšäžèŽ
My[\.]Test[\.]I.* My.Test.Int1ãMy.Test.Internalããªã©ãšäžèŽ
Get.* GetIntãGetValue ãªã©ãšäžèŽ
Get* GeãGetãGettãGettt ãªã©ãšäžèŽ
æ£èŠè¡šçŸã®æ§æã®è©³çŽ°ã«ã€ããŠã¯ã.NET Framework ã®ããã¥ã¡ã³ããåç §ããŠãã ããã
åå空éã®å¯Ÿè±¡é€å€
ãã®ãªãã·ã§ã³ã¯ãæå®ããåå空éå ã®ãã¹ãŠã®åãšãã®ã¡ã³ããŒã察象ããé€å€ããŸãã åå空éã®æå®ã«ã¯æ£èŠè¡šçŸã䜿çšã§ããŸãã
æ£èŠè¡šçŸïŒ
<namespace name="My.Excluded.Namespace"/>
åã®å¯Ÿè±¡é€å€
ãã®ãªãã·ã§ã³ã¯ãååãŸãã¯å±æ§æå®åã«ãã£ãŠåã察象ããé€å€ããŸãã ååã®æå®ã«ã¯æ£èŠè¡šçŸã䜿çšã§ããŸãã ååã¯å®å šä¿®é£Ÿåã§ããå¿ èŠããããŸãã å åŽã®ïŒå ¥ãåã«ãªã£ãŠããïŒã¯ã©ã¹ã¯ãå€åŽãšå åŽã®ã¯ã©ã¹ã®éã« â/â ãåºåãæåãšããŠäœ¿çšããŠæå®ããŸãã ããšãã°ã次ã®ããã«èšè¿°ããŸãã
å åŽã®ïŒå ¥ãåã«ãªã£ãŠããïŒã¯ã©ã¹ïŒ
<type name="Library.Class1/NestedClass"/>
å±æ§æå®åã®éžæãéžæ解é€ã«ã¯ãspeclist
å±æ§ã䜿çšããŸãã
speclist
å±æ§ã¯ãåã®æå¹ãªå±æ§æå®åãã«ã³ãã§åºåã£ãŠæå®ããŸãã
å©çšå¯èœãªå€ã¯ä»¥äžã®ãšããã§ãã
å©çšå¯èœãªå€ïŒ
abstract
interface
nestedassembly
nestedfamily
nestedfamorassem
nestedprivate
nestedpublic
notpublic
public
sealed
serializable
enum
å±æ§æå®åã®åã« â-â ãä»ãããšãèŠåã®æå³ãå転ããŸãïŒã€ãŸããæå®ããå±æ§ãæããªããã¹ãŠã®ã¯ã©ã¹ã察象ããé€å€ããŸãïŒã
â+â ãæå®ããããšãã§ããŸãããå¿
èŠãããŸããã
ãã®ãªã¹ãã«æé»ã«é©çšãããèŠåã¯ãè«ççã« AND-
ã§çµåãããŸãïŒã€ãŸãã察象ããé€å€ããåã®ã»ããã¯ãåèŠåã«äžèŽãããã¹ãŠã®åã®å
±ééšåãšãªããŸãïŒã
ããšãã°ã次ã®èŠåã¯ãpublic åã〠sealed åã®ãã®ã察象ããé€å€ããŸãã
Public åã〠Sealed åã察象ããé€å€ããèŠåïŒ
<type name=".*" speclist="+public,+sealed" regex="true"/>
<type>
èŠçŽ ã䜿çšããŠåãéžæããéžæããåå
ãããã£ãŒã«ããã¡ãœãããããããã£ãããã³ã€ãã³ããé€å€ããèŠåãæå®ããããšãã§ããŸãã
ããã«ãããã¡ã³ããŒãé€å€ããŠããã¡ã³ããŒãææããŠããåã¯é€å€ããªãã§ããããšãã§ããŸãã
ãããå®è¡ããã«ã¯ãçç¥å¯èœãª excludetype
å±æ§ã䜿çšããŸãã
æå®ããªãå Žåãæ¢å®å€ã¯ true
ã§ããããã®ååãååã®å€æŽãŸãã¯å¶åŸ¡ãããŒã®é£èªåã®å¯Ÿè±¡ããé€å€ãããŸãã
ãã£ãŒã«ããã¡ãœãããããããã£ãããã³ã€ãã³ãã®å¯Ÿè±¡é€å€èŠåã®æå®ïŒ
<type name="MyCo.Test.MyOtherTest" excludetype="false">
<!-- ããã§æå®ããã¡ãœãããšãã£ãŒã«ãã¯é€å€ãããŸã -->
...
</type>
åã®èŠåãããããã£ãã€ãã³ãã®èŠåãå«ãã§ããªãå Žåã察象ããé€å€ãããåã®ãã¹ãŠã®ããããã£åããã³ã€ãã³ãåã¯ä¿æãããŸãã åã®èŠåãããããã£ã®èŠåã 1 ã€ä»¥äžå«ãã§ããå Žåã¯ããããã®ããããã£åã®ã¿ãä¿æããããã以å€ã®ããããã£åã¯ãã¹ãŠåé€ãããŸãã åã®èŠåãã€ãã³ãã®èŠåã 1 ã€ä»¥äžå«ãã§ããå Žåã¯ããããã®ã€ãã³ãåã®ã¿ãä¿æããããã以å€ã®ã€ãã³ãåã¯ãã¹ãŠåé€ãããŸãã
泚æïŒåã察象ããé€å€ãããŠããããã©ã€ãã©ãª ãªãã·ã§ã³ãèšå®ãããŠããªãå ŽåãDotfuscator ã¯ããããã£åãšã€ãã³ãåãåé€ããŸãã
ååã®å€æŽã«ã®ã¿é©çšïŒ
applytoderivedtypes
å±æ§ãæå®ããããšã«ãã£ãŠãç¶æ¿éå±€å
šäœã«åã®èŠåãé©çšããããšãã§ããŸãã
ãã®å±æ§ã®å€ã true
ã«èšå®ãããšãåã®èŠåããã³ãããã«å«ãŸãããã¹ãŠã®ã¡ãœããããã£ãŒã«ããããããã£ãã€ãã³ããã«ã¹ã¿ã å±æ§ããŸãã¯ã¹ãŒããŒã¿ã€ãã®èŠåããéžæãããŠããåãšãããã掟çãããã¹ãŠã®åã«é©çšãããŸãã
æå®ããªãå Žåãæ¢å®å€ã¯ false
ã§ãããæå®ããåã«ã®ã¿åã®èŠåãé©çšãããŸãã
ã¡ãœããã®å¯Ÿè±¡é€å€
ã¡ãœããã®é€å€ã¯ããŸã <type>
èŠçŽ ã䜿çšããŠåãéžæãã次ã«å¯Ÿè±¡ããé€å€ããã¡ãœãããéžæããèŠåãæå®ããããšã«ãã£ãŠè¡ãããŸãã
ã¡ãœããã¯ãååãå±æ§æå®åã«ãã£ãŠå¯Ÿè±¡ããé€å€ã§ããã»ãã眲åã«ãã£ãŠãé€å€ã§ããŸãã
å©çšå¯èœãªå±æ§æå®åïŒ
abstract
assembly
family
familyorassembly
final
private
public
static
virtual
å±æ§æå®åãæ瀺çã«èšå®ãããŠããªãå Žåãspeclist
å±æ§ã¯éžææ¡ä»¶ãšããŠäœ¿çšãããŸããã
次ã®äŸã§ã¯ã"Set" ã§å§ãŸããã¹ãŠã®ãããªã㯠ã€ã³ã¹ã¿ã³ã¹ ã¡ãœãããéžæãããŸãã
<method regex="true" name="Set.*" speclist="+public,-static"/>
ã¡ãœããã®çœ²åã¯ãsignature
å±æ§ã䜿çšããŠæå®ããŸãã
眲åã¯ãã¡ãœããã®æ»ãå€ã®åãšãã©ã¡ãŒã¿ãŒã®åãç¹å®ããŸãã
æ»ãå€ã®åãšãã©ã¡ãŒã¿ãŒã®åïŒ
signature="" <!-- 空ã®çœ²å -->
signature="string(int,MyClass,MyClass[])"
眲åãæ瀺çã«èšå®ãããŠããªãå Žåãã¡ãœããã®çœ²åã¯éžææ¡ä»¶ãšããŠäœ¿çšãããŸããã
次ã®äŸã§ã¯ã眲åã«ãã£ãŠã¡ãœãããéžæãããŸãã
眲åã«ããã¡ãœããïŒ
<method name="DoIt" signature="string(int, System.Console, System.Collection.ICollection, float[])"/>
"Module:mod_name
" ãšããååã®ç¹å¥ãªåã»ã¬ã¯ã¿ãŒã䜿çšãããšãã°ããŒãã« ã¡ãœãããæå®ã§ããŸããmod_name
ã«ã¯ãã°ããŒãã« ã¡ãœãããå«ãã§ããã¢ãžã¥ãŒã«ã®ååãæå®ããŸãã
ãã£ãŒã«ãã®å¯Ÿè±¡é€å€
ãã£ãŒã«ãã®é€å€ã¯ååã®å€æŽã§ã®ã¿æå¹ã§ãã
ãã£ãŒã«ãã®é€å€ã¯ããŸã <type>
èŠçŽ ã䜿çšããŠåãéžæãã次ã«å¯Ÿè±¡ããé€å€ãããã£ãŒã«ããéžæããèŠåãæå®ããããšã«ãã£ãŠè¡ãããŸãã
ãã£ãŒã«ãããŸããååããã³å±æ§æå®åã«ãã£ãŠå¯Ÿè±¡ããé€å€ã§ããŸãã
å©çšå¯èœãªå±æ§æå®åïŒ
public
private
static
assembly
family
familyandassembly
familyorassembly
notserialized
å±æ§æå®åãæ瀺çã«èšå®ãããŠããªãå Žåããã£ãŒã«ãã®å±æ§ã¯éžææ¡ä»¶ãšããŠäœ¿çšãããŸããã
次ã®äŸã§ã¯ã"ENUM_
" ã§å§ãŸãéçãã£ãŒã«ãããã¹ãŠéžæãããŸãã
"ENUM_" ã§å§ãŸãéçãã£ãŒã«ãïŒ
<field regex="true" name="ENUM_.*" speclist="+static"/>
ãã£ãŒã«ãã®çœ²åã¯ãsignature
å±æ§ã䜿çšããŠæå®ããŸãã
眲åã¯ãã£ãŒã«ãã®åãæå®ããŸãã
signature="" <!-- 空ã®çœ²å -->
signature="int"
眲åãæ瀺çã«èšå®ãããŠããªãå Žåããã£ãŒã«ãã®åã¯éžææ¡ä»¶ãšããŠäœ¿çšãããŸããã
Module:mod_name
ãšããååã®ç¹å¥ãªåã»ã¬ã¯ã¿ãŒã䜿çšãããšãã°ããŒãã« ãã£ãŒã«ããæå®ã§ããŸããmod_name
ã«ã¯ãã°ããŒãã« ãã£ãŒã«ããå«ãã§ããã¢ãžã¥ãŒã«ã®ååãæå®ããŸãã
ããããã£ã®å¯Ÿè±¡é€å€
ããããã£ã®é€å€ã¯ååã®å€æŽã§ã®ã¿æå¹ã§ãã ããããã£ã®èŠåã¯ãåã®èŠåã«ãã£ãŠéå®ãããã®ã§ãèŠåã®ç·šéãã¥ãŒã§ã¯åããŒãã®åãšããŠè¡šç€ºãããŸãã ããããã£ã®èŠåã¯ãïŒèŠªã®åã®èŠåã®æ¡ä»¶ãæºãããã¹ãŠã®åã®ããããã£ã®ãã¡ã§ïŒæ¡ä»¶ãæºãããã¹ãŠã®ããããã£ãéžæããŸãã ãµããŒããããéžææ¡ä»¶ã¯ãããããã£åããã³ããããã£ã®å±æ§ã§ãã
å©çšå¯èœãªå±æ§æå®åïŒ
public
private
static
assembly
family
familyandassembly
familyorassembly
å±æ§æå®åãæ瀺çã«èšå®ãããŠããªãå Žåãããããã£ã®å±æ§ã¯éžææ¡ä»¶ãšããŠäœ¿çšãããŸããã
次ã®äŸã§ã¯ã"Sample" ã§å§ãŸããã¹ãŠã®ããããã£ãéžæãããŸãã
<propertymember regex="true" name="Sample.*"/>
ããããã£ã®çœ²åã¯ãsignature
å±æ§ã䜿çšããŠæå®ããŸãã
眲åã¯ããããã£ã®åãæå®ããŸãã
signature="" <!-- 空ã®çœ²å -->
signature="int"
眲åãæ瀺çã«èšå®ãããŠããªãå Žåãããããã£ã®åã¯éžææ¡ä»¶ãšããŠäœ¿çšãããŸããã
Module:mod_name
ãšããååã®ç¹å¥ãªåã»ã¬ã¯ã¿ãŒã䜿çšãããšãã°ããŒãã« ããããã£ãæå®ã§ããŸããmod_name
ã«ã¯ãã°ããŒãã« ããããã£ãå«ãã§ããã¢ãžã¥ãŒã«ã®ååãæå®ããŸãã
ã€ãã³ãã®å¯Ÿè±¡é€å€
ã€ãã³ãã®é€å€ã¯ååã®å€æŽã§ã®ã¿æå¹ã§ãã ã€ãã³ãã®èŠåã¯ãåã®èŠåã«ãã£ãŠéå®ãããã®ã§ãèŠåã®ç·šéãã¥ãŒã§ã¯åããŒãã®åãšããŠè¡šç€ºãããŸãã ã€ãã³ãã®èŠåã¯ãïŒèŠªã®åã®èŠåã®æ¡ä»¶ãæºãããã¹ãŠã®åã®ãã£ãŒã«ãã®ãã¡ã§ïŒæ¡ä»¶ãæºãããã¹ãŠã®ã€ãã³ããéžæããŸãã ãµããŒããããéžææ¡ä»¶ã¯ãã€ãã³ãåããã³ã€ãã³ãã®å±æ§ã§ãã
å©çšå¯èœãªå±æ§æå®åïŒ
public
private
static
assembly
family
familyandassembly
familyorassembly
å±æ§æå®åãæ瀺çã«èšå®ãããŠããªãå Žåãã€ãã³ãã®å±æ§ã¯éžææ¡ä»¶ãšããŠäœ¿çšãããŸããã
"On" ã§å§ãŸããã¹ãŠã®ã€ãã³ããéžæãããŸãã
<eventmember regex="true" name="On.*"/>
Module:mod_name
ãšããååã®ç¹å¥ãªåã»ã¬ã¯ã¿ãŒã䜿çšãããšãã°ããŒãã« ã€ãã³ããæå®ã§ããŸããmod_name
ã«ã¯ãã°ããŒãã« ã€ãã³ããå«ãã§ããã¢ãžã¥ãŒã«ã®ååãæå®ããŸãã
ã«ã¹ã¿ã å±æ§ã«ãã察象é€å€
åãã¡ãœããããã£ãŒã«ãã¯ãã«ã¹ã¿ã å±æ§ãåºã«éžæçã«é€å€ã§ããŸãã ã«ã¹ã¿ã å±æ§ã®èŠåã§ã¯ãé ç®ïŒåãã¡ãœããããã£ãŒã«ããããããã£ïŒã®è¿œå æ å ±ã§ããã«ã¹ã¿ã å±æ§ã®ååãåºã«é ç®ãéžæããŸãã åãã¡ãœããããã£ãŒã«ããããããã£ãéžæããèŠåã®äžã«ãã«ã¹ã¿ã å±æ§ã®èŠåã 1 ã€ä»¥äžå ¥ãåã«ããããšãã§ããŸãã
åãã¡ãœããããã£ãŒã«ããããããã£ã®èŠåã«ã¯ãã«ã¹ã¿ã å±æ§ã®èŠåãè€æ°é¢é£ä»ããããšãã§ããŸãã ãã®å Žåãã«ã¹ã¿ã å±æ§ã®èŠåã®ãããã 1 ã€ã«ã§ãé ç®ããããããã°ããã®é ç®ã¯éžæãããŸãã
次ã®äŸã§ã¯ãã«ã¹ã¿ã å±æ§ã® MyCustomAttribute
ãŸã㯠MyOtherCustomAttribute
ãæã€ãã¹ãŠã®åãéžæãããŸãã
MyCustomAttribute ãŸã㯠MyOtherCustomAttribute ãæã€åïŒ
<type name=".*" excludetype="false" regex="true">
<customattribute name="MyCustomAttribute"/>
...
<customattribute name="MyOtherCustomAttribute"/>
</type>
ã«ã¹ã¿ã å±æ§ã®èŠåã§ã¯ãã«ã¹ã¿ã å±æ§ã®ååã®æ¡ä»¶ãæ£èŠè¡šçŸã«ãã£ãŠèšè¿°ããããšãã§ããŸãã
次ã®äŸããã«ã¹ã¿ã å±æ§ã® MyCustomAttribute
ãŸã㯠MyOtherCustomAttribute
ãæã€ãã¹ãŠã®åãéžæãããŸãã
MyCustomAttribute ãŸã㯠MyOtherCustomAttribute ãæã€åïŒ
<type name=".*" excludetype="false" regex="true">
<customattribute name="My.*CustomAttribute" regex="true"/>
</type>
次ã®äŸã¯ãMyCustomAttribute
ãšããååã®ã«ã¹ã¿ã å±æ§ãæã€ãã¹ãŠã®ã¡ãœãããé€å€ããæ¹æ³ã瀺ããŠããŸãã
xml
<type name=".*" excludetype="false" regex="true">
<method name=".*" regex="true">
<customattribute name="MyCustomAttribute"/>
</method>
</type>
ã«ã¹ã¿ã å±æ§ã®èŠåã¯ãallowinheritance
å±æ§ãæå®ããããšã«ãã£ãŠããµãã¿ã€ãããªãŒããŒã©ã€ãããã¡ãœããããã³ããããã£ã«é©çšããããšãã§ããŸãã
ãã®å±æ§ã®å€ã true
ã«èšå®ãããŠãããšãæå®ããã«ã¹ã¿ã å±æ§ãæã€ãµãã¿ã€ãããªãŒããŒã©ã€ãããã¡ãœããããã³ããããã£ã察象ããé€å€ãããããã«ãªããŸãã
#### ã¹ãŒããŒã¿ã€ãã«ãã察象é€å€
åã¯ãã¹ãŒããŒã¿ã€ãã«ãã£ãŠéžæçã«å¯Ÿè±¡ããé€å€ã§ããŸãã
ã¹ãŒããŒã¿ã€ãã®èŠåã§ã¯ãæå®ããåãç¶æ¿ããåã®ååãåºã«åãéžæããŸãã
åãéžæããèŠåã®äžã«ãã¹ãŒããŒã¿ã€ãã®èŠåã 1 ã€ä»¥äžå
¥ãåã«ããããšãã§ããŸãã
åã®èŠåã«ã¯ãã¹ãŒããŒã¿ã€ãã®èŠåãè€æ°é¢é£ä»ããããšãã§ããŸãã
ãã®å Žåãã¹ãŒããŒã¿ã€ãã®èŠåã®ãããã 1 ã€ã«ã§ãé
ç®ããããããã°ããã®é
ç®ã¯éžæãããŸãã
次ã®äŸã§ã¯ãMySupertype
ããç¶æ¿ãããã¹ãŠã®åãéžæãããŸãã
MySupertype ããç¶æ¿ãããã¹ãŠã®åïŒ
xml
<type name=".*" excludetype="false" regex="true">
<supertype name="MySupertype"/>
</type>
ã¹ãŒããŒã¿ã€ãã®èŠåã§ã¯ãã¹ãŒããŒã¿ã€ãã®ååã®æ¡ä»¶ãæ£èŠè¡šçŸã«ãã£ãŠèšè¿°ããããšãã§ããŸãã
次ã®äŸã§ã¯ MySupertype
ãŸã㯠MyOtherSupertype
ã®ããããããç¶æ¿ãããã¹ãŠã®åãéžæããæ¹æ³ã瀺ããŠããŸãã
MySupertype ãŸã㯠MyOtherSupertype ããç¶æ¿ãããã¹ãŠã®åïŒ
xml
<type name=".*" excludetype="false" regex="true">
<supertype name="My.*Supertype" regex="true"/>
</type>
#### ã¢ã»ã³ããªã®å¯Ÿè±¡é€å€
ã¢ã»ã³ããªã¯ãååã«ãã£ãŠå¯Ÿè±¡ããé€å€ã§ããŸãã
ã¢ã»ã³ããªã察象ããé€å€ããããšããã®ã¢ã»ã³ããªã®ã¢ãžã¥ãŒã«å
ã®ãã¹ãŠã®åããã³ã¡ã³ããŒãé€å€ãããŸãã
以äžã®ãããªç¶æ³ã§ã¯ãã¢ã»ã³ããªã察象ããé€å€ããã®ã劥åœã§ãã
- ã¢ã»ã³ã㪠A ã¯é£èªåããå¿
èŠããã
- ã¢ã»ã³ã㪠B ã¯é£èªåããŠã¯ãªããªã
- ã¢ã»ã³ã㪠B ã¯ã¢ã»ã³ã㪠A ã«äŸåããŠãã
ã€ãŸããA 㯠B ã ãã«ãµãŒãã¹ãæäŸããŠããŸãã
B ã®å
éšã«åã蟌ãŸãã A ãžã®åç
§ãé£èªåããå ŽåãB 㯠A ãšåæã«åŠçãããããæå®ããŸãããååã®å€æŽãå¶åŸ¡ãããŒã®é£èªåã®å¯Ÿè±¡ããã¯é€å€ããŸãã
ã¢ã»ã³ããªã®å¯Ÿè±¡é€å€ïŒ
xml
<assembly>
<file dir="c:\src\app1\" name="ExcludedLib.dll"/>
</assembly>
#### ã¢ãžã¥ãŒã«ã®å¯Ÿè±¡é€å€
ã¢ãžã¥ãŒã«ã¯ãååã«ãã£ãŠå¯Ÿè±¡ããé€å€ã§ããŸãã
ã¢ã»ã³ããªå±æ§ã䜿çšãããšãã¢ãžã¥ãŒã«ãç¹å®ã®ã¢ã»ã³ããªã«éå®ã§ããŸãã
ã¢ã»ã³ããªå±æ§ãæå®ããå Žåãã¢ã»ã³ããªåã¯ç©çãã¡ã€ã«åã§ã¯ãªãè«çã¢ã»ã³ããªåã§æå®ããå¿
èŠããããŸãã
ã¢ãžã¥ãŒã«ã察象ããé€å€ããããšããã®ã¢ãžã¥ãŒã«ã§å®çŸ©ãããŠãããã¹ãŠã®åããã³ã¡ã³ããŒã察象ããé€å€ãããŸãã
åœç¶ãæå®ããã¢ãžã¥ãŒã«ãè€æ°ã®ã¢ã»ã³ããªéã§å
±æãããŠããå Žåããã®ã¢ãžã¥ãŒã«ã¯ãã¹ãŠã®ã¢ã»ã³ããªããé€å€ãããŸãã
ã¢ãžã¥ãŒã«ããã¹ãŠã®ã¢ã»ã³ããªããé€å€ããïŒ
xml
<module name="MyLibResource.dll" assemblyname="MyLib"/>
### 察象éžæèŠå
察象éžæãªã¹ã ã»ã¯ã·ã§ã³ã¯ãå
¥åã¢ã»ã³ããªã«å¯Ÿããæååã®æå·åããã³äžèŠã³ãŒãã®é€å»æ©èœãåçã«åŸ®èª¿æŽããæ¹æ³ãæäŸããŸãã
ãŠãŒã¶ãŒã¯ãå®è¡æã«é©çšãããèŠåã®ãªã¹ããæå®ããŸãã
èŠåã§ç¹å®ã®ã¯ã©ã¹ãã¡ãœããããã£ãŒã«ããããããã£ããŸãã¯ã€ãã³ããéžæãããšããã®é
ç®ã¯æååã®æå·åããã³äžèŠã³ãŒãã®é€å»ã®å¯Ÿè±¡ãšããŠéžæãããŸãã
ãããã®èŠåã¯ãlibrary ãªãã·ã§ã³ãªã©ã®ãªãã·ã§ã³ã«ãã£ãŠæé»ã«é©çšãããèŠåãšäœµããŠé©çšãããŸãã
èŠåã¯è«ççã« OR
ã§çµåãããŸãã
åå空éãåãã¡ãœããããã£ãŒã«ããããããã£ããŸãã¯ã€ãã³ãã®éžæã«ã¯ãæ£èŠè¡šçŸïŒREïŒã䜿çšã§ããŸãã
ãããå®è¡ããã«ã¯ãçç¥å¯èœãª regex
å±æ§ã䜿çšããŸãã
regex
ã®æ¢å®å€ã¯ false ã§ãã
regex
ã true ã®å Žåãname
å±æ§ã®å€ã¯æ£èŠè¡šçŸãšããŠè§£éãããŸããregex
ã false ã®å Žåãname ã¯æåã©ããã«è§£éãããŸãã
æ£èŠè¡šçŸã¯ç¹å®ã®æåïŒããªãªããªã©ïŒã«ç¹å¥ãªæå³ãå²ãåœãŠãŠããã®ã§ãregex ã®å€ã¯éèŠã§ãã
以äžã«ãç°¡åãªæ£èŠè¡šçŸã®äŸã瀺ããŸãã
æ£èŠè¡šçŸïŒ
no-highlight
.* ãã¹ãŠãšäžèŽ
MyLibrar. MyLibraryãMyLibrari ãªã©ãšäžèŽ
My[\.]Test[\.]I.* My.Test.Int1ãMy.Test.Internalããªã©ãšäžèŽ
Get.* GetIntãGetValue ãªã©ãšäžèŽ
Get* GeãGetãGettãGettt ãªã©ãšäžèŽ
åå空éã®å¯Ÿè±¡éžæ
ãã®ãªãã·ã§ã³ã¯ãæå®ããåå空éå ã®ãã¹ãŠã®åãšãã®ã¡ãœããã察象ãšããŠéžæããŸãã åå空éã®æå®ã«ã¯æ£èŠè¡šçŸã䜿çšã§ããŸãã
æ£èŠè¡šçŸïŒ
<namespace name="My.Included.Namespace"/>
åã®å¯Ÿè±¡éžæ
ãã®ãªãã·ã§ã³ã¯ãååãŸãã¯å±æ§æå®åã«ãã£ãŠåã察象ãšããŠéžæããŸãã ååã®æå®ã«ã¯æ£èŠè¡šçŸã䜿çšã§ããŸãã
ååã¯å®å šä¿®é£Ÿåã§ããå¿ èŠããããŸãã
å åŽã®ïŒå ¥ãåã«ãªã£ãŠããïŒã¯ã©ã¹ã¯ãå€åŽãšå åŽã®ã¯ã©ã¹ã®éã« â/â ãåºåãæåãšããŠäœ¿çšããŠæå®ããŸãã ããšãã°ã次ã®ããã«èšè¿°ããŸãã
å åŽã®ïŒå ¥ãåã«ãªã£ãŠããïŒã¯ã©ã¹ïŒ
<type name="Library.Class1/NestedClass"/>
å±æ§æå®åã®éžæãéžæ解é€ã«ã¯ãspeclist
å±æ§ã䜿çšããŸãã
speclist
å±æ§ã¯ãåã®æå¹ãªå±æ§æå®åãã«ã³ãã§åºåã£ãŠæå®ããŸãã
å©çšå¯èœãªå€ã¯ä»¥äžã®ãšããã§ãã
å±æ§æå®åïŒ
abstract
interface
nestedassembly
nestedfamily
nestedfamorassem
nestedprivate
nestedpublic
notpublic
public
sealed
serializable
enum
å±æ§æå®åã®åã« â-â ãä»ãããšãèŠåã®æå³ãå転ããŸãïŒã€ãŸããæå®ããå±æ§ãæããªããã¹ãŠã®ã¯ã©ã¹ã察象ãšããŠéžæããŸãïŒã
â+â ãæå®ããããšãã§ããŸãããå¿
èŠãããŸããã
ãã®ãªã¹ãã«æé»ã«é©çšãããèŠåã¯ãè«ççã« AND
ã§çµåãããŸãïŒã€ãŸãã察象ãšããŠéžæããåã®ã»ããã¯ãåèŠåã«äžèŽãããã¹ãŠã®åã®å
±ééšåãšãªããŸãïŒã
ããšãã°ã次ã®èŠå㯠public ã〠sealed ã§ããåã®ã¡ãœããããã¹ãŠå¯Ÿè±¡ãšããŠéžæããŸãã
Public åã〠Sealed åã§ããã¡ãœããã®å¯Ÿè±¡éžæïŒ
<type name=".*" speclist="+public,+sealed" regex="true"/>
<type>
èŠçŽ ã䜿çšããŠåãéžæããéžæããåå
ããåå¥ã®ã¡ãœããã察象ãšããŠéžæããèŠåãæå®ããããšãã§ããŸãã
ããã«ãããããåã®äžéšã®ã¡ãœããã§ã®ã¿æååãæå·åã§ãããã以å€ã®ã¡ãœããã§ã¯æå·åã§ããªãããã«ãªããŸãã
ãªãã<type>
èŠçŽ ã® excludetype
å±æ§ã¯æååã®æå·åã®å¯Ÿè±¡éžæã«ã¯äœ¿çšãããªãããšã«æ³šæããŠãã ããã
ããåã®äžéšã®ã¡ãœããã«ãããæå·åïŒ
<type name="MyCo.Test.MyOtherTest">
<!-- ããã§æå®ããåã
ã®ã¡ãœããã察象ãšããŠéžæãããŸã -->
...
</type>
<type>
èŠçŽ ãå
¥ãåã«ãªã£ã <method>
èŠçŽ ãå«ãã§ããªãå Žåã¯ããã¹ãŠã®ã¡ãœããã察象ãšããŠéžæãããŸãã
ããã¯ã察象é€å€èŠåãšã¯å¯Ÿç
§çã§ãã
é€å€ã«ã®ã¿é©çšïŒ
applytoderivedtypes
å±æ§ãæå®ããããšã«ãã£ãŠãç¶æ¿éå±€å
šäœã«åã®èŠåãé©çšããããšãã§ããŸãã
ãã®å±æ§ã®å€ã true
ã«èšå®ãããšãåã®èŠåããã³ãããã«å«ãŸãããã¹ãŠã®ã¡ãœããããã£ãŒã«ããããããã£ãã€ãã³ããã«ã¹ã¿ã å±æ§ããŸãã¯ã¹ãŒããŒã¿ã€ãã®èŠåããéžæãããŠããåãšãããã掟çãããã¹ãŠã®åã«é©çšãããŸãã
æå®ããªãå Žåãæ¢å®å€ã¯ false
ã§ãããæå®ããåã«ã®ã¿åã®èŠåãé©çšãããŸãã
ã¡ãœããã®å¯Ÿè±¡éžæ
ã¡ãœããã®éžæã¯ããŸã <type>
èŠçŽ ã䜿çšããŠåãéžæãã次ã«å¯Ÿè±¡ãšããã¡ãœãããéžæããèŠåãæå®ããããšã«ãã£ãŠè¡ãããŸãã
ã¡ãœããã¯ãïŒåè¿°ã®åã®ã»ã¯ã·ã§ã³ã§èª¬æããããã«ïŒååãå±æ§æå®åã«ãã£ãŠå¯Ÿè±¡ãšããŠéžæã§ããã»ãã眲åã«ãã£ãŠãéžæã§ããŸãã
å©çšå¯èœãªå±æ§æå®åïŒ
abstract
assembly
family
familyorassembly
final
private
public
static
virtual
å±æ§æå®åãæ瀺çã«èšå®ãããŠããªãå Žåãspeclist
å±æ§ã¯éžææ¡ä»¶ãšããŠäœ¿çšãããŸããã
次ã®äŸã§ã¯ãSet
ã§å§ãŸããã¹ãŠã®ãããªã㯠ã€ã³ã¹ã¿ã³ã¹ ã¡ãœãããéžæãããŸãã
Set ã§å§ãŸããã¹ãŠã®ãããªã㯠ã€ã³ã¹ã¿ã³ã¹ ã¡ãœããïŒ
<method regex="Qtrue" name="Set.*" speclist="+public,-static"/>
ã¡ãœããã®çœ²åã¯ãsignature
å±æ§ã䜿çšããŠæå®ããŸãã
眲åã¯ãã¡ãœããã®æ»ãå€ã®åãšãã©ã¡ãŒã¿ãŒã®åãç¹å®ããŸãã
ã¡ãœããã®æ»ãå€ã®åãšãã©ã¡ãŒã¿ãŒã®åïŒ
signature="" <!-- 空ã®ãã©ã¡ãŒã¿ãŒ ãªã¹ã -->
signature="string(int,MyClass,MyClass[])"
眲åãæ瀺çã«èšå®ãããŠããªãå Žåãã¡ãœããã®çœ²åã¯éžææ¡ä»¶ãšããŠäœ¿çšãããŸããã
次ã®äŸã§ã¯ã眲åã«ãã£ãŠã¡ãœãããéžæãããŸãã
眲åã«ããã¡ãœããã®éžæïŒ
<method name="DoIt" signature="string(int, System.Console, System.Collection.ICollection, float[])"/>
Module:mod_name
ãšããååã®ç¹å¥ãªåã»ã¬ã¯ã¿ãŒã䜿çšãããšãã°ããŒãã« ã¡ãœãããæå®ã§ããŸããmod_name
ã«ã¯ãã°ããŒãã« ã¡ãœãããå«ãã§ããã¢ãžã¥ãŒã«ã®ååãæå®ããŸãã
ãã£ãŒã«ãã®å¯Ÿè±¡éžæ
ãã£ãŒã«ãã®å¯Ÿè±¡éžæã¯ãé€å»ããªã¬ãŒããã³é€å»ã®æ¡ä»¶ä»ãéžæ察象ã§ã®ã¿æå¹ã§ãã
ãã£ãŒã«ãã®éžæã¯ããŸã <type>
èŠçŽ ã䜿çšããŠåãéžæãã次ã«ãã£ãŒã«ããéžæããèŠåãæå®ããããšã«ãã£ãŠè¡ãããŸãã
ãã£ãŒã«ãã¯ãïŒåè¿°ã®åã®ã»ã¯ã·ã§ã³ã§èª¬æããããã«ïŒååããã³å±æ§æå®åã«ãã£ãŠéžæã§ããŸãã
å©çšå¯èœãªå±æ§æå®åïŒ
public
private
static
assembly
family
familyandassembly
familyorassembly
notserialized
å±æ§æå®åãæ瀺çã«èšå®ãããŠããªãå Žåããã£ãŒã«ãã®å±æ§ã¯éžææ¡ä»¶ãšããŠäžå䜿çšãããŸããã
次ã®äŸã§ã¯ã"ENUM_
" ã§å§ãŸãéçãã£ãŒã«ãããã¹ãŠéžæãããŸãã
"ENUM_" ã§å§ãŸãéçãã£ãŒã«ãïŒ
<field regex="true" name="ENUM_.*" speclist="+static"/>
Module:mod_name
ãšããååã®ç¹å¥ãªåã»ã¬ã¯ã¿ãŒã䜿çšãããšãã°ããŒãã« ãã£ãŒã«ããæå®ã§ããŸããmod_name
ã«ã¯ãã°ããŒãã« ãã£ãŒã«ããå«ãã§ããã¢ãžã¥ãŒã«ã®ååãæå®ããŸãã
ããããã£ã®å¯Ÿè±¡éžæ
ããããã£ã®å¯Ÿè±¡éžæã¯ãäžèŠã³ãŒãã®é€å»ã§ã®ã¿æå¹ã§ãã ããããã£ã®èŠåã¯ãåã®èŠåã«ãã£ãŠéå®ãããã®ã§ãèŠåã®ç·šéãã¥ãŒã§ã¯åããŒãã®åãšããŠè¡šç€ºãããŸãã ããããã£ã®èŠåã¯ãïŒèŠªã®åã®èŠåã®æ¡ä»¶ãæºãããã¹ãŠã®åã®ããããã£ã®ãã¡ã§ïŒæ¡ä»¶ãæºãããã¹ãŠã®ããããã£ãéžæããŸãã ãµããŒããããéžææ¡ä»¶ã¯ãããããã£åããã³ããããã£ã®å±æ§ã§ãã
å©çšå¯èœãªå±æ§æå®åïŒ
public
private
static
assembly
family
familyandassembly
familyorassembly
å±æ§æå®åãæ瀺çã«èšå®ãããŠããªãå Žåãããããã£ã®å±æ§ã¯éžææ¡ä»¶ãšããŠäœ¿çšãããŸããã
次ã®äŸã§ã¯ã"Sample
" ã§å§ãŸããã¹ãŠã®ããããã£ãéžæãããŸãã
"Sample" ã§å§ãŸãããããã£ïŒ
<property regex="true" name="Sample.*"/>
ããããã£ã®çœ²åã¯ãsignature
å±æ§ã䜿çšããŠæå®ããŸãã
眲åã¯ããããã£ã®åãæå®ããŸãã
ããããã£ã®åãæå®ãã眲åïŒ
signature="" <!-- 空ã®çœ²å -->
signature="int"
眲åãæ瀺çã«èšå®ãããŠããªãå Žåãããããã£ã®åã¯éžææ¡ä»¶ãšããŠäœ¿çšãããŸããã
Module:mod_name
ãšããååã®ç¹å¥ãªåã»ã¬ã¯ã¿ãŒã䜿çšãããšãã°ããŒãã« ããããã£ãæå®ã§ããŸããmod_name
ã«ã¯ãã°ããŒãã« ããããã£ãå«ãã§ããã¢ãžã¥ãŒã«ã®ååãæå®ããŸãã
ã€ãã³ãã®å¯Ÿè±¡éžæ
ã€ãã³ãã®å¯Ÿè±¡éžæã¯ãäžèŠã³ãŒãã®é€å»ã§ã®ã¿æå¹ã§ãã ã€ãã³ãã®èŠåã¯ãåã®èŠåã«ãã£ãŠéå®ãããã®ã§ãèŠåã®ç·šéãã¥ãŒã§ã¯åããŒãã®åãšããŠè¡šç€ºãããŸãã ã€ãã³ãã®èŠåã¯ãïŒèŠªã®åã®èŠåã®æ¡ä»¶ãæºãããã¹ãŠã®åã®ãã£ãŒã«ãã®ãã¡ã§ïŒæ¡ä»¶ãæºãããã¹ãŠã®ã€ãã³ããéžæããŸãã ãµããŒããããéžææ¡ä»¶ã¯ãã€ãã³ãåããã³ã€ãã³ãã®å±æ§ã§ãã
å©çšå¯èœãªå±æ§æå®åïŒ
public
private
static
assembly
family
familyandassembly
familyorassembly
å±æ§æå®åãæ瀺çã«èšå®ãããŠããªãå Žåãã€ãã³ãã®å±æ§ã¯éžææ¡ä»¶ãšããŠäœ¿çšãããŸããã
次ã®äŸã§ã¯ã"On
" ã§å§ãŸããã¹ãŠã®ã€ãã³ããéžæãããŸãã
"On" ã§å§ãŸãã€ãã³ãïŒ
<event regex="true" name="On.*"/>
Module:mod_name
ãšããååã®ç¹å¥ãªåã»ã¬ã¯ã¿ãŒã䜿çšãããšãã°ããŒãã« ã€ãã³ããæå®ã§ããŸããmod_name
ã«ã¯ãã°ããŒãã« ã€ãã³ããå«ãã§ããã¢ãžã¥ãŒã«ã®ååãæå®ããŸãã
ã«ã¹ã¿ã å±æ§ã«ãã察象éžæ
åããã³ã¡ãœããã¯ãã«ã¹ã¿ã å±æ§ãåºã«éžæçã«å¯Ÿè±¡ãšããŠéžæã§ããŸãã ã«ã¹ã¿ã å±æ§ã®èŠåã§ã¯ãé ç®ïŒåãŸãã¯ã¡ãœããïŒã®è¿œå æ å ±ã§ããã«ã¹ã¿ã å±æ§ã®ååãåºã«é ç®ãéžæããŸãã åãŸãã¯ã¡ãœãããéžæããèŠåã®äžã«ãã«ã¹ã¿ã å±æ§ã®èŠåã 1 ã€ä»¥äžå ¥ãåã«ããããšãã§ããŸãã
åãŸãã¯ã¡ãœããã®èŠåã«ã¯ãã«ã¹ã¿ã å±æ§ã®èŠåãè€æ°é¢é£ä»ããããšãã§ããŸãã ãã®å Žåãã«ã¹ã¿ã å±æ§ã®èŠåã®ãããã 1 ã€ã«ã§ãé ç®ããããããã°ããã®é ç®ã¯éžæãããŸãã
次ã®äŸã§ã¯ãã«ã¹ã¿ã å±æ§ã® MyCustomAttribute
ãŸã㯠MyOtherCustomAttribute
ãæã€ãã¹ãŠã®åãéžæãããŸãã
MyCustomAttribute ãŸã㯠MyOtherCustomAttribute ãæã€åïŒ
<type name=".*" excludetype="false" regex="true">
<customattribute name="MyCustomAttribute"/>
...
<customattribute name="MyOtherCustomAttribute"/>
</type>
ã«ã¹ã¿ã å±æ§ã®èŠåã§ã¯ãã«ã¹ã¿ã å±æ§ã®ååã®æ¡ä»¶ãæ£èŠè¡šçŸã«ãã£ãŠèšè¿°ããããšãã§ããŸãã
次ã®äŸããã«ã¹ã¿ã å±æ§ã® MyCustomAttribute
ãŸã㯠MyOtherCustomAttribute
ãæã€ãã¹ãŠã®åãéžæãããŸãã
MyCustomAttribute ãŸã㯠MyOtherCustomAttribute ãæã€åã®éžæïŒ
<type name=".*" excludetype="false" regex="true">
<customattribute name="My.*CustomAttribute" regex="true"/>
</type>
次ã®äŸã¯ãMyCustomAttribute
ãšããååã®ã«ã¹ã¿ã å±æ§ãæã€ãã¹ãŠã®ã¡ãœããã察象ãšããŠéžæããæ¹æ³ã瀺ããŠããŸãã
MyCustomAttribute ãæã€ã¡ãœããã®å¯Ÿè±¡éžæïŒ
<type name=".*" excludetype="false" regex="true">
<method name=".*" regex="true">
<customattribute name="MyCustomAttribute"/>
</method>
</type>
ã«ã¹ã¿ã å±æ§ã®èŠåã¯ãallowinheritance
å±æ§ãæå®ããããšã«ãã£ãŠããµãã¿ã€ãããªãŒããŒã©ã€ãããã¡ãœããããã³ããããã£ã«é©çšããããšãã§ããŸãã
ãã®å±æ§ã®å€ã true
ã«èšå®ãããŠãããšãæå®ããã«ã¹ã¿ã å±æ§ãæã€ãµãã¿ã€ãããªãŒããŒã©ã€ãããã¡ãœããããã³ããããã£ã察象ããé€å€ãããããã«ãªããŸãã
ã¹ãŒããŒã¿ã€ãã«ãã察象éžæ
åã¯ãã¹ãŒããŒã¿ã€ããåºã«éžæçã«å¯Ÿè±¡ãšããŠéžæã§ããŸãã ã¹ãŒããŒã¿ã€ãã®èŠåã§ã¯ãæå®ããåãç¶æ¿ããåã®ååãåºã«åãéžæããŸãã åãéžæããèŠåã®äžã«ãã¹ãŒããŒã¿ã€ãã®èŠåã 1 ã€ä»¥äžå ¥ãåã«ããããšãã§ããŸãã
åã®èŠåã«ã¯ãã¹ãŒããŒã¿ã€ãã®èŠåãè€æ°é¢é£ä»ããããšãã§ããŸãã ãã®å Žåãã¹ãŒããŒã¿ã€ãã®èŠåã®ãããã 1 ã€ã«ã§ãé ç®ããããããã°ããã®é ç®ã¯éžæãããŸãã
次ã®äŸã§ã¯ãMySupertype
ããç¶æ¿ãããã¹ãŠã®åãéžæãããŸãã
MySuperType ããç¶æ¿ããåã®éžæïŒ
<type name=".*" excludetype="false" regex="true">
<supertype name="MySupertype"/>
</type>
ã¹ãŒããŒã¿ã€ãã®èŠåã§ã¯ãã¹ãŒããŒã¿ã€ãã®ååã®æ¡ä»¶ãæ£èŠè¡šçŸã«ãã£ãŠèšè¿°ããããšãã§ããŸãã
次ã®äŸã§ã¯ MySupertype
ãŸã㯠MyOtherSupertype
ã®ããããããç¶æ¿ãããã¹ãŠã®åãéžæããæ¹æ³ã瀺ããŠããŸãã
MySupertype ãŸã㯠MyOtherSupertype ããç¶æ¿ããåã®éžæïŒ
<type name=".*" excludetype="false" regex="true">
<supertype name="My.*Supertype" regex="true"/>
</type>
ã¢ã»ã³ããªã®å¯Ÿè±¡éžæ
ã¢ã»ã³ããªã¯ãååã«ãã£ãŠå¯Ÿè±¡ãšããŠéžæã§ããŸãã ã¢ã»ã³ããªã察象ãšããŠéžæããããšããã®ã¢ã»ã³ããªã®ã¢ãžã¥ãŒã«å ã®ãã¹ãŠã®åããã³ã¡ãœããã察象ãšããŠéžæãããŸãã
ã¢ã»ã³ããªã®å¯Ÿè±¡éžæïŒ
<assembly>
<file dir="c:\src\app1\" name="IncludedLib.dll"/>
</assembly>
ã¢ãžã¥ãŒã«ã®å¯Ÿè±¡éžæ
ã¢ãžã¥ãŒã«ã¯ãååã«ãã£ãŠå¯Ÿè±¡ãšããŠéžæã§ããŸãã ã¢ã»ã³ããªå±æ§ã䜿çšãããšãã¢ãžã¥ãŒã«ãç¹å®ã®ã¢ã»ã³ããªã«éå®ã§ããŸãã ã¢ã»ã³ããªå±æ§ãæå®ããå Žåãã¢ã»ã³ããªåã¯ç©çãã¡ã€ã«åã§ã¯ãªãè«çã¢ã»ã³ããªåã§æå®ããå¿ èŠããããŸãã ã¢ãžã¥ãŒã«ã察象ãšããŠéžæããããšããã®ã¢ãžã¥ãŒã«ã§å®çŸ©ãããŠãããã¹ãŠã®åããã³ã¡ã³ããŒã察象ãšããŠéžæãããŸãã
åœç¶ãæå®ããã¢ãžã¥ãŒã«ãè€æ°ã®ã¢ã»ã³ããªéã§å ±æãããŠããå Žåããã®ã¢ãžã¥ãŒã«ã¯ãã¹ãŠã®ã¢ã»ã³ããªã«å¯ŸããŠåŠç察象ãšããŠéžæãããŸãã
ã¢ãžã¥ãŒã«ã®å¯Ÿè±¡éžæïŒ
<module name="MyLibResource.dll" assemblyname="MyLib"/>