Помощь · Поиск · Пользователи · Календарь
Полная версия этой страницы: декомпиляция - надежный ли способ или нет
Flash Zone Forum > Macromedia Flash > Начинающим
rustamh
На вашем сайте я прочитал совет одного из ведущих постеров - что чтобы изучить флеш в действии, лучше скачать флеш, который нравится, и потом декомпилировать его в проект fla и изучать как он устроен. (при условии что он не защищен и т.п.)
я сегодня скачал Flash Decompiler Trillix 4.0 и декомпилировал 2 флешки.
но они не пашут sad.gif нажимаю ctrl + Enter - Flash MX 8 думает думает и говорит, что скрипт делается сильно долго и предлагает закрыть его sad.gif
знающие люди, помогите пожалуйста.
вот флешки которые ошибки дают.
chingachgoog
Для начала лучше декомпилировать те флешки, которые ничего не подкачивают в себя (это один swf файл) и не взаимодействуют с сервером. И разумеется те, что не защищиены от декомпиляции.
Проверить это легко - надо вытащить swf-файл куда-нибудь на десктоп и запустить его. Если работает - то пробуем декомпилировать.
rustamh
Спасибо, заработало!
те флешки правда на десктопе работали.
Я посмотрел один скрипт и мое 5-е чувство (или 6-е) подсказало, что он делает запрос на какой-то сервер. Просто удалил его - и за работало отлично. А эти флешки я кстати закачать хотел. выбрал файлы в прошлый раз а кнопку "загрузить" нажать видимо забыл smile.gif
(а нет - просто я флешки не могу загружать- должен их архивировать изначально)

Оказывается декомпиляция - надежный способ изучения флеш. И chingachgoog был прав, когда советовал активно использовать его (вместо того, чтобы задавать вопросы вроде - "а как сделать меню как на таком-то сайте? а как сделать то-то, то-то?")
После декомпиляции реально смотришь полюбившиеся флешки - как устроены изнутри, со всеми скриптами, кадрами, анимациями и т.д. и потихоньку въезжаешь в тему! Ну иногда могут возникать кое-какие проблемки конечно - тогда надо подключать голову и исправлять их. smile.gif
rustamh
А вот одна флешка например на компьютере локально запускается (в черно-белом режиме правда). А вот после декомпиляции там получаются пустые скрипты - фигурные скобки и точки с запятой только.
Кто нибудь знает, с чем это может быть связано, и как это можно исправить? - Просто я хотел перевести эти важные флешки на русский язык. Помогите пожалуйста разобраться.
Проблемные файлы - в прикреплении.
(один - соответствие между солнечным и лунным календарем , а второй - фазы луны) в обоих вместо скриптов пустые скобки.
chingachgoog
Скорее всего это как раз защищенные флешки. Похоже на защиту байт-кодом.
MustLive
Цитата
(а нет - просто я флешки не могу загружать- должен их архивировать изначально)

rustamh

Закачивание swf-файлов на сервер запрещено (в целях безопасности). Так что нужно архивировать их для закачки (все типы файлов желательно архивировать).

Зато можно включать флешки прямо в пост на форуме (используя bb-код [flash]). Сами флешки м.б. расположены на любом веб сайте, например, можешь расположить свои флешки на своём сайте или на хостинге флеш файлов.
rustamh
 спасибо, все понятно.
Вы молодцы ребята, очень помогаете. буду всем рекомендовать ваш форум.
RoFF
Скажите а декомпиляция как то изменяет код? По коду можно понять что он декомпелирован?
HaWK
Цитата
Скажите а декомпиляция как то изменяет код?

В большинстве случаев код конечно отличен от оригинала.

Цитата
По коду можно понять что он декомпелирован?

Скорей всего возможно.
RoFF
Это как то влияет на работу кода?
HaWK
Цитата
Это как то влияет на работу кода?

Я не часто декомпилирую чужие программы, так что сказать точно не могу smile.gif
В большинстве случаев всплывают ошибки если попробовать скомпилировать декомпилированный код. Зависит от сложности кода и вообще структуры программы в целом, к тому же есть всякие программы, которые запутывают исходный код, чтобы в дальнейшем, после декомпиляции было тяжело понять что-либо в этом коде.
RoFF
 если я скину кусочек кода вы можете сказать по нему компилированный он или нет?
