PDA

Просмотр полной версии : Что за защита


Dmitriy154
21.12.2015, 00:19
Изучаю способ защиты приложения, не могу понять, может добрые люди помогут
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
Я знаю, что в реальности он не пустой, но как можно его выцепить без модификации кода?

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

Dmitriy154
22.12.2015, 00:32
нужно просто сохранить байты из_local2 как файл

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

i.o.
22.12.2015, 10:51
//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
Решительно непонятно, что там может понадобиться человеку, который это может сломать.

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

ZackMercury
25.12.2015, 19:31
Крякнутую версию флешки?

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

caseyryan
27.12.2015, 14:57
Крякнутую версию флешки?
AIR игры. Тебя что-то удивляет?
Я думал в АИРе к железяке можно привязаться и вообще вариантов поболе будет, чем этот.
Как? Ну привязался ты к железяке. Файл с привязкой надо где-то хранить и хранить на этом же устройстве. Смысл от этой привязки?