Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=7)
-   -   посмотреть код или защитить от других? (http://www.flasher.ru/forum/showthread.php?t=53015)

Artem Brigert 22.12.2003 23:51

посмотреть код или защитить от других?
 
http://www.zdnet.com.au/builder/webd...0281905,00.htm

к сожалению на английском

iLoveYou 23.12.2003 00:14

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

Artem Brigert 23.12.2003 00:31

Ну это конечно правильно, но не каждый в состоянии написать 1500 строк запутанного кода :)

sergwizard 23.12.2003 02:32

Вложений: 1
Интересно, отсюда сможете вытащить код? Если нет, значит я нашел способ защиты, по крайней мере, кода. И без всяких посторонних примочек.

stormgulf 23.12.2003 15:15

Цитата:

Оригинал написал(а) sergwizard
Интересно, отсюда сможете вытащить код? Если нет, значит я нашел способ защиты, по крайней мере, кода. И без всяких посторонних примочек.
Привет!
Ради интереса скачал Flare:
http://www.nowrap.de/flare.html
Весь код постить не буду, но вытащило его без напряжения...
===========
frame 15 {
function sled() {
x = [];
y = [];
this.createEmptyMovieClip('o', ++depth, {'_x': 50, '_y': 150});
o.onEnterFrame = function () {
++i;
o._x += 5 - random(5);
o._y = 150 - (10 - random(20));
x.push(o._x);
y.push(o._y);
if (o._x >= 400) {
o.onEnterFrame = null;
i = 0;
drawLine();
}
};
}
============

Лично я тоже считаю, что обфускация, это единственный путь спрятать код. Вот Burak (Sothink), утверждает, что реальные юзеры могут присылать ему не декомпилируемые его софтом файлы, и он будет в короткое время патчить свой декомпилятор.
К тому же, учитывая ограниченные возможности флеша, супер-пупер профессионалы ;) видят код (идею) и без декомпилятора, либо порождают свою (лучше или хуже), тем более, что реально уникальных решений не так и много можно наскрести по и-нету (все уже есть в исходниках и примерах), а графические навороты, это уже удел дизайнеров, а не кодеров.

Удачи!

Artem Brigert 23.12.2003 15:55

Бураковский декомпайлер всё выдирает. Твой код тоже показал... я незнаю правда правильно или ты что-то спрятал?

Nox Noctis 23.12.2003 15:57

в любом случае, воспользоваться чужим кодом можно..
но его вполне релально сделать настолько неудобоваримым после декомпиляции, что толку от него никакого не будет. раве что скопипастить его в свой проект как есть..

Artem Brigert 23.12.2003 15:59

Цитата:

Оригинал написал(а) Nox Noctis
в любом случае, воспользоваться чужим кодом можно..

только вот радости от этого не будет :)

Nox Noctis 23.12.2003 16:17

Цитата:

Оригинал написал(а) Artem Melnikov
Бураковский декомпайлер всё выдирает. Твой код тоже показал... я незнаю правда правильно или ты что-то спрятал?
дадада... вскрывает-то он по-любому :))
...но генерит ТАКУЮ ЛАЖУ %))

зацените:
Цитата:

this.createEmptyMovieClip("flake"+this.flakes.length, this.flakes.length);

this.createEmptyMovieClip("flake"+this.flakes.length, this.flakes.length).attachMovie("flake", "core", 1);

this.createEmptyMovieClip("flake"+this.flakes.length, this.flakes.length)._y = this.br.y+this.createEmptyMovieClip("flake"+this.flakes.length, this.flakes.length)._height;

this.createEmptyMovieClip("flake"+this.flakes.length, this.flakes.length).core._alpha = this.createEmptyMovieClip("flake"+this.flakes.length, this.flakes.length).core._xscale;

(this.createEmptyMovieClip("flake"+this.flakes.length, this.flakes.length));

function () {
.......
}
а работать это не будет :)
то есть будет канеш, только вот весьма неожиданно... :)))

там было написано всего лишь:
Код:

var neo = this.createEmptyMovieClip("flake"+index, index);
neo.attachMovie("flake", "core", 1);
neo._y = this.br.y+neo._height;
neo.core._alpha = neo.core._xscale;
neo.onEnterFrame = function() {
        .......
}

и это, заметьте, самые обычные конструкции, ничего сверхъестественного...

а еще мне понравился такой фрагмент кода, выданный декомпилером:
Цитата:

function (target, weather)
{
();
();
();
this;
target;
(target);
();
"";
...а flare декомпилит все точно, зараза... :)

Nox Noctis 23.12.2003 16:32

только что проверил Sothink Swf Decomiller
и ActionScript Viewer 3

...они гонят полную лажу на ровном месте :))

llllllllll 23.12.2003 17:10

Nox, хочу огорчить :)

Код:

var neo = this.createEmptyMovieClip("flake"+index, index);
neo.attachMovie("flake", "core", 1);
neo._y = this.br.y+neo._height;
neo.core._alpha = neo.core._xscale;
neo.onEnterFrame = function() {
        trace("ok");
}

ASV выдает следующее :)

Код:

    var neo = this.createEmptyMovieClip("flake" + index, index);
    neo.attachMovie("flake", "core", 1);
    neo._y = this.br.y + neo._height;
    neo.core._alpha = neo.core._xscale;
    neo.onEnterFrame = function () {
        trace ("ok");
    };

:D

p.s.: хотя при желание естественно можно и его повесить :)

llllllllll 23.12.2003 17:18

Тут кстати ilya_cat выкладывал, что то вроде "Попробуйте взломать" - я уж не стал его огорчать, но тоже открывается ASV :)

Artem Brigert 23.12.2003 17:21

Вот что 4тый ASV показывает
Код:

    function sled() {
        x = [];
        y = [];
        this.createEmptyMovieClip("o", ++depth, {_x:50, _y:150});
        o.onEnterFrame = function () {
            i++;
            o._x = o._x + (5 - random (5));
            o._y = 150 - (10 - random (20));
            x.push(o._x);
            y.push(o._y);
            if (o._x >= 400) {
                o.onEnterFrame = null;
                i = 0;
                drawLine();
            }
        };
    }
    function drawLine() {
        this.onEnterFrame = function () {
            n++;
            duplicateMovieClip ("line", "line" + n, n);
            _root["line" + n]._x = x[n];
            _root["line" + n]._y = y[n];
            _root["line" + n]._xscale = x[n + 1] - x[n];
            _root["line" + n]._yscale = y[n + 1] - y[n];
            _root["line" + n].fade();
            if (n >= (x.length - 2)) {
                this.onEnterFrame = null;
                x.splice(0);
                y.splice(0);
                n = 0;
                sled();
            }
        };
    }
    stop();
    fscommand ("showmenu", "false");
    this.onLoad = function () {
        function () {
        };
    };
    this.lineStyle(0, 16711680, 100);
    this.moveTo(-2, 150);
    this.lineTo(552, 150);
    MovieClip.prototype.fade = function () {
        this.onEnterFrame = function () {
            this._alpha = this._alpha - 1;
            if (this._alpha <= 0) {
                this.removeMovieClip();
            }
        };
    };
    this.createEmptyMovieClip("line", 0);
    with (line) {
        lineStyle(1, 65280, 100);
        lineTo(100, 100);
        _visible = false;
    }
    sled();


llllllllll 23.12.2003 17:27

Да да - все верно ;) ASV4 немного отличается от ASV3 и тем более триальных версий :)

Nox Noctis 23.12.2003 17:29

Цитата:

Оригинал написал(а) llllllllll
Nox, хочу огорчить :)
тебе это не удалось :) (огорчить)

это я выдернул из середины кода самые показательные строки... этот код НЕ отдельно сам по себе.

(и ты какой версией асв проверял ? я третей.)

Nox Noctis 23.12.2003 18:20

да, слушайте, АСВ 4.01 обрабатывает код нормально... в отличие от третей версии...

какааая жааалость...

derhab 23.12.2003 18:46

Цитата:

Оригинал написал(а) Nox Noctis
да, слушайте, АСВ 4.01 обрабатывает код нормально... в отличие от третей версии...

ага...!:(:)

Artem Brigert 23.12.2003 18:47

О! Земляк :D

sergwizard 23.12.2003 21:47

Вложений: 1
Да? Крэкнули? Вот, блин... А я самонадеянно верил, что вставка вот этих бессмысленных строк вначале, помешает Sothink Swf Decomiller(у).
Код:

