Странный метод в ActionScript теге DoABC - PullRequest
3 голосов
/ 22 февраля 2011

при тестировании собственной реализации парсера тегов DoABC (байт-код Actionscript) я наткнулся на файл swf, в котором было что-то странное.Существует метод с байт-кодом, который практически не имеет смысла (даже коды операций, которые не определены!).

Я нашел еще несколько SWF-файлов, которые имеют такой метод.Как ни странно, этот метод, кажется, всегда имеет одинаковую длину и всегда определен последним, но байт-код варьируется от файла к файлу.Однако, похоже, что этот метод никак не влияет на файл swf, так как он работает нормально.Я подумал, что, возможно, этот метод не вызывается, но я не могу проверить это в данный момент.

У кого-нибудь есть идея, какова цель этого метода?Для справки один такой файл находится здесь: http://swf.tubechop.com/tubechop.swf

Ответы [ 2 ]

3 голосов
/ 23 февраля 2011

У этого swf есть очень странные вещи, я уверен, что он был запутан. Например, это появляется в начале каждого метода:

#1    pushbyte  byteValue: 37
#2    pushbyte  byteValue: 34
#3    ifne  reference: #6

, который декомпилируется в

if(37 != 34)

Что касается метода, который вы нашли, похоже, он просто полон бреда. На него нет ссылок, поэтому верификатор никогда не будет даже смотреть на код. Определенно хорошая техника, чтобы остановить декомпиляцию.

Я проверил это с помощью моего собственного приложения: http://swfwire.com/inspector

1 голос
/ 22 февраля 2011

Trillix показывает сообщение «Недостаточно памяти» на этом SWF-файле и не отображает декомпилированный ActionScript.Я полагаю, что этот метод является мерой защиты (возможно, не единственной) от декомпиляторов.

...