¤¿¤Þ¤Ë¤Ã¤¡£ / 2003-08-08
| Æü | ·î | ²Ð | ¿å | ÌÚ | ¶â | ÅÚ |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
2003-08-08 Fri
¢£ Çã¤Ã¤¿¡£
- Íý²Ê·Ï¤Î¤¿¤á¤ÎÆþÌç±Ñ¸ì¥×¥ì¥¼¥ó¥Æ¡¼¥·¥ç¥ó
- Íý²Ê·Ï¤Î¤¿¤á¤Î¤Ï¤¸¤á¤Æ¤Î±Ñ¸ìÏÀʸ¤Î½ñ¤Êý

ɬ»à¤À¤Ê(ÏÎ ¤È¸À¤ï¤ì¤Æ¤â¤½¤ÎÄ̤ê¤Ê¤Î¤Ç¡¢²¿¤â¸À¤¤ÊÖ¤»¤Ê¤¤¡£
¤¢¤¡¡¢É¬»à¤À¤è¡£
¢£ Sandmark ¤Ç¤ÎÆñÆÉ²½¼êË¡
- AddBogusFields Obfuscation Algorithm
¥À¥ß¡¼¤ÎÂåÆþ¤ò¹Ô¤¦Ì¿Îá¤ò¥¯¥é¥¹Á´ÂΤˤ錄¤Ã¤ÆÁÞÆþ¤¹¤ë
- Bogus Predicates Obfuscating Algorithm
if ¤Ê¤É¤Î¾ò·ï¤Î¤È¤³¤í¤Ë°ÕÌ£¤Î¤Ê¤¤·×»»¼°¤òÁÞÆþ¤¹¤ë¡¥
- Boolean Variable Splitting
boolean Ãͤòʬ³ä¤¹¤ë¡¥Î㤨¤Ð¡¤true ¤Î boolean Ãͤò true, false ¤Ë
ʬ³ä¤·¡¤¸µ¤ÎÃͤ¬É¬ÍפʤȤ¤Ï XOR ¤Ç°ì¤Ä¤Ë¤Þ¤È¤á¤ë¡¥
- Class-Splitting and False Refactoring Obfuscation Algorithms
Class-Splitting:
¥¯¥é¥¹ C ¤ò¤¤¤¯¤Ä¤«¤Ëʬ³ä¤¹¤ëÊýË¡¡¥Ê¬³ä¤Î»ÅÊý¤Ï³Æ¥á¥½¥Ã¥É¡¤
¥Õ¥£¡¼¥ë¥É´Ö¤Î°Í¸´Ø·¸¤Ç·è¤Þ¤ë¡¥
level 0: float f
level 1: method p
level 2: method q
¤Î¾ì¹ç¤Ê¤é¤Ð¡¤3 ¤Ä¤Î¥¯¥é¥¹¤Ëʬ³ä¤µ¤ì¡¤C2 ¤Ï C1 ¤ò·Ñ¾µ¤·¡¤
C1 ¤Ï C0 ¤ò·Ñ¾µ¤µ¤»¤ë¡¥¤½¤·¤Æ¡¤C0 ¤Ë f ¤òÄêµÁ¤·¡¤
C1 ¤Ë¤Ï method p ¤òÄêµÁ¤¹¤ë¡¥(method p ¤ÎÃæ¤Ç¤Ï f ¤¬»²¾È¤µ¤ì¤ë)
¤½¤·¤Æ¡¤C2 ¤Ë¤Ï method q ¤òÄêµÁ¤¹¤ë¡¥(method q ¤ÎÃæ¤Ç method p ¤¬»²¾È¤µ¤ì¤ë)
False Re-factoring:
Ʊ¤¸·¿¤Î¥Õ¥£¡¼¥ë¥É¤ËÃͤòÂåÆþ¤¹¤ëÁ´¤¯Ê̤Π2 ¤Ä¤Î¥¯¥é¥¹(C1, C2)¤ò¸«¤Ä¤±¤ë¡¥
¿·¤·¤¤¥¯¥é¥¹ C0 ¤òºîÀ®¤·¡¤2 ¤Ä¤Î¥¯¥é¥¹¤Ï C0 ¤ò·Ñ¾µ¤¹¤ë¡¥
C1, C2 ¤«¤é¥Õ¥£¡¼¥ë¥É¤òºï½ü¤·¡¤C0 ¤Ë¤½¤Î¥Õ¥£¡¼¥ë¥É¤òÃÖ¤¯¡¥
C0 ¤Ë C1, C2 ¤Î¥á¥½¥Ã¥É¤ò²Ã¤¨¡¤buggy ¤Ê¥³¡¼¥É¤òÆþ¤ì¤Æ¤ª¤¯¡¥
- The Degrading Obfuscation Algorithm
Â礤¯ 2 ¤Ä¤Î¹©Äø¤Ëʬ¤«¤ì¤ë¡¥
int, float ¤Ê¤É¤Î¥×¥ê¥ß¥Æ¥£¥Ö·¿¤ÎÊÑ¿ô¤ò Integer, Float
¤Ê¤É¤Î¥¯¥é¥¹¤ò»È¤¦¤è¤¦¤ËÊѹ¹¤¹¤ë¡¥
Integer ¤Ë»÷¤¿¥¯¥é¥¹¤òÍѰդ·¡¤Thread ¤òºî¤ë¡¥¸µ¤Î¥¯¥é¥¹Æâ¤Ë¤â
Thread ¤òºî¤ê¡¤¤³¤Î 2 ¤Ä¤Î Thread ¤ò¸ß¤¤¤Ë¥í¥Ã¥¯¤·¹ç¤¦¤è¤¦¤Ë¤¹¤ë¡¥
¤³¤ÎÆñÆÉ²½¤ÎÌÜŪ¤Ï¡¤¤É¤Á¤é¤«¤È¸À¤¦¤È¡¤¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î
ưºî¤òÃÙ¤¯¤µ¤»¤ë¤³¤È¤Ë¤¢¤ë¡¥
¥Õ¥ê¡¼ÈǤò¤³¤ÎÊýË¡¤ÇÆñÆÉ²½¤·¤Æ¤ª¤¤¤Æ(ưºî¤¬ÃÙ¤¯¤Ê¤Ã¤Æ¤¤¤ë)¡¤
À½ÉÊÈǤò¤³¤ÎÊýË¡¤ò»È¤ï¤Ê¤¤¤â¤Î¤Ë¤¹¤ë¤È¤¤¤¦ÌÜŪ¤À¡¥
- The Method 2R Madness Obfuscation Algorithm
1. Á´¤Æ¤Î¥á¥½¥Ã¥É¤È¥Õ¥£¡¼¥ë¥É¤ò public ¤Ë¤¹¤ë¡¥
2. Á´¤Æ¤ÎưŪ¤Ê¥á¥½¥Ã¥É¤ÎÃæ¿È¤ò static ¤Ê¥Ø¥ë¥Ñ¡¼¥á¥½¥Ã¥É¤Ë°Ü¤·¡¤
¸µ¤Î¥á¥½¥Ã¥É¤Ï¤½¤Î¥Ø¥ë¥Ñ¡¼¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤À¤±¤Ë¤¹¤ë¡¥
3. ¥¹¥¿¥Æ¥£¥Ã¥¯¥á¥½¥Ã¥É¤Î¥·¥°¥Í¥Á¥ã(°ú¿ô¤äÊÖ¤êÃÍ)¤Ë¤¢¤ë¥×¥ê¥ß¥Æ¥£¥Ö·¿¤ÎÊÑ¿ô¤ò
Á´¤ÆÂбþ¤¹¤ë¥é¥Ã¥Ñ¡¼¥¯¥é¥¹¤ËÊѹ¹¤¹¤ë¡¥
4. ¥á¥½¥Ã¥É¤Î¥Ñ¥é¥á¡¼¥¿¥ê¥¹¥È¤òºÆÀ°Íý¤¹¤ë¡¥
5. ¥á¥½¥Ã¥É¤Î¥Ñ¥é¥á¡¼¥¿¥ê¥¹¥È¤ò°ì¤Ä¤Î¥ª¥Ö¥¸¥§¥¯¥È·¿¤ÎÇÛÎó¤Ë¤¹¤ë¡¥
6. Ʊ¤¸¥¯¥é¥¹¤Ë¤¢¤ëƱ¤¸¥·¥°¥Í¥Á¥ã¤ò»ý¤Ä static ¥á¥½¥Ã¥É¤Ï¤Þ¤È¤á¤Æ°ì¤Ä¤Î¥á¥½¥Ã¥É¤Ë¤¹¤ë¡¥
- The PromoteLocals Obfuscating Algorithm
int ·¿¤ÎÁ´¤Æ¤Î¥í¡¼¥«¥ëÊÑ¿ô¤ò java.lang.Integer ¤ËÊѹ¹¤¹¤ë¡¥
int v = 1 + 1;
¤Ê¤É¤Î·×»»¤¬
Integer v = new Integer(new Integer(1).intValue() + new Integer(1).intValue());
¤È¤Ê¤ë¡¥
Boolean value splitting ¤ä Class splitting ¤ÏÌÌÇò¤¤¡¥
¢£ ¾ÃÈñ¼Ô¤ËÍý²ò¤µ¤ì¤Æ¤¤¤Ê¤¤¡ÖIC¥¿¥°¡×
°Ê²¼¤Îµ»ö¤òÆÉ¤ó¤Ç¤«¤é¾å¤Îµ»ö¤òÆÉ¤à¤È¡¤¤Ê¤ó¤À¤«¤Ê¤¡¤È¤¤¤¦µ¤¤â¤·¤Æ¤¯¤ë¡¥
<http://it.nikkei.co.jp/it/njh_archive/njh_archive.cfm?i=20030421S264L000_21&f=ic_tag>
/.jp ¤Ë¤â¤¢¤Ã¤¿¡¥
<http://slashdot.jp/article.pl?sid=03/08/07/1332202&topic=57&mode=nested>
¢£ ·Ç¼¨ÈǤˤÆ
<http://www.oikaze.com/~tamada/cgi-bin/wwwboard.cgi>
¤è¤¦¤è¤¦ ¤µ¤ó¤«¤é¤ÎÅê¹Æ¡£
ÆàÎɸ©Ä£¤Ï¼¯¤Î·Á¡ª 2003/08/07(Thu) 18:40:07
ÆàÎɸ©Ä£¤ÎÄ£¼Ë¤Ï¡¢¼¯¤Î·Á¤ò¤·¤Æ¤¤¤ë¤È¸À¤Ã¤Æ¤âï¤â¿®¤¸¤Æ¤¯¤ì¤Þ¤»¤ó
»ä¤â¿®¤¸¤é¤ì¤Þ¤»¤ó¡£
¤¬¼¯¤Ê¤ó¤Æ¡¦¡¦¡¦¡£
Ʊ¤¸¤è¤¦¤ËµþÅÔ¥¿¥ï¡¼¤Î¥â¥Á¡¼¥Õ¤òʹ¤¤¤¿»þ¤Ï¡¢¤Ê¤ó¤È¤¤¤¦¤«¡¢
¹Í¤¨¤¿¿Í¤Î¥»¥ó¥¹¤òµ¿¤Ã¤¿¡£
¡£
µþÅÔ¥¿¥ï¡¼¤ÏµþÅԤ餷¤¤¤È¤¤¤¦Íýͳ¤Ç¥â¥Á¡¼¥Õ¤Ë
¥í¥¦¥½¥¯¤¬Áª¤Ð¤ì¤¿¡£
²¿¤Ø¤¨¤Ç¤·¤ç¤¦¤«¡£
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
ºÇ½ª¹¹¿·»þ´Ö: 2008-09-04 19:19