HaWK
Не думаю, но кидайте, попробую.
RoFF
package classes.com.main
{
import caurina.transitions.*;
import flash.display.*;
import flash.events.*;
import flash.text.*;

public class htmlText extends flash.display.Sprite
{
public function htmlText(arg1:Number, arg2:Number, arg3:String, arg4:flash.text.StyleSheet, arg5:uint, arg6:Number, arg7:uint, arg8:Number, arg9:Number, arg10:Number, arg11:String)
{
var loc1:*=null;
var loc2:*=NaN;
scrollYmin = 0;
super();
addEventListener(flash.events.Event.ADDED_TO_STAGE, addedToStage);
arg3 = arg3.split("<b>").join("<span class=\'euroBold\'>");
arg3 = arg3.split("</b>").join("</span>");
arg3 = arg3.split("<i>").join("<span class=\'euroItalic\'>");
arg3 = arg3.split("</i>").join("</span>");
(loc1 = new flash.text.TextField()).embedFonts = true;
loc1.styleSheet = arg4;
loc1.autoSize = flash.text.TextFieldAutoSize.LEFT;
loc1.antiAliasType = flash.text.AntiAliasType.ADVANCED;
loc1.selectable = false;
loc1.multiline = true;
loc1.wordWrap = true;
loc1.width = arg1;
loc1.htmlText = "<span class=\'Euro\'>" + arg3 + "</span>";
scrollBG = new flash.display.Sprite();
scrollBG.graphics.beginFill(arg7);
scrollBG.graphics.drawRoundRect(0, 0, arg6, arg2, arg8);
scrollBG.graphics.endFill();
scrollBG.x = arg1 + 5;
if ((loc2 = arg2 / (loc1.height / arg2)) < 20)
{
loc2 = 20;
}
HaWK
Я бы сказал, что это декомпилированный код и к тому же не весь.
RoFF
 об этом говорит вот это? loc1

я кусочек кода кинул...
HaWK
Например аргументы функции: arg1, arg2, ..., argN. Не думаю, что программист стал бы так вот называть их.

Цитата
об этом говорит вот это? loc1

И это тоже. Такие имена скорей всего были сгенерированы декомпилятором. loc1, loc2, ...

Цитата
var loc1:*=null;
var loc2:*=NaN;

Это тоже выглядит подозрительно. Глядя на код видно, что loc1 является экземпляром TextField, а тип при объявлении не указан.

Цитата
(loc1 = new flash.text.TextField()).embedFonts = true;

Использование полного имени класса при создании нового экземпляра в данном случае не оправдано.

Цитата
import flash.display.*;
import flash.events.*;
import flash.text.*;

Все классы данных пакетов были импортированы. Так тоже делают редко, если только большинство классов из пакета не используется в коде.

К остальному я не присматривался.
RoFF
 ясно. Короче шаблон декомпилированный править безсмысленно?
HaWK
Сначала можно попробовать скомпилировать. Если всё заработает, стоит попытаться покопаться в коде для изменения его под себя.
RoFF
 в смысле скомпелировать? Я просто туп в этом...
HaWK
В смысле заставить код работать smile.gif
RoFF
 ну он работает, но вот у меня возникла такая проблема. Наполняю xml текстом и грубо говоря 1000 символов отображаются и скролируются на странице отлично, но если добавляю еще текста то верх и низ обрезаются
HaWK
Это уже не по теме вопрос.
RoFF
 не в тему конечно, но такой артефакт из-за перекоряченного кода я так думаю. И чтобы его сделать нормальным нужно вот эти непонятки: var loc1:*=null; var loc2:*=NaN; переписать на осмысленный код?
MustLive
Цитата
И чтобы его сделать нормальным нужно вот эти непонятки: var loc1:*=null; var loc2:*=NaN; переписать на осмысленный код?

RoFF

Именно так. Перепиши код на осмысленный. Как убери непонятки, создающие артефакты, так и перепиши те, которые не мешают нормальной работы флешки.
MustLive
Цитата
не в тему конечно, но такой артефакт из-за перекоряченного кода я так думаю.

RoFF, эта проблема могла появится или из-за декомпиляции, или же она могла быть и в оригинальной флешке, т.е. изначально сделана её автором. О первом случае я уже писал выше, а во втором случае нужно переделывать флешку.

Проблему с обрезанием текста мы уже обсудили в другой теме. В частности я рекомендовал убрать маску.
MustLive
Цитата
Для начала лучше декомпилировать те флешки, которые ничего не подкачивают в себя

Без сомнения декомпиляция может использоваться для изучения. И рекомендация использовать простые флешки (ничего не подгружающие) весьма полезна, чтобы декомпилированная флешка по возможности сразу же заработала - т.е. чтобы двигаться от простого к сложному.

Так что, rustamh, изучай флеш. Декомпиляцей, чтением книг или мануалов - разными методами, которые тебе подходят.
swfnerd
Декомпиляция с последующей перекомпиляцией не всегда нужны, иногда можно обойтись и более простыми и быстрыми (а главное - намного более дешевыми за счет экономии времени и низкой вероятности что-то сломать) приёмами, в зависимости от сложности изменений, которые нужно сделать в swf.
MustLive
swfnerd

Здесь как раз тот случай, когда rustamh нужна именно декомпиляция. Чтобы увидеть исходник (на AS) и понять как устроена понравившаяся флешка. Если нет её исходника или лень его искать, а сразу взять декомпилировать и посмотреть, как делается нужный эффект. А не ходить по форумам и напрягать людей вопросами как сделать такой-то эффект во флеше (хотя в большинстве случаев там всё просто, но начинающим флешерам это кажется сверхсложным). Вот ему и посоветовали использовать декомпиляцию.

А для взлома флешки - этот подход не всегда нужен. Я, например, в 99% случаев взламываю флешки без декомпиляции и последующей компиляции. Так что у профессионалов есть более прогрессивные методы для взлома флешек wink.gif.
swfnerd
Вы невнимательно мой пост прочитали - я как раз о том, что перекомпилировать вовсе не обязательно, можно править байткод только нужных участков флешки. Многие не в курсе, что так можно делать и порятят графику, звуки и прочее при полной перекомпиляции.

Я прибегаю к полному восстановлению исходника обычно в случае, если надо заменить массу графики или значительно изменить стуктуру флешки (в общем, когда проще работать с восстановленным исходником, чем править сам swf). В остальных случаях обхожусь правкой байткода и тэгов (я ведь, все-таки профессионал в этом деле wink.gif ).
MustLive
swfnerd, в том то и дело, что я прочитал твой пост внимательно. Сам в подавляющем большинстве случаев не пользуюсь декомпиляцией и модифицирую флешки на уровне байткода или ассемблера. Текущая тема, которую поднял rustamh, была о другом. Речь шла об изучении ActionScript через декомпиляцию флешек. И в этом плане я поддерживаю идею изучения AS через просмотр исходников и в случае их отсутствия, можно добыть исходники через декомпиляцию swf.
mumum
 декомпилировал swf. хочу использовать только код. сколько пока не знаю. жанр и логика игры -'изношеные'. можно так поступить без последующих разбирательств, если в планах продажа игры как своей?
chingachgoog
Воровать нехорошо. Вот собственно и ответ.
Дальше идет вопрос, насколько я понял - а что мне за это будет?

Вангую - ничего не будет - 50%
Автора забанят на площадке продаж - 5%
Владелец кода подаст в суд - 0.1%
mumum
Цитата(chingachgoog @ 24.03.2015 - 17:43) *
Воровать нехорошо. Вот собственно и ответ.
Дальше идет вопрос, насколько я понял - а что мне за это будет?

Вангую - ничего не будет - 50%
Автора забанят на площадке продаж - 5%
Владелец кода подаст в суд - 0.1%


куплю билет поеду на море -50%, создам новый аккаунт на площадке -5, сяду в турму(и не поеду на море) - 0.1% а что же ещё на 44,9%...
дальше идёт вопрос нужно ли модифицировать код
(upd/как и насколько, впрочем уже риторический, но если хотите - спасибо.. маяковским не отвечать).
mumum
 сяду в турмю



потому что нельзя!


но если очень хочется то можна smile.gif
mumum
Быть шофером хорошо,
а летчиком -
 лучше,
я б издателю продал, пусь его забанят! tongue.gif
DJKOT
Цитата(mumum @ 24.03.2015 - 20:55) *
Быть шофером хорошо,
а летчиком -
 лучше,
я б издателю продал, пусь его забанят! tongue.gif

флудите?
Русская версия IP.Board © 2001-2017 IPS, Inc.