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

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

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

Создано: 28 августа 2012 19:47
· Личное сообщение · #1

Интересует не взлом программы, а нужно ее допросить с пристрастием. Есть программа которая общается через COM-порт с неким устройством (ЧЯ - черный ящик). Используются стандартные функции винды для передачи в порт. Проблема в отсутствии ЧЯ. Подглядеть что отправляется в ЧЯ - нет проблем, но хочется узнать что ждет программа от ЧЯ. Что из отладочного софта в данном случае будет кошернее?




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 28 августа 2012 20:11 · Поправил: ZaZa
· Личное сообщение · #2

Странно! Если я тебе скажу: "Что есть такое ПАРАМ-ПАРАМ?". Что я должен от тебя услышать? Думаешь я знаю? Так дело обстоит и с твоим ЧЯ )) Можно лишь угадать, либо пытать ЧЯ...
Некоторые протоколы легко узнаваемы, но очень часто разработчики поступают так, как велит им сердце, тогда капец!
Из инструментов необходим сниффер COM-порта (Serial Port Monitor), это минимум...

-----
One death is a tragedy, one million is a statistic.




Ранг: 397.0 (мудрец), 179thx
Активность: 0.170.1
Статус: Участник

Создано: 28 августа 2012 20:28
· Личное сообщение · #3

gemini cut?

-----
...или ты работаешь хорошо, или ты работаешь много...




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

Создано: 28 августа 2012 20:34
· Личное сообщение · #4

ЧЯ нету, иначе и проблемы небыло-бы. Протокол есессно свой. Хэндшейк вижу, буду смотреть ollydbg что оно ждет.




Ранг: 158.5 (ветеран), 219thx
Активность: 0.120.01
Статус: Участник

Создано: 28 августа 2012 20:44
· Личное сообщение · #5

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

-----
One death is a tragedy, one million is a statistic.




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

Создано: 28 августа 2012 21:19
· Личное сообщение · #6

Можно, но нудно. Как обычно - хочется побыстрее.



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

Создано: 28 августа 2012 21:28
· Личное сообщение · #7

tester500
А побыстрее не получится. Если черный ящик - не хардверная защита программы, а делает какие-то неизвестные действия, о которых программа не знает, ничего сделать нельзя. Да и в случае хардверной защиты - тоже сомнительно, ибо, скорее всего, тогда в ЧЯ была зашита важная часть проги, которую не восстановить без ЧЯ.

Максимум, что получится - отреверсить протокол и посмотреть, что программа делает с данными. Типа, если ЧЯ - датчик какого-нибудь уровня, то если прога из значения вычитает 100 и делит на 1000, можно считать, что значения датчика лежат в диапазоне (100; 1100). А может быть, прога делает что-то хитрое, и ей нужна точность только до 3го знака после запятой.



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

Создано: 28 августа 2012 23:36 · Поправил: tester500
· Личное сообщение · #8

ЧЯ не защита, что делает известно. Сначала программа напрямую управляла внешним устройством через ком-порт, дергая пины порты на выход и опрашивая пины на вход подключенные к 4 датчикам напрямую (был преобразователь rs232-> ttl). Потом было то-же самое тока через USB->COM конвертер. Затем был создан ЧЯ, который хотя и работает через USB, но обмен с ним идет через обычный COM-порт. В ЧЯ грузят определенную последовательность "че-делать", а тот уже сам следит за датчиками и дергает сигналом в нужный момент. Хочется сделать свой ЧЯ, но нужно знать протокол обмена. Программа поддерживает оба типа работы - сначала идет опрос ЧЯ (хэндшейк), если нет ответа то предполагается что подключен самый первый тип адаптера и программа переходит на опрос порта попиново. Первый адаптер сделать как два пальца ..., но у него куча минусов. Вобщем хочу сваять умный адаптер.
PS: программ две, одна как говно мамонта - но у нее отличный интерфейс. Вторая поновей - но без рюшечек. У каждой программы свой ЧЯ и свой протокол работы с ним. Свой третий городить неохота.
PPS: Датчиков четыре, никаких "третий знак после запятой", только TTL 0-1.




Ранг: 462.8 (мудрец), 468thx
Активность: 0.280
Статус: Участник
Only One!

Создано: 28 августа 2012 23:53
· Личное сообщение · #9

А не проще использовать сниффер COM-порта?

-----
aLL rIGHTS rEVERSED!




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

Создано: 29 августа 2012 00:16
· Личное сообщение · #10

OnLyOnE
Читай внимательнее, у него нету черного ящика.
Если ЧЯ ничего не отвечает, то можно попробовать. Но всё равно реверс проги нужен, либо можно USB->COM сэмулировать, и почитать, что она туда пишет.
И еще, если я не совсем забыл, что такое COM, RS232 и TTL, то уровни кодируют биты, плюс стопы, а биты - это любые данные. Включая те, которые можно на 1000 поделить. А между RS232 и TTL вообще отличие только в уровнях? (3.3 или 5 вольт), не?

Кроме того, для теста всё равно придется находить ЧЯ какой-то из прог, так не проще ли сразу?



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

Создано: 29 августа 2012 00:52 · Поправил: tester500
· Личное сообщение · #11

RS232: мин/макс -12в/+12в в инверсии, TTL макс +5в. Тока это тех. подробности не к месту. Да и настройка порта тоже, это все стандартное. Главное - программа принимает с порта байт(ты), какие-ей нужны (что она ждет?) .Прием с порта можно сделать двумя способами: программный (опрашивая регистры порта) или аппаратный (повесить обработчик на прерывание). Разбираюсь что использует программа.



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 30 августа 2012 21:32 · Поправил: tundra37
· Личное сообщение · #12

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

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

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

Создано: 31 августа 2012 16:48
· Личное сообщение · #13

Чтение\запись в устройства COM делаются так же как и чтение\запись файлов, только пути \.\com?
У тебя 2 пути
1. Берёшь снифер и програмку считающую до 65000 и пишущую это в твой порт по байтно смотришь что порт тебе отвечает
(только надо сделать что бы вначале 1 байт писался потом 2 и так далее )

2. Берешь отладчик брякаешь все "CreateFileA" и видишь структуру на которую ссылается эта ф-ция,
если прога управляется больше чем одним байтом то должны быть строки для сравнения команды с полученой. а если одним то должен быть кейс и его сложно не заметить.

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

в первом случае есть такая прога ComVC погугли правда очень старая она
а во втором ида

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

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

Создано: 04 сентября 2012 00:12 · Поправил: tester500
· Личное сообщение · #14

Чтение порта через "ReadFile", в олле оно видно (вместе с буфером). А вот дальше ...
никак не пойму с чем оно там сверяется. Понатыкано "MSVCRT20.vsprintf","KERNEL32.OutputDebugStringA", отвлекает. Вроде сверка идет посимвольно, с одновременной проверкой кол-ва. Если не совпадает, то отлуп "Устройство не найдено"
PS: программа не секретная --> тут <--



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 15 сентября 2012 16:08
· Личное сообщение · #15

Вы бы не темнили, а сказали бы, что у вас интерфейс к вязальной машине сдох. Здесь вы решения не найдете. Точнее здесь точно будет дороже. Сами вы вряд ли чего сделаете. Если бы машина не была бы ЧЯ, вы вряд ли бы сюда отбратились. А как только вы разберетесь с машиной, то остальное будет сделать проще гораздо и не обязательно фирменную разработку повторять.



Ранг: 397.0 (мудрец), 179thx
Активность: 0.170.1
Статус: Участник

Создано: 15 сентября 2012 18:47
· Личное сообщение · #16

tester500

часть команд есть в RKC1000 Operation Manual (English)

-----
...или ты работаешь хорошо, или ты работаешь много...




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

Создано: 23 сентября 2012 21:00 · Поправил: tester500
· Личное сообщение · #17

tundra37 пишет:
Вы бы не темнили, а сказали бы, что у вас интерфейс к вязальной машине сдох


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

BfoX пишет:
часть команд есть в RKC1000 Operation Manual (English)


KRC-1000 это Brother, не в тему. Там протокол уже давно известен и описан.

PS: По теме - хэндшейк уже разобрал, делаю эмулятор интерфейса.


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


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