Created
November 28, 2010 12:48
-
-
Save develar/718898 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*flash Трава. Вот это трава. Явно в офисах Adobe сотрудникам не предоставляют легкий доступ к напиткам и они с жажды такое чудят. http://youtrack.jetbrains.net/issue/IDEA-56342 А вся штука в том, что знаете как в байткоде представлен name для implements IDataOutput? Как multiname {"private", "", "flash.net", "flash.net", "flash.utils"} (два раза flash.net это не моя опечатка). Вопрос, как же нам сформировать FQN? А никак. | |
swfdump, инструмент, входящий во Flex SDK, тупо перечесляет через запятую "private,,flash.net,flash.net,flash.utils:IDataOutput" | |
Инструменты декомпиляции, типа Sothink/Trillix FQN не строят — выкидывают к чертям дубликаты, пустые строчки и private и добавляют import statement как import flash.events.*; import flash.utils.*; (импорта flash.net нет, так как в данном примере класс Socket в пакете flash.net). | |
Самое смешное, как решает эту проблему компилятор — во Flex SDK есть три класса MultiName (при этом с самого рождения флекса у Adobe есть желание, видное по комментариям "TODO Try to remove this class and use ASC's equivalent", всю эту порнографию объединить) и как раз в одном из них есть метод getQName( int which ). Просто пробегаемся по всем элементам массива и symbolTable.findSourceByQName(namespace[i], localPart) != null | |
Как решать проблему, если у нас нет глобального symbolTable, мы в момент анализа байткода swf имеем таблицу лишь с символами определенными только и только в текущей swf? Только путем проверки в локальной таблице, а если не нашли — ну что ж, взять первый неравный private и надеяться, что оно подойдет. Знает ли кто более лучшее решение? |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment