Здравствуйте, форумчане.
Мне нужен ваша помощь в решении задачи, с которой я не могу справиться уже несколько недель. Полагаю что мои навыки и опыт недостаточны для решения задач такого уровня самостоятельно, но я очень не хочу сдаваться.
Суть задачи: есть exe-файл созданный на labview 2010 (если я правильно понял) и нет исходников и авторов. Программа- наша очень старая разработка, и с точки зрения законности конфликта тут нет.
Программу нужно либо изменить либо переписать. Однако не все тонкости алгоритма ясны.
Используя https://github.com/mefistotelis/pylabview я получил набор SubVI и они в целом хорошо проименованы и общая структура прояснилась, но не полностью. SubVis можно пересобрать в новый проект (тут проблем нет, огромное спасибо mefistotelis, dadreamer и всем кто внёс вклад) . Однако блок схемы и лицевые панели почти везде удалены.
Конкретные вопросы:
1.Мне нужно понять, с какими параметрами одни SubVi вызываются из других SubVi. Как это сделать?
Я попытался прочитать(глазами) полученный XML через "readRSRC.py -x -vv -i 2" но не особо успешно - может есть где то описание как c ним работать? И как работать c созданными прядом bin и map файлами? (Я вот уже установил IDA и x32dbg, но опыта c ними нет.... не ясно как найти начало "функции" SubVi чтобы можно было посмотреть какие передаются аргументы.... и в IDA и в x64dbg...)
2. Можно ли подменить одни SubVi на другие и пересобрать весь проект? Я попытался - но была ошибка (что-то про ...is not executable... точно не помню но если нужно уточню). Идея была в том чтобы сделать SubVi c такими же входами и выходами и таким же именем, а внутри расположить оригинальное SubVi но все вызовы логировать в файл. А уж если бы можно было бы и все лицевые панели (UI) также "обернуть",,,,
3. Можно ли иным способом логировать все вызовы определённого SubVi другими SubVi в проекте чтобы понять c какими аргументами b когда они вызывались....может и даже кем ? (может e LabVIEW уже есть такой функционал а я изобретаю велосипед?)
Не умею сдаваться, для меня это крайне болезненно. Расчитываю на вашу помощь.
Как узнать с какими аргументами вызывается SubVi; подмена SubVi
-
Kosist
- expert
- Сообщения: 1235
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Как узнать с какими аргументами вызывается SubVi; подмена SubVi
Как говорится, "Работать надо не 12 часов, а головой.".
Если Вы уже несколько недель не могли решить эту задачу, то может лучше потратить время на переписание программы? Ведь хотите Вы того или нет, но Ваша задача нерешаемая. Разбирать екзешник, подменять виайки - зачем? Если Вы знаете, что делает программа - просто ее перепишите. Тонкости алгоритмов решите потом, при тестировании и использовании. Тем более, что если когда-то их решили, то и сейчас можно будет.
Мы делили апельсин - много наших полегло...
-
dadreamer
- professor
- Сообщения: 3872
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 10 раз
- Поблагодарили: 97 раз
- Контактная информация:
Re: Как узнать с какими аргументами вызывается SubVi; подмена SubVi
Можете спросить у автора в Issues, он охотно там отвечает. Мне этими картами пользоваться не доводилось. Вообще, так сходу открыть кодID_LV писал(а): ↑22 мар 2023, 16:431.Мне нужно понять, с какими параметрами одни SubVi вызываются из других SubVi. Как это сделать?
Я попытался прочитать(глазами) полученный XML через "readRSRC.py -x -vv -i 2" но не особо успешно - может есть где то описание как c ним работать? И как работать c созданными прядом bin и map файлами? (Я вот уже установил IDA и x32dbg, но опыта c ними нет.... не ясно как найти начало "функции" SubVi чтобы можно было посмотреть какие передаются аргументы.... и в IDA и в x64dbg...)



Именно этот способ работает, я только что проверил на простейшем приложении: саб-ВИ "сумма двух чисел", основнойID_LV писал(а): ↑22 мар 2023, 16:432. Можно ли подменить одни SubVi на другие и пересобрать весь проект? Я попытался - но была ошибка (что-то про ...is not executable... точно не помню но если нужно уточню). Идея была в том чтобы сделать SubVi c такими же входами и выходами и таким же именем, а внутри расположить оригинальное SubVi но все вызовы логировать в файл. А уж если бы можно было бы и все лицевые панели (UI) также "обернуть",,,,





Можно попробовать Remotely Debugging Executables in LabVIEW, если повезло и в параметрах билда стояла опция "Enable debugging". Если же нет, можно использовать Passing Data Between LabVIEW Executable Reference VI and a VI (пример). Я, правда, бряки не пробовал ставить, скорее всего, без дебага их нельзя будет поставить. Но можно читать значения контролов и индикаторов, симулируя какие-либо действия в исследуемой программе.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение