Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.12.2011, 10:45
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 1  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
По умолчанию Как трейсить SWC?

Библиотека что-то непонятное делает с данными. Нет ли способов её протрейсить?

Старый 18.12.2011, 10:52
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Если библиотеку скомпилировали для отладки, то можно отладчиком что-нибудь посмотреть. Конечно понять что-то будет сложно... но если коротенькая функция то можно попробовать. Самый простой вариант - если известно, что функция обращается к свойству объекта, который вы передаете, можно в геттере этого объекта вызвать enterDebugger(). Если нет, то нужно смотреть синтаксис break для fdb - помоему там можно назначить точку останова по имени функции.
__________________
Hell is the possibility of sanity

Старый 18.12.2011, 11:19
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 3  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
wvxvw, спасибо попробую enterDebugger()

Старый 18.12.2011, 11:24
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 4  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Можно протрейсить все вызовы функций внутри при помощи flash.trace.Trace, правда ещё нужно подтюнить mm.cfg чтоб это работало хоть с какой-то производительностью(включить TraceOutputBuffered). Также можно просто декомпилировать swc. Декомпайлер её скорее всего просто так не еъест, поэтому извлеките swc зипом и там получатся swf и xml файл. А вам зачем вдруг такая мысль посещает? Не все вопросы связанные с реверсингом можно обсуждать на этом форуме.
__________________
:)

Старый 18.12.2011, 13:02
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 5  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Цитата:
А вам зачем вдруг такая мысль посещает? Не все вопросы связанные с реверсингом можно обсуждать на этом форуме.
Это не меня, а вас такая мысль посещает. Я же написал, что библиотека шлет данные которые я не могу распарсить. Ничего криминального. Просто сервер шлет JSON, а библиотека Websocket передает мне [object Object] и его никак не удается расковырять с помощью event.data.

Более того, вообще мистика, есть класс FlashSocket extends EventDispatcher implements IWebSocketWrapper.
В нем несколько публичных переменных. Я имею к ним доступ создав экземпляр класса. Все без проблем. Но когда создаю свою публичную в переменную в FlashSocket и обращаюсь к ней, при компиляции получаю ошибку:
Код:
See details for more information.
  Encountered errors or warnings while building project NewSocket.mxml.
    NewSocket.mxml: Access of possibly undefined property mess through a reference with static type com.pnwrain.flashsocket:FlashSocket.
Геттерами/сеттерами такой же результат.

Старый 18.12.2011, 13:58
Aloran вне форума Посмотреть профиль Отправить личное сообщение для Aloran Найти все сообщения от Aloran
  № 6  
Ответить с цитированием
Aloran

Регистрация: May 2009
Сообщений: 223
Записей в блоге: 1
А что вам мешает этот объект превратить в строку при помощи JSON (например вот этого http://www.blooddy.by/ru/crypto/)

Старый 18.12.2011, 16:19
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 7  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Попробую описать проблему подробнее.

Сервер отправляет запросы клиенту так (сделал 5 разных вариантов):
PHP код:
var tests = [555777];      

client.send("rrrrrrrr");
      
client.send({"tests":tests});
      
client.send({tests:tests});
      
client.emit({"tests":tests});
      
client.emit({tests:tests}); 
В консоли видим:
Код:
debug - flashsocket writing 3:::rrrrrrrr
   debug - flashsocket writing 3:::[object Object]
   debug - flashsocket writing 3:::[object Object]
   debug - flashsocket writing 5:::{"name":{"tests":[555,777]}}
   debug - flashsocket writing 5:::{"name":{"tests":[555,777]}}
Функция обрабатывающая эти послания в зависимости от типа:

Код AS3:
//https://github.com/LearnBoost/socket.io-spec#Encoding
			/*	0		Disconnect
				1::	Connect
				2::	Heartbeat
				3:: Message
				4:: Json Message
				5:: Event
				6	Ack
				7	Error
				8	noop
			*/
 
			var dm:Object = deFrame(message);
			_mess = message;
 
			switch ( dm.type ){
				case '0':
					this._onDisconnect();
					break;
				case '1':
					this._onConnect();
					break;
				case '2':
					this._onHeartbeat();
					break;
				case '3':
					var fem:FlashSocketEvent = new FlashSocketEvent(FlashSocketEvent.MESSAGE);
					fem.data = dm.msg;
					dispatchEvent(fem);
					break;
				case '4':
					var fe:FlashSocketEvent = new FlashSocketEvent(FlashSocketEvent.MESSAGE);
					fe.data = JSON.decode(dm.msg);
					dispatchEvent(fe);
					break;
				case '5':
					var m:Object = JSON.decode(dm.msg);
					var e:FlashSocketEvent = new FlashSocketEvent(m.name);
					e.data = m.args;
					dispatchEvent(e);
					break;
			}
То есть первый вариант нормально получаю текстовое сообщение. 2 и 3 вариант клиент принимает JSON за текст (3:: Message), но при этом там объект : [object Object]. 4 и 5 вариант клиент вообще принимает команду за Event, а в консоли видим строку.

Пытаюсь разными методами разобрать полученные методы - ошибок нет, но и ничего не выводится:
Код AS3:
var values:Object = event.data;
				var term:Array = values.name;
				txt.text += event.data +"\n";
				txt.text += event.data.name.toString() +"\n";
				txt.text += term[0] +"\n";

Старый 18.12.2011, 22:38
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Завязывайте с этими библиотеками. Сразу не стоило связываться.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 18.12.2011, 23:03
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 9  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Да с удовольствием, но настолько не знаю предмет, чтобы самому принимать/отправлять кучу серверных данных.
Написал автору SWC, может пришлет файловую версию.

Старый 19.12.2011, 02:14
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
(fdb) help break
Set breakpoint at specified line or function.
Examples:
  break 87
    Sets a breakpoint at line 87 of the current file.
  break myapp.mxml:56
    Sets a breakpoint at line 56 of myapp.mxml.
  break #3:29
    Sets a breakpoint at line 29 of file #3.
  break doThis
    Sets a breakpoint at function doThis() in the current file.
  break myapp.mxml:doThat
    Sets a breakpoint at function doThat() in file myapp.mxml.
  break #3:doOther
    Sets a breakpoint at function doOther() in file #3.
  break
   Sets a breakpoint at the current execution address in the
   current stack frame. This is useful for breaking on return
   to a stack frame.
To see file names and numbers, do 'info sources' or 'info files'.
To see function names, do 'info functions'.
Abbreviated file names and function names are accepted if unambiguous.
If line number is specified, break at start of code for that line.
If function is specified, break at start of code for that function.
See 'commands' and 'condition' for further breakpoint control.
Дошли руки в документацию заглянуть
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:27.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.