this.onLoad = function(){
        function(){};
}

У меня Sothink рушится от такого. Затем, зная, что триальные ASV не видят дальше пятого фрейма, поместил весь код в 15-фрейм. Я же не подумал, что у вас леченные ASV. (Поделились бы, а?).
Ну, и Бог с ним. Я принимаю, как данность то, что Action Script – это открытый код. И HTML, и javaScript – ведь тоже открытые коды. Но, у кого-то сайт – шедевр, а у другого – дерьмо фиолетовое. Значит, не только в коде…..
Хотя, все равно интересен сам принцип защиты. Вот тут, у меня давным-давно валяется файл. Я его уже как-то выкладывал сюда. Сам файл – чушь, ничего интересного. Но никто не мог выцарапать код. Попробуйте.
И еще раз перечитайте (особенно Artem Melnikov) 4-ю строку этого поста (строки кода не считать). Пожалуйста. :)

derhab 23.12.2003 21:55

пажалуста:)


Код:

    #initclip 1
    (!null);// not popped
    FaderClass = function () {
        this.enabled = true;
        this.init();
    };
    Object.registerClass("Fader", FaderClass);
    FaderClass.prototype.init = function () {
        if (this._targetInstanceName.length > 0) {
            this.fadeTarget = (this.targetInstance = this._parent[this._targetInstanceName]);
            if (this.fadeTarget instanceof MovieClip) {
                this._visible = false;
                if (this.minfade > this.maxfade) {
                    trace ("Fader Component: variable \'minfade\' greater than \'maxfade\'...");
                    this.enabled = false;
                    this._visible = true;
                }
                this.fading = false;
                this.mouseSwitched = false;
                this.fadeTarget._alpha = this.minfade;
                this.newAlpha = this.minfade;
                this.forward = true;
                if (this.maxfade > 100) {
                    this.maxfade = 100;
                }
                if (this.minfade < 0) {
                    this.minfade = 0;
                }
                if (this.fadeSpeed < 0.01) {
                    this.fadeSpeed = 0.01;
                }
                if (this.fadeSpeed > 1) {
                    this.fadeSpeed = 1;
                }
            } else {
                trace ("Fader Component: no target movieclip found...");
                this.enabled = false;
            }
        }
    };
    FaderClass.prototype.onMouseMove = function () {
        if (this.enabled) {
            if (this.fadeTarget.hittest(_root._xmouse, _root._ymouse, this.respectShape)) {
                if (this.mouseSwitched) {
                    this.mouseSwitched = false;
                    this.mouseEnter();
                }
            } else if (!this.mouseSwitched) {
                this.mouseSwitched = true;
                this.mouseLeave();
            }
        }
    };
    FaderClass.prototype.mouseEnter = function () {
        if (!this.fading) {
            this.fading = true;
            this.forward = true;
        } else {
            this.forward = !this.forward;
        }
    };
    FaderClass.prototype.mouseLeave = function () {
        if (!this.fading) {
            this.fading = true;
            this.forward = false;
        } else {
            this.forward = !this.forward;
        }
    };
    FaderClass.prototype.onEnterFrame = function () {
        if (this.enabled) {
            if (this.fadeTarget.hittest(_root._xmouse, _root._ymouse, this.respectShape)) {
                if (this.mouseSwitched) {
                    this.mouseSwitched = false;
                    this.mouseEnter();
                }
            } else if (!this.mouseSwitched) {
                this.mouseSwitched = true;
                this.mouseLeave();
            }
            if (this.fading) {
                if (this.forward) {
                    this.newAlpha = this.newAlpha + (this.fadeSpeed * (this.maxfade - this.newAlpha));
                    if (this.newAlpha > (this.maxfade - 1)) {
                        this.fading = false;
                        this.forward = false;
                        this.fadeTarget._alpha = this.maxfade;
                        this.newAlpha = this.maxfade;
                    } else {
                        this.fadeTarget._alpha = Math.round(this.newAlpha);
                    }
                } else {
                    this.newAlpha = this.newAlpha - (this.fadeSpeed * (this.newAlpha - this.minfade));
                    if (this.newAlpha < (this.minfade + 1)) {
                        this.fading = false;
                        this.forward = true;
                        this.fadeTarget._alpha = this.minfade;
                        this.newAlpha = this.minfade;
                    } else {
                        this.fadeTarget._alpha = Math.round(this.newAlpha);
                    }
                }
            }
        }
    };
    FaderClass.prototype.disable = function () {
        this.enabled = false;
    };
    FaderClass.prototype.enable = function () {
        this.enabled = true;
    };
    FaderClass.prototype.isEnabled = function () {
        return (this.enabled);
    };
    #endinitclip

    (!null);// not popped
    _root.siteBy.onRollOver = function () {
        _root.siteBy.useHandCursor = true;
    };
    _root.siteBy.onRelease = function () {
        getURL ("http://www.cruciallimit.com", "_blank");
    };
    _root.copyright.onRollOver = function () {
        _root.copyright.useHandCursor = true;
    };
    _root.copyright.onRelease = function () {
        getURL ("javascript:copyright();");
    };


iLoveYou 23.12.2003 21:56

а Flare подвел :)

sergwizard 23.12.2003 23:01

О, как! Derhab, а чем ты выковыривал?

derhab 23.12.2003 23:03

Цитата:

Оригинал написал(а) Nox Noctis
да, слушайте, АСВ 4.01 обрабатывает код нормально... в отличие от третей версии...

И это правда :)

sergwizard 23.12.2003 23:10

Цитата:

Оригинал написал(а) Nox Noctis
...а flare декомпилит все точно, зараза... :)
Цитата:

Оригинал написал(а) Sergey"iLoveYou"
а Flare подвел

derhab 23.12.2003 23:19

Ну а ASV как видишь не подвел..это не весь еще код, вообще там все как на ладони, но рыться как то не тянет:))

sergwizard 24.12.2003 00:14

2 Derhab. Понятно. Да там, в принципе, и смотреть-то не на что. Но силу ASV ты продемонстрировал.
2. Artem Melnikov.
Спасибо! Все сделано. :)

Artem Brigert 24.12.2003 00:21

незачто ;)

Sanik 24.12.2003 01:32

Да Тёма, всё получилось... Спасибо ... :)

Artem Brigert 24.12.2003 01:47

Цитата:

Оригинал написал(а) Artem Melnikov
незачто ;)

C2Plus 24.12.2003 04:26

Цитата:

Оригинал написал(а) Artem Melnikov
Ну это конечно правильно, но не каждый в состоянии написать 1500 строк запутанного кода :)
Я бы даже сказал, что далеко не каждый в состоянии написать 1500 строк _не_запутанного_ кода. ;)

iLoveYou 24.12.2003 18:44

Цитата:

Оригинал написал(а) C2Plus

Я бы даже сказал, что далеко не каждый в состоянии написать 1500 строк _не_запутанного_ кода. ;)

остается только заметить, что далеко не каждый вообще способен написать 1500 строк :)

ultraflasher 26.12.2003 15:58

У меня в моём flash 7 f3d engine кода больше чем наверное 10000 строк (маааленько преувеличил, точно не помню скока), и пишу я всегда без ошибок. Без единых. Ошибок у меня ваабще в flash не бывает.

ilya_cat 26.12.2003 16:51

По поводу моего "Попробуйте взломать" - я от той версии уже далек, как Луна от отражения в воде. Сейчас ASV 4 (леченый) показывает на месте моего кода пустое место - спросите у Ивана Дембицкого. Flasm и Flare реагируют аналогичным образом. Чтобы взломать - надо открывать байткод и ручками искать те места, где срывается распознавание кода.

llllllllll 26.12.2003 22:55

ilya_cat, если б ты еще написал то, что стоило скрывать - если оно вообще может быть ;)

Nox Noctis 27.12.2003 01:24

вот-вот :))

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

такая защита спрячет ваш код от всех, кроме ломателей-спортсменов. то есть от 99% интересующихся :)

ilya_cat 29.12.2003 18:32

2 llllllllll - что стоило бы скрывать - это вопрос не ко мне, меня попросили сделать защиту, я сделал.
2 Nox Noctis - совершенно верно, примерно таким образом я и работаю...
Кстати, попробуйте компоненту назначить свойство, начинающееся с цифры - забавный эффект получается


Часовой пояс GMT +4, время: 08:01.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.