реверсинг flash

Discussion in 'Реверсинг' started by BigSnake, 14 Feb 2011.

  1. BigSnake

    BigSnake New Member

    Joined:
    20 Apr 2010
    Messages:
    15
    Likes Received:
    1
    Reputations:
    0
    Имеем страничку, где логика по вводу данных зашита во флеш
    _http:// l 2 t o p . r u /vote/3577/
    сам флеш /StrongCap t cha.swf

    флеш с обфускацией
    пробовал воостановить исходники ac3 декомпилерами
    Flash Decompiler Trillix отвалился
    AC3 Sorcerer декомпильнул, но код выдал запутаный, вида

    Code:
          
    private function do (_arg1:BitmapData, _arg2:int):ByteArray{
                var _local9:uint;
                trace(("offset: " + _arg2));
                var _local3:uint = _arg1.width;
                var _local4:uint = _arg1.height;
                var _local5:ByteArray = _arg1.getPixels(new Rectangle(0, 0, _local3, _local4));
                var _local6:uint = _arg2;
                var _local7:ByteArray = new ByteArray();
                var _local8:int;
                //unresolved jump
                return (_local7);
                if (_local8 >= 800){
                    trace( do.byteArrayToString(_local7));
                    //unresolved jump
                    _local8 = (_local8 + 100);
                    //unresolved jump
                    trace(("=" + _local9));
                    //unresolved jump
                    _local7.writeByte(_local9);
                    //unresolved jump
                    //unresolved jump
                };
                _local9 = _local5[(_local6 + _local8)];
                //unresolved jump
            }
    
    вопрос следующий каким средством можно воспользоваться чтобы
    в какомто виде получить исходник более менее читаемый
    (без нерасгаданых //unresolved jump , покаверканых циклов и условных операторов и тому подобных прелестей)
    , хотябы на уровне опкодов?

    или есть ли какието способы внедрить код в флешку (swf) и посмотреть состояние переменной , чтото типа trace(_local7) только без исходника) на уровне кодов?

    а задача в следующем, нужно определить 8 байтный ключ которым расшифровывается входящий трафик(во флеше выполняется GET запрос, потом расшифровывается) и ключ которым криптуется исходящий
    (формируется POST запрос, часть переменных в котором закриптована)


    оба ключа формируются следующим образом
    Code:
    package {
        import flash.display.*;
    
        public dynamic class EraseMeBitmap extends BitmapData {
    
            public function EraseMeBitmap(_arg1:int=173, _arg2:int=63){
                super(_arg1, _arg2);
            }
        }
    }//package 
    
    ...
    
    
           private var ?%:ByteArray;
           private var `$:ByteArray;
    
                this.`$ = this.do (new EraseMeBitmap(), 7463);
                //unresolved jump
                this.?% = this.do (new EraseMeBitmap(), 2325);
    
    где процедура do описана выше

    в каком направлении копать?
    какие средства использовать для получения исходника на уровне опкодов, может там получится понять алгоритм формирования ключа?
    или как можно протрассировать флеш и посмотреть состояние переменных в определенной точке?

    к сожалению опыта работы с флешем мало
    или если есть желающие, которые готовы взяться за эту работу, естественно не бесплатно, пишите в аську 190шесть66131 , обсудим
     
  2. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    sothink swf decompiler в помощь
    pcode показывает на ура
     
  3. BigSnake

    BigSnake New Member

    Joined:
    20 Apr 2010
    Messages:
    15
    Likes Received:
    1
    Reputations:
    0
    пробовал, при по пытке посмотреть секции с кодом на этом флеше sothink swf decompiler завершает работу

    вобщем вопрос решен, добился нужного результата используя утилиты отсюда
    _https://github.com/CyberShadow/RABCDAsm/blob/master/README.md?locale=ru
     
    1 person likes this.
  4. neprovad

    neprovad Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    899
    Likes Received:
    274
    Reputations:
    59
    Я предварительно проверил работу тулзы на предлагаемом файле, все было ок. Чего попало не стал бы советовать. Впрочем, рад что сами все решили
     
  5. BigSnake

    BigSnake New Member

    Joined:
    20 Apr 2010
    Messages:
    15
    Likes Received:
    1
    Reputations:
    0
    спасибо, тогда еще раз к софистику присмотрюсь, в будущем понадобится