eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: (+1 невидимый пользователь)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Основной форум —› Исследование Qt программм
Посл.ответ Сообщение

Ранг: 52.1 (постоянный)
Статус: Участник

Создано: 28 ноября 2014 18:36 · Поправил: Wyfinger New!
Цитата · Личное сообщение · #1

Добрый день друзья!

Есть простая программа-клиент к умному браслету Iwown Smart Bracelet, http://ge.tt/9lXsKR52/v/0.
(На сайте производителя сейчас этой программы не найти).

Браслет вообще говоря должен общаться со смартфоном по BLE 4, но может также работать по USB для чего при подключении ставится драйвер виртуального COM порта (драйвер кстати от идентичного браслета Vidonn).
Т.е. при работе по USB фактически общение ПК и браслета происходит по COM.

Я успешно разобрал протокол работы браслета Vidonn (его программа для ПК написана на .Net, там все просто), но не могу разобраться с Iwown. Приложение написано на Qt. Вижу библиотеку QtSerialPort, смотрел примеры работы с ней в интернете, но IDA и Olly показывают какие-то адовые функции, экспортируемые этой библиотекой.

Мне нужно найти только функции send/write и read, которые пишут в / читают из в COM порта.

Уже пробовал на все экспортируемые этой библиотекой функции ставить бряки, бестолку.

Подскажите пожалуйста в каком направлении копать. Возможно есть какие-то специальные инструменты для анализа программ на Qt или сигнатуры для IDA (я пытался создать их сам в FLAIR, но опыта у меня в этом ноль..). Как например найти обработчик клика по кнопке?

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

Заранее спасибо за помощь.


Ранг: 747.9 (! !)
Статус: Участник
bytecode!

Создано: 28 ноября 2014 19:20 New!
Цитата · Личное сообщение · #2

Сам с QT дел тесных не имел, но вот что с ходу нагуглилось, может что-то из этого ещё не видели:
--> Link <--
--> Link <--
--> Link <--
--> Link <--


Ранг: 302.5 (мудрец)
Статус: Участник

Создано: 28 ноября 2014 19:21 New!
Цитата · Личное сообщение · #3

Qt прога как юзает, статически или динамически?


Статус: Пришелец

Создано: 28 ноября 2014 20:02 New!
Цитата #4

Wyfinger пишет:
Уже пробовал на все экспортируемые этой библиотекой функции ставить бряки, бестолку.

Этой, это какой простите?

Code:
  1. .idata:004C0E00 ; Imports from QtSerialPort.dll
  2. .idata:004C0E00 ;
  3. .idata:004C0E00                 extrn _ZN15QSerialPortInfo14availablePortsEv:dword
  4. .idata:004C0E00                                         ; CODE XREF: sub_4705AC+2Ep
  5. .idata:004C0E00                                         ; DATA XREF: sub_4705AC+2Er
  6. .idata:004C0E04


Добавлено спустя -45 минут
Так, туплю. QtSerialPort это QIODevice, но в данном случае они используют его лишь для того, чтобы убедиться, что нужный COM порт открывается с нужными правами. Само чтение происходит внутри pm1.dll - экспортируемая uart_open, например, открывает порт и настраивает его.

Code:
  1. .text:0046FCF7                 mov     [esp], ebx
  2. .text:0046FCFA                 call    pm_getPMStat
  3. .text:0046FCFF                 test    al, al

Вот чтение данных из COM-порта.

P.S. На будущее. Для работы с COM-портами Qt, как и любая другая библиотека не использует магии. Должен вызываться обычный ReadFile, можно было от него плясать и вы бы сразу все нашли.

Добавлено спустя -33 минут
Wyfinger пишет:
Как например найти обработчик клика по кнопке?

Для начала, самый важный инструмент, как всегда - голова. Чтобы понимать как найти обработчик клика по кнопке, неплохо взглянуть на API самого Qt.

Вот вам для домашней работы:
Code:
  1. .rdata:00497751                                         ; .text:0046D94Ao
  2. .rdata:00497767 a2clicked       db '2clicked()',0       ; DATA XREF: sub_46D4AC+12Eo
  3. .rdata:00497767                                         ; sub_46D4AC+15Eo ...

Что такое сигналы и слоты?
Почему в начале строки стоит '2'?
Как устроена QObject::connect изнутри?

Готовый ответ: 0x470E94 - поставьте сюда точку останова.

Ранг: 52.1 (постоянный)
Статус: Участник

Создано: 29 ноября 2014 05:57 New!
Цитата · Личное сообщение · #5

Спасибо, похоже нашел то что нужно.
 eXeL@B —› Основной форум —› Исследование Qt программм

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS