2011年4月8日 星期五

使用擾亂器 (ActionScript obfuscator) 要注意的事情

使用擾亂器 (ActionScript obfuscator) 要注意的事情:

因為:
* package、class 名稱會被改變
* 屬性、變數、函式 名稱會被改變

所以:
* 小心使用映射 Reflection
* 小心使用字串找物件的作法
* 小心 E4X 的語法
* 盡量使用強型別,避免擾亂不一致的情況

譬如:
* 小心使用 flash.utils.getDefinitionByName()
* 小心使用 flash.utils.getQualifiedClassName()
* 小心使用 mc.getChildByName()
* xml.Root.Messages.@Alert 改用 xml["Root"]["Messages"]["@Alert"]

其他有些狀況也要注意:

1.
FLA 中設計的 instance name,同時代表著 object reference name 與 object's name property,
若從 class 的角度來看,
var mc1:MovieClip = new MovieClip(); //object reference name
mc1.name = "mc1"; //object's name property
被擾亂後,這兩者都會變成亂數值,除非有另外寫程式指定 mc1.name = "字串",因字串不會被擾亂

2.
A.swf 載入 B.swf 時,若兩個 SWF 是一起進行擾亂,
某些軟體可以對兩個 SWF 作相同的擾亂設定,使用相同的亂數值,
若是分開擾亂,或僅有其中之一作擾亂,那麼就要小心彼此的互動方式,
以及 Singleton 會因類別名稱不同而無法取到同一個物件



先想到這裡~


=======================================================

[2011-07-28]

同事 Luc 分享在 Flex 的注意事項:

1. 排除 mx.*, spark.*, mdm.*
2. 注意與 mx,spark component '連接'的函數 ps. datagrid的sort compare function.
3. 小心使用匿名函數(Anonymous Function), 有時會造成找不到函數內的引用變數參考
例如 popUpMenuButton.callLater(function():void {
sendNotification(NotificationType.RESIZE_ALL_WINDOW, type);
});
4. 注意所有Flex裡面的"MAGIC"細節,例如[Bindable]標籤

沒有留言: