Сейчас на форуме: site-pro, Rio, johnniewalker, vsv1 (+5 невидимых)

 eXeL@B —› Крэки, обсуждения —› Decrypt SWF, подверженный обфускации Amayeta SWF Encrypt
<< . 1 . 2 . 3 . 4 . >>
Посл.ответ Сообщение

Ранг: 0.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 октября 2008 17:40 · Поправил: root-master
· Личное сообщение · #1

Доброго времени суток!

Я работаю над проектом, задачей которого является получение live статистики матчей на одном из серверов (http://www.atptennis.com/; флешка по адресу http://www.protennislive.com/frameset.asp?year=2008&wkno=39&lang=en&ta bno=1&eventid=M015&ref=www.atptennis.com) по определенным запросам. Проблема заключается в том, что данные с каких-то пор начали шифроваться (раньше они приходили в открытых xml-файлах).
Этот вопрос поднимался на cracklab.ru
http://www.exelab.ru/f/action=vthread&forum=5&topic=10317
Однако достучаться до человека, который вроде бы нашел алго, не получилось (его ник TamTam).

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

Проблемы сл характера:
SWF подвержен обфускации однозначно. Предположительно Amayeta SWF Encrypt.

Попытка решения данного вопроса :

- Пробовал пропускать флешку через SWF Protect Remover, но не помогло, только размер вырос.

- В сети нашлось пару тем по защитам ActionScript в swf.
http://www.woodmann.com/forum/showthread.php?t=11720
http://www.w oodmann.com/forum/showthread.php?t=10300
Однако те методы, которые использовались для снятия защиты уже порядком устарели, либо используется какая-то доп защита.

Как следствие, Action Script-ы абсолютно нечитабельны.
Среди констант нашлось что-то наподобие используемого словаря для шифрования входящего сообщения.
Это было замечено ещё TamTam-ом.
1234567890ABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrstuvwxyz.,/?!@$% ^&*()_+-=:;~{}<>

Пробовал ксорить :

alph := '1234567890ABCDEFGHIJKLMNOPQRTSUVWXYZabcdefghijklmnopqrstuvwxyz.,/?!@$ % ^&*()_+-=:;~{}<>';

function GetIndSymb(ch: char): integer;
var
i: integer;
begin
for i:=1 to length(alph) do
if alph[i] = ch then
begin
Result := i;
Exit;
end;
end;

function XorAlg(s: string): string;
var
CurIndEl: integer;
begin
for CurIndEl:=1 to length(s) do
begin
s[CurIndEl]:=chr(ord(s[CurIndEl]) xor byte(GetIndSymb(s[CurIndEl])));
end;
Result := s;
end;

Однако тоже ничего не вышло. Все попытки вычислений позиций в словаре, побитовые умножения, сложения - ничего толком не дали. Вообще ничего.

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

Сегодня на утро пришла несовсем здравая мысль конвертировать .swf в .exe - и пропустить через дебагер, однако как и предполагалось раньше, конвертер, судя по всему, создает лишь оболочку для запуска флешки, ни больше, ни меньше.

Флешка в приложении (компрессор снял).

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

Ещё раз напоследок хочу выделить возможные варианты решения проблемы:
1. Попробывать снять обфускацию с флешки
2. Найти подход к запуску виртуальной машины и начать исследовать
3. Пробовать известные алгоритмы шифрации информации и применять их к данной задаче, с учетом того, что предположительные данные, которые можно получить в результате, имеются в наличии.
--
AQH18 :+M72JDN"eYV"Ybfp6682_DC8h<uI< 18.>Ou{l"aiy," H%288;5>46"z/xb" P@~LAFCk"p." +JqT"," F6l"hiUhvux" NGKg"Hqws.?Ttse,cqnvhos" ;O1V"tfczJnnhqeUathq.tY"Iv
Предположительно начало файла расшифровывается в последовательность:
<?xml version="1.0"?><MatchList_Live eventId="
--

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




1024_08.10.2008_CRACKLAB.rU.tgz - de.swf



Ранг: 1.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 01 сентября 2009 22:52
· Личное сообщение · #2

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



Ранг: 13.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 02 сентября 2009 01:04
· Личное сообщение · #3

Струмент на бочку



Ранг: 13.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 02 сентября 2009 17:16
· Личное сообщение · #4

Инструкция по деобфускации сабжа.
см. предыдущую инструкцию, здесь только уточнения.
255-й тэг просто удаляем,
если видим 253-й тэг, то:
- заменяем тип данного тэга на тим следующего тэга
- находим, если есть, ворованные байты, они расположены в начале следующего тэга до начала кода "обфускации", сигнатура кода 9B 07 00 04 05
- КОРРЕКТИРОВКА: в конце текущего 253-го тэга находим волшебные 5 байт: 99h 02h 00h XX XX
здесь 99h - branch (переход), 02h 00h - длина тела инструкции, XX XX - смещение, куда прыгаем, относительно первого байта после конца данной инструкции.
т.е. место начала настоящего кода в данном тэге узнаём по данному смещению.
- рядом с найденными 5-ю байтами тоже есть 5 байт 99h 02h XX XX, которые можно грохнуть - таким образом грохаем в конце тэга 10 байт и дописываем 00h - END
- в следующем тэге находим список констант, примерно это делается по сингатуре:
push 1 96 03 00 00 01 00
push 1 96 03 00 00 01 00
getVariable 1C
push ? 96 05 00 07 ?? ?? ?? ??
oldAdd/Sub 0A/0B
setVariable 1D
constants (size) ... 88 (?? ??) [....] size bytes

ну или как-нибудь ещё.

Последнее действие - собираем свежеполученный тэг:
<украденные байты>+<константы>+<код>+00h

Удаляем следующий тэг, корректируем размер текущего тэга и, если тэг внутри спрайта (тип 39 dec), то корректируем размер спрайта.

По идее, после данных действий должен получиться рабочий кликабельный swf-ник.



Ранг: -1.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 02 сентября 2009 19:54
· Личное сообщение · #5

Delphir пишет:
чем и как именно исходники вынуты?

Все тем же - сотником.Ничего не правил.



Ранг: 1.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 сентября 2009 19:59
· Личное сообщение · #6

дай свою версию плз. у меня вот такое выдает.


function ()
{
\x03 = 1348 % 511 * 5;
return (eval("\x03"));
} // End of the function
var \x01 = -1489 + \x04\x05();
for (\x01 = eval("\x01") + 247; eval("\x01") == 989; \x01 = eval("\x01") + 718)
{
\x01 = eval("\x01") - 918;
if (false)
{
continue;
} // end if
} // end of for
if (eval("\x01") == 394)
{
\x01 = eval("\x01") + 591;

} // end if



Ранг: 1.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 сентября 2009 20:12
· Личное сообщение · #7

даже скачал с ихнего сайта последнюю демку - она тоже корябицу выдает. что-то еще ты делал!



Ранг: 13.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 02 сентября 2009 20:39 · Поправил: Nowar
· Личное сообщение · #8

Вот, достаточно криво реализовал то, о чём писал.
ВНИМАНИЕ: работает только на незапакованных swf-ках. (если вначале написано CWS, то надо распаковать чем-то, скажем, swfc11)
update: Это не декомпилятор, а деобфускатор. Т.е. он приведёт swf-ку в состояние до деобфускации. А дальше её SWF decompiler'ом каким-нибудь можно посмотреть/распаковать

83ce_02.09.2009_CRACKLAB.rU.tgz - nowar_swf_decompiler.exe



Ранг: 13.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 02 сентября 2009 20:39
· Личное сообщение · #9

Вдогонку, распаковывалка...

b79e_02.09.2009_CRACKLAB.rU.tgz - swfc11.zip



Ранг: -1.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 02 сентября 2009 20:57
· Личное сообщение · #10

Delphir -А где выдает?В классах или скрипт в фрейме?Ты же выкладывал этот проект и там все читалось.
Я не пробовал его править хотя и это возможно там просто объекты не кликабельны т.к. потеряли свойства конпки. декриптором обработай сначала.У меня сотник какой то криво-патченный но я его как то правил сам на других флэшках.Не думаю что это повлияло.



Ранг: 1.3 (гость)
Активность: 0=0
Статус: Участник

Создано: 03 сентября 2009 00:45
· Личное сообщение · #11

yuB Впринципе везде. А вот после утилиты Nowar AS уже как надо выводится. Кстати декомпилятор у Trillix лучше - он понимает интерферфейсы, а сотхинк их классами при экспорте объявляет.



Ранг: 13.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 04 сентября 2009 11:07 · Поправил: Nowar
· Личное сообщение · #12

Теперь осталось ещё сделать эмулятор этой виртуальной машины, чтобы украденные байты не по сигнатуре выковыривать, а константы не по частоте букв находить, а естественным, так сказать, путём
Хотя, на данных примерах результат деобфускации отличаться не будет.



Ранг: -1.6 (гость)
Активность: 0.010
Статус: Участник

Создано: 05 сентября 2009 12:44 · Поправил: yuB
· Личное сообщение · #13

Делайте....я потом выложу флэшку с llvm и будет всем весело Другое дело что на сегодня ни flash ни AIR ни Flex не способны сделать что то достойное внимания.Любой функционал можно создать быстрее а то и лучше - самому чем реверсить всякий отстой.Все что может заслужить внимание это способы оптимизации...но они все известны.
Так что там на счет сильверлайт?Но все же лучше заморочиться с натив клиентом от гугла.Это революционная технология и в случае успеха-всем другим грозит-забвение
Знакомтесь-http://code.google.com/p/nativeclient/
Примеры в том числе Quake работают в стандалон и в браузере - безупречно.В принципе уже можно создавать проекты но пока не все браузеры поддерживаются.



Ранг: 13.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 05 сентября 2009 22:29
· Личное сообщение · #14

Ну, то, что для llvm просмотр исходного кода отдыхает, это понятно.
Однако, в рамках данной темы противодействовать Amayeta SWF Encrypt мы научились



Ранг: 0.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 11 марта 2010 17:54 · Поправил: grozny23
· Личное сообщение · #15

Delphir пишет:
function (){ \x03 = 1348 % 511 * 5; return (eval("\x03"));} // End of the functionvar \x01 = -1489 + \x04\x05();for (\x01 = eval("\x01") + 247; eval("\x01") == 989; \x01 = eval("\x01") + 718){ \x01 = eval("\x01") - 918; if (false) { continue; } // end if} // end of forif (eval("\x01") == 394){ \x01 = eval("\x01") + 591; } // end if

Расскажи подробнее пжлст, как тебе удалось это победить, что не делаю, всё равно код остаётся в таком виде!!!



Ранг: -1.9 (гость)
Активность: 0=0
Статус: Участник

Создано: 02 мая 2010 03:18 · Поправил: Модератор
· Личное сообщение · #16

бля Nowar!!! спасибо ТЕБЕ!!! не знаю что вообще сделано и как это работает, но декомпилирует, редактирует и работает!!!!!!!! РАБОТАЕТ!!!!!!!!!!
правда 1 раз из 5-6 на один и тот же файл
рано обрадовался(((

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



Ранг: 0.1 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 июня 2010 16:40
· Личное сообщение · #17

Чавойто прогоняет, но не деобфусцирует ничего..

во вложении:
default.swf - исходный
out.swf - после прогона через деобфускат

помогите, очень надо

f470_17.06.2010_CRACKLAB.rU.tgz - Archive.7z



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 октября 2010 19:12 · Поправил: sllh
· Личное сообщение · #18

Похоже, что с новой версией 6.0.9 они конкретно изменили алгоритм, до это версии все вскрывается этой утилиткой http://www.swfdecrypt.com/ но, к сожалению, автор, видимо, забил.
В 9ке теперь нету "краденных" байт, весь код дописывается внутрь тега, 255ый тег -- просто флаг упаковки флешки. Судя из http://www.swf-reader.com/ (достаточно демо-версии) проверяется наличие каких-то объектов, но флеша вообще не знаю, поэтому пока буду раскуриваться доками по avm2 Если у кого есть какие наработки, буду признателен.



Ранг: 81.0 (постоянный), 88thx
Активность: 0.070.02
Статус: Участник

Создано: 04 октября 2010 20:01
· Личное сообщение · #19

Decrypt SWF, подверженный обфускации Amayeta SWF Encrypt

Это не поможет?
forum.ru-board.com/topic.cgi?forum=35&topic=47770#1



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 04 октября 2010 20:30
· Личное сообщение · #20

uncleua, не знаю, если перезальют файл, посмотрю, я юзал триал, но у него (даже не взирая на ограничения) заявлена поддержка только до 6.0.4. Кстати, исходя из него, удалось понять, что добавляется новый метод, в каждый тег кода, с которым проводятся какие-то манипуляции, вот пытаюсь разобраться какие




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 05 октября 2010 02:05
· Личное сообщение · #21

swfку бы выложили, или в пм киньте

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 октября 2010 10:25
· Личное сообщение · #22

uncleua, в общем сработал и ломанный SWF Reader и, благодаря наводке 4kusNick нашелся еще AS3 Sorcerer, который тоже справился с последней версией Амайеты. Всем спасибо за помощь



Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 октября 2010 15:38
· Личное сообщение · #23

sllh
Выложи ломанный Swf Reader плиз



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 06 октября 2010 16:31
· Личное сообщение · #24

sevenup, выше ссылка от uncleua на борду.




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 06 октября 2010 19:10
· Личное сообщение · #25

sevenup
Скорее всего речь о ломанной демке отсюда
narod.ru/disk/25705327000/swf_reader_2.3_build_27.rar.html

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 48.2 (посетитель), 49thx
Активность: 0.040
Статус: Участник

Создано: 07 октября 2010 00:10
· Личное сообщение · #26

4kusNick пишет:
swfку бы выложили, или в пм киньте

Тоже хотел бы посмотреть на этот swf




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 07 октября 2010 01:09
· Личное сообщение · #27

LIZARD пишет:
Тоже хотел бы посмотреть на этот swf

Накройте любую swf последней Amayeta и будет вам такая же swfка

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.




Ранг: 48.2 (посетитель), 49thx
Активность: 0.040
Статус: Участник

Создано: 07 октября 2010 13:18
· Личное сообщение · #28

Хотелось бы swfку накрытую лицензионной amayeta, дабы по разбираться со всеми фичами



Ранг: 0.4 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 октября 2010 15:24
· Личное сообщение · #29

LIZARD
forum.ru-board.com/topic.cgi?forum=35&topic=40623&start=20#lt
Там выложен инсталл последней Амайеты + несколькими постами ранее рег-файлик, подходит к последней версии, но нужно закрывать доступ в инет



Ранг: 0.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 07 октября 2010 23:56
· Личное сообщение · #30

Зачем вам методы обхода защиты amayeta ? это самая безполезная софтина по защите флеша! Лучше бы нашли методы как снимать защиту с флешек под SecureSWF, которая является лучшей в этой области.




Ранг: 748.2 (! !), 390thx
Активность: 0.370
Статус: Участник
bytecode!

Создано: 08 октября 2010 01:27 · Поправил: 4kusNick
· Личное сообщение · #31

sevenup пишет:
SecureSWF
лучше остальных флэшовых протов только в том, что обфусцирует красиво - она умеет детектить важные элементы, которые не стоит трогать, чтобы все не сломалось, а так - нет там ничего страшного, кроме обфускации, так что нечего там снимать... Или я не про то?

-----
Флэш, ява, дотнет - на завтрак, обед и ужин. Unity3D на закуску.



<< . 1 . 2 . 3 . 4 . >>
 eXeL@B —› Крэки, обсуждения —› Decrypt SWF, подверженный обфускации Amayeta SWF Encrypt
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати