Сейчас на форуме: _MBK_, Adler (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Скопилировать обратно swf
Посл.ответ Сообщение

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

Создано: 22 июня 2011 02:43
· Личное сообщение · #1

Добрый вечер!

Подскажите в чем проблема и как ее решить.

Суть в том что имеют swf файл. Декомпилировал его с помощью Sothink SWF Decompiler последней версии. ActionScript и другие ресурсы просматриваются очень хорошо. В итоге получил fla c кучей других файлов as с кодом. Поправил одно значение а именно изменил this.user_id = int(this.par.user_id); на this.user_id = 1; в файле FightConfig.as попробовал собрать но в итоге ошибка. Но ошибка не в данном месте где изменил. Решил попробовать пересобрать без изменений, но результат тот же.
Я так понимаю что сверху наложена какая то обфускация других идей почему не собирается у меня просто нет. Если так то подскажите как ее снять.
Исходный файл с декомпилированной версией прилагаю.

С уважением cardon.

a9ea_22.06.2011_EXELAB.rU.tgz - fl_fight.rar



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

Создано: 22 июня 2011 03:15
· Личное сообщение · #2

используй rabcdasm. это флеш дизассемблер для action script 3
для as2 используй flasm

| Сообщение посчитали полезным: L0ST

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

Создано: 22 июня 2011 11:21 · Поправил: cardon
· Личное сообщение · #3

FanRa3
Спасибо попробовал разобрать с помощью rabcdasm вроде удачно. Теперь пытаюсь понять как изменить его значение открыл файл FightConfig.class.asasm.

Нашел определение типа переменной
trait slot QName(PackageNamespace(""), "user_id") type QName(PackageNamespace(""), "int") end

Я так понимаю то что было this.user_id = int(this.par.user_id); в программе Sothink SWF Decompiler стало
debugline 201
getlocal0
findpropstrict QName(PackageNamespace(""), "int")
getlocal0
getproperty QName(PrivateNamespace("FightConfig", "FightConfig#0"), "par")
getproperty Multiname("user_id", [PrivateNamespace("FightConfig", "FightConfig#0"), PackageNamespace(""), PrivateNamespace("FightConfig.as$82", "FightConfig#1"), PackageInternalNs(""), Namespace("http://adobe.com/AS3/2006/builtin"), ProtectedNamespace("FightConfig"), StaticProtectedNs("FightConfig"), StaticProtectedNs("ru.technomagic.config:ConfigBase"), StaticProtectedNs("Object")])
callproperty QName(PackageNamespace(""), "int"), 1
initproperty QName(PackageNamespace(""), "user_id")

Но к сожалению не могу понять как заменить тут данный параметр на 1

Мне кажеться что надо изменить строку
getproperty Multiname("user_id", [PrivateNamespace("FightConfig", "FightConfig#0"), PackageNamespace(""), PrivateNamespace("FightConfig.as$82", "FightConfig#1"), PackageInternalNs(""), Namespace("http://adobe.com/AS3/2006/builtin"), ProtectedNamespace("FightConfig"), StaticProtectedNs("FightConfig"), StaticProtectedNs("ru.technomagic.config:ConfigBase"), StaticProtectedNs("Object")])
на
getproperty Multiname("user_id", "1")
Но я точно не уверен.

Подскажите кому не сложно. Буду очень благодарен.



Ранг: 189.9 (ветеран), 334thx
Активность: 0.30
Статус: Участник

Создано: 22 июня 2011 14:21
· Личное сообщение · #4

Есть же вроде дока на русском языке по AS? Сам не читал xDDD, но попробуй так:
Code:
  1.      pushbyte            1
  2.      initproperty        QName(PackageNamespace(""), "user_id")





Ранг: 467.7 (мудрец), 5thx
Активность: 0.270
Статус: Участник
Иной :)

Создано: 24 июня 2011 13:11 · Поправил: [HEX]
· Личное сообщение · #5

Всё верно
Code:
  1.       debugline           201
  2.       getlocal0
  3.       findpropstrict      QName(PackageNamespace(""), "int")
  4.       getlocal0
  5.       getproperty         QName(PrivateNamespace("FightConfig", "FightConfig#0"), "par")
  6.       getproperty         Multiname("user_id", [PrivateNamespace("FightConfig", "FightConfig#0"), PackageNamespace(""), PrivateNamespace("FightConfig.as$82", "FightConfig#1"), PackageInternalNs(""), Namespace("http://adobe.com/AS3/2006/builtin"), ProtectedNamespace("FightConfig"), StaticProtectedNs("FightConfig"), StaticProtectedNs("ru.technomagic.config:ConfigBase"), StaticProtectedNs("Object")])
  7.       callproperty        QName(PackageNamespace(""), "int"), 1
  8.       initproperty        QName(PackageNamespace(""), "user_id")

менять на
Code:
  1.       debugline           201
  2.       getlocal0
  3.       pushbyte            1
  4.       initproperty        QName(PackageNamespace(""), "user_id")


Если лень доки читать, то делай по образцу:
Находишь аналогичные строчки в скриптах декомпилированых сочником и смотришь как выглядят в asasm файле и пишешь по аналогии.
Если ничего похожего нет, то берешь и сам пишешь на флеше пару строк, компилируешь, прогоняешь через rabcdasm и видишь что тебе нужно.


466f_24.06.2011_EXELAB.rU.tgz - fl_fight.zip

-----
Computer Security Laboratory




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

Создано: 10 июля 2011 19:19
· Личное сообщение · #6

Спасибо! Подскажите а как можно подменить картинку в скомпилированном swf файле?



Ранг: 117.5 (ветеран), 5thx
Активность: 0.080.01
Статус: Участник

Создано: 11 июля 2011 14:57
· Личное сообщение · #7

а URL Action Editor не помог бы тебе в первом случае?



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

Создано: 11 июля 2011 21:59
· Личное сообщение · #8

sats пишет:
а URL Action Editor не помог бы тебе в первом случае?

Нет не поможет т.к. код закодированный. Да и я решил ту проблему с помошью RABCDAsm.
Осталось придумать как подменить одну картинку на другую в файле в котором ActionScript закодирован.



Ранг: 162.4 (ветеран), 11thx
Активность: 0.060
Статус: Участник

Создано: 12 июля 2011 01:04
· Личное сообщение · #9

http://www.swixkit.com/ попробуй это


 eXeL@B —› Вопросы новичков —› Скопилировать обратно swf
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


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