Просмотр полной версии : Что за защита
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
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
Вот тебе и примитивная защита, короче не будем заморачиваться, спасибо за помощь
на момент
_local7.loadBytes(_local2);
уже известны байты реального ролика, нужно просто сохранить байты из_local2 как файл и это будет искомый swf :)
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 - заполняется этими готовыми байтами и добавляется на сцену без изменений
//package
package
{
import flash.utils.*;
public class Z extends ByteArray { }
}
по сути это Embed Asset. Либо компилятор при внедрении создает пустой класс расширяющий ByteArray, либо пустому классут Z явно прописывается метатег [Embed]
caseyryan
22.12.2015, 10:59
Мм, сниффером? Каким сниффером можно поймать байты загружаеммые из вшитого ассета?
caseyryan
22.12.2015, 11:02
А вменяемый это какой?
Я ни разу не видел, чтобы декомпилятор мог выдернуть вшитый ассет. Все декомпиляторы, которые я встречал, показывают вшитые ассеты именно как пустые классы
[цензура]
Ибо нефиг ломать)
Прекратите эту вакханалию!
Я ни разу не видел, чтобы декомпилятор мог выдернуть вшитый ассет
У меня все вшитые показываются в отдельной папочке.
caseyryan
22.12.2015, 19:49
вместе с кодом?
elder_Nosferatu
22.12.2015, 20:48
@Tails
Парни поверили что флеш умер. Теперь вот вскрытие делают ;)
вместе с кодом?
Ну массив байт виден, а код отдельно нет вроде
Решительно непонятно, что там может понадобиться человеку, который это может сломать.
caseyryan
25.12.2015, 19:30
Решительно непонятно, что там может понадобиться человеку, который это может сломать.
Взломать, чтобы потешить самолюбие, и заодно выложить на торрент крякнутую версию, как вариант. Допустим так делают с AIR играми для мобил. Уже не раз встречал. Хотя игры были защищены, так как я и сам их расковыривал, чтобы посмотреть что же там внутри)
ZackMercury
25.12.2015, 19:31
Крякнутую версию флешки?
Допустим так делают с AIR играми для мобил
Я думал в АИРе к железяке можно привязаться и вообще вариантов поболе будет, чем этот.
caseyryan
27.12.2015, 14:57
Крякнутую версию флешки?
AIR игры. Тебя что-то удивляет?
Я думал в АИРе к железяке можно привязаться и вообще вариантов поболе будет, чем этот.
Как? Ну привязался ты к железяке. Файл с привязкой надо где-то хранить и хранить на этом же устройстве. Смысл от этой привязки?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.