Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Что за защита (http://www.flasher.ru/forum/showthread.php?t=211986)

Dmitriy154 21.12.2015 00:19

Что за защита
 
Изучаю способ защиты приложения, не могу понять, может добрые люди помогут
Код AS3:

private function onLoaded(_arg1:Event):void
{
var _local8:int;
 if (stage){
stage.scalemode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT; };
var _local2:ByteArray = new ByteArray();
var _local3:Z = new Z();
_local3.position = (_local3.length - 8);
var _local4:int = _local3.readInt();
var _local5:int = (_local4 + _local3.readInt());
_local3.position = _local4;
var _local6:int = _local4;
while (_local6 < _local5)
{ _local8 = _local3.readUnsignedByte();
_local8 = (_local8 ^ 18); _local2.writeByte(_local8); _local6++;
};
var _local7:Loader = new Loader();
addChild(_local7);
_local7.loadBytes(_local2); } 
}
}
//package
package
{
import flash.utils.*
public class Z extends ByteArray {  }
}

Не понятно, откуда берутся нужные данные ByteArray

GBee 21.12.2015 01:03

Мы все здесь злые.

ZackMercury 21.12.2015 01:08

Из экземпляра класса Z.

caseyryan 21.12.2015 07:42

Декомпилятор не может получить содержимое флешки, которая была вшита в основную через Embed. Поэтому здесь нет никакого кода в классе Z. В реальности он, конечно же, есть.
Защита здесь примитивная, простое смещение байт. Весь алгоритм на виду. А можно было сделать динамичческое составление ключа внутри вшитой флешки, а наружу из нее выдавать уже готовый ключ. Так было бы надежнее, и само шифрование использовать, например, AES

Dmitriy154 21.12.2015 10:30

Почему же тогда класс Z расширяет ByteArray, и как добраться до основного класса? Я так понимаю класс Z переводит основной класс приложения в байт массив с необходимым сдвигом байт. Прошу прощения за такую нелегальную тему, просто интересуюсь с целью понять суть защиты.

caseyryan 21.12.2015 12:27

Ничего он не переводит никуда. Z - это простой swf файл, который был предварительно обработан какой-то прогой, делающий сдвиг байт, и вшит в основную флешку через Embed.
А расширяет он ByteArray потому, что компилятор так сделал.
Ты так же можешь увидеть кучу якобы пустых классов расширяющих BitmapAsset или BitmapData которых не было в изначальном приложении

Dmitriy154 21.12.2015 13:15

Вот тебе и примитивная защита, короче не будем заморачиваться, спасибо за помощь

i.o. 21.12.2015 16:59

на момент
_local7.loadBytes(_local2);

уже известны байты реального ролика, нужно просто сохранить байты из_local2 как файл и это будет искомый swf :)

Tails 21.12.2015 17:06

Вот есть у вас совесть?

undefined 21.12.2015 18:01

Цитата:

на момент
_local7.loadBytes(_local2);

уже известны байты реального ролика, нужно просто сохранить байты из_local2 как файл и это будет искомый swf
откуда они известны, если класс z - пустой?

Добавлено через 13 минут
Я знаю, что в реальности он не пустой, но как можно его выцепить без модификации кода?

caseyryan 21.12.2015 19:51

Цитата:

Сообщение от undefined (Сообщение 1189844)
Я знаю, что в реальности он не пустой, но как можно его выцепить без модификации кода?

Например, инъекцией байткода, какой-нибудь штукой типа этой https://code.google.com/p/apparat/

Dmitriy154 22.12.2015 00:32

Цитата:

Сообщение от i.o. (Сообщение 1189841)
нужно просто сохранить байты из_local2 как файл

Прошу прощения, а каким образом это лучше сделать? спец. прогой типа asAsmGUI, и будет ли смысл сохранять как файл, если _local7:Loader - заполняется этими готовыми байтами и добавляется на сцену без изменений

i.o. 22.12.2015 10:51

Код AS3:

//package 
package
{
import flash.utils.*
public class Z extends ByteArray {  }
}

по сути это Embed Asset. Либо компилятор при внедрении создает пустой класс расширяющий ByteArray, либо пустому классут Z явно прописывается метатег [Embed]

caseyryan 22.12.2015 10:59

Мм, сниффером? Каким сниффером можно поймать байты загружаеммые из вшитого ассета?

i.o. 22.12.2015 11:01

[цензура]

caseyryan 22.12.2015 11:02

А вменяемый это какой?
Я ни разу не видел, чтобы декомпилятор мог выдернуть вшитый ассет. Все декомпиляторы, которые я встречал, показывают вшитые ассеты именно как пустые классы

i.o. 22.12.2015 11:04

[цензура]
Ибо нефиг ломать)

Tails 22.12.2015 11:05

Прекратите эту вакханалию!

GBee 22.12.2015 15:35

Цитата:

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

caseyryan 22.12.2015 19:49

вместе с кодом?

elder_Nosferatu 22.12.2015 20:48

@Tails
Парни поверили что флеш умер. Теперь вот вскрытие делают ;)

GBee 22.12.2015 22:40

Цитата:

вместе с кодом?
Ну массив байт виден, а код отдельно нет вроде

etc 25.12.2015 14:02

Решительно непонятно, что там может понадобиться человеку, который это может сломать.

caseyryan 25.12.2015 19:30

Цитата:

Сообщение от etc (Сообщение 1190127)
Решительно непонятно, что там может понадобиться человеку, который это может сломать.

Взломать, чтобы потешить самолюбие, и заодно выложить на торрент крякнутую версию, как вариант. Допустим так делают с AIR играми для мобил. Уже не раз встречал. Хотя игры были защищены, так как я и сам их расковыривал, чтобы посмотреть что же там внутри)

ZackMercury 25.12.2015 19:31

Крякнутую версию флешки?

GBee 25.12.2015 20:52

Цитата:

Допустим так делают с AIR играми для мобил
Я думал в АИРе к железяке можно привязаться и вообще вариантов поболе будет, чем этот.

caseyryan 27.12.2015 14:57

Цитата:

Сообщение от ZackMercury (Сообщение 1190139)
Крякнутую версию флешки?

AIR игры. Тебя что-то удивляет?
Цитата:

Я думал в АИРе к железяке можно привязаться и вообще вариантов поболе будет, чем этот.
Как? Ну привязался ты к железяке. Файл с привязкой надо где-то хранить и хранить на этом же устройстве. Смысл от этой привязки?


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

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