| 
			| 
					
						| IgelImNebel 
								Интересующийся    Offline | 
								|  | «  : 14-11-2017 10:37 »  |  | 
 
 Всем доброго времени суток!
 Ситуация следующая: имеется некая программка для мониторинга и дистанционного управления неким (это секрет) оборудованием. Всё что о ней известно это ее размер (580 КБ (593 978 байт)); Состоит из одного файла .exe; Год поставки на объект вместе с оборудованием - 2001; Работала порядка 15 лет под управлением Windows 95; Установки не требует.
 
 А теперь о проблеме: при запуске на Win7 загружает ЦП на 100%. Запуск в любом доступном режиме совместимости не устраняет проблему.
 
 Суть вопроса: правильной ли я дорогой иду пытаясь решить проблему? Может кто сталкивался с подобной проблемой и что-то сможет посоветовать?
 
 Дорога избранная мною:
 1) Попытаться декомпилировать программу во всех бесплатных декомпиляторах которые удастся найти и скачать;
 2) Если найдется декомпилятор распознающий эту стерлядь (это рыба такая) то скомпилировать полученный код под нужную ОСь;
 3) Если будет работать хорошо то и славно. Если нет то отдебажить (извините за выражение) её по-полной и опять скомпилировать;
 4) А дальше по обстоятельствам.
 
 P.S. Доселе не пользовался декомпилятором и не представляю, что получится на выходе. Да и программист из меня никакой, чтобы искать в незнакомой программе  подобного рода баги. Именно поэтому решил сперва задать вопрос на форуме в надежде на подсказку знающего человека - вдруг вообще я не в ту степь попёр и мне не нужно так заморачиваться?
 P.P.S. Программка реально нужная на объекте, старый комп под Win95 потух, а новый (самосборный из старых деталек) не потянет параллельно виртуалку с еще одной виндой.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Ochkarik | 
								|  | « Ответ #1 : 14-11-2017 11:07 »  |  | 
 
 по какому аппаратному интерфейсу программа  управляет этим оборудованием ? |  
						| 
								|  |  
								|  |  Записан | 
 
 RTFM уже хоть раз наконец!     :[ ну или хотя бы STFW ... |  |  | 
	| 
			| 
					
						| Вад | 
								|  | « Ответ #2 : 14-11-2017 11:17 »  |  | 
 
 Если приложение под виртуалкой работоспособно - я бы следовал пути "работает - не ломай": скорее всего, дешевле будет найти/модернизировать комп, тянущий виртуалку (не так уж много там и надо), или отдельный для Win95, чем тратить время на декомпиляцию и прочие танцы с бубном. |  
						| 
								|  |  
								| « Последнее редактирование: 14-11-2017 11:20 от Вад » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #3 : 14-11-2017 15:05 »  |  | 
 
 virtualbox  вроде должон вытянуть, и не так много жрет памяти,  |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| Aether | 
								|  | « Ответ #4 : 14-11-2017 15:15 »  |  | 
 
 Дорога избранная мною:1) Попытаться декомпилировать программу во всех бесплатных декомпиляторах которые удастся найти и скачать;
 ...
 
 Цена этой дороги скорее всего будет выше стоимости целого старого, но рабочего ПК. Оборудование случаем LPT и COM порты не использует? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| darkelf 
								Молодой специалист    Offline | 
								|  | « Ответ #5 : 15-11-2017 07:40 »  |  | 
 
 IgelImNebel, Насколько я знаю, декомпилятор, а вообще - дизассемблер, не выполнит Вам портирование под новую ОС, в лучшем случае Вы получите после трансляции полученного исходника на языке ассемблера - идентичный до байта exe-файл. Самый простой вариант Вам уже подсказали - лучше попытаться запустить в виртуальной машине. Гораздо более сложный, имхо, вариант - дизассемблировать, разобраться что оно делает, и написать нужный функционал с нуля. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| IgelImNebel 
								Интересующийся    Offline | 
								|  | « Ответ #6 : 15-11-2017 15:08 »  |  | 
 
 по какому аппаратному интерфейсу программа  управляет этим оборудованием ?
 Дорога избранная мною:1) Попытаться декомпилировать программу во всех бесплатных декомпиляторах которые удастся найти и скачать;
 ...
 
 Цена этой дороги скорее всего будет выше стоимости целого старого, но рабочего ПК. Оборудование случаем LPT и COM порты не использует?Да-да тот самый COM (RS-232)  А это важно? Программа запускается на любом другом компьютере. И и на любом сразу ЦП грузит на 100%. Не важно даже подключаем ли её к целевому оборудованию.  |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| IgelImNebel 
								Интересующийся    Offline | 
								|  | « Ответ #7 : 15-11-2017 15:24 »  |  | 
 
 IgelImNebel, Насколько я знаю, декомпилятор, а вообще - дизассемблер, не выполнит Вам портирование под новую ОС, в лучшем случае Вы получите после трансляции полученного исходника на языке ассемблера - идентичный до байта exe-файл. Самый простой вариант Вам уже подсказали - лучше попытаться запустить в виртуальной машине. Гораздо более сложный, имхо, вариант - дизассемблировать, разобраться что оно делает, и написать нужный функционал с нуля.
 Честно признаюсь я в данной теме не разбираюсь, поэтому поправьте если ошибаюсь - при дизассемблировании получается набор команд на ассемблере, а при декомпиляции должен получиться код на языке высокого уровня на котором он был написан (пусть и не в исходной форме как писал разработчик и не столь удобочитаемый). Например если программа была скомпилирована с языка Си то при декомпиляции декомпилятором именно для этого языка и получится на выходе что-то на том же Си?  Моя мысль была такой: "а если загрузка ЦП это не баг программы (ведь не грузит на 100% под win95), а особенность её работы под управлением ОС? Разные версии ОС имеют свои особенности, которые наверняка учитывают компиляторы. Следовательно если исходник скомпилировать по новой,  свежим компилятором, то может что-то измениться, что позволяет программе так забивать запросами камень." |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Aether | 
								|  | « Ответ #8 : 15-11-2017 18:30 »  |  | 
 
 Да-да тот самый COM (RS-232) А это важно?
 
 Бывает важно, некоторые программы требуют присутствия именно COM порта, размещённого непосредственно на материнской плане. И не поддерживают мосты, например, вида USB<->RS-232 или PCI<->RS-232. а при декомпиляции должен получиться код на языке высокого уровня на котором он был написан (пусть и не в исходной форме как писал разработчик и не столь удобочитаемый).
 Про декомпиляцию слышу впервые, и не очень верю в её успех. Теоретически, код на ассемблере можно представить в виде "С" формата, однако чтение такого кода будет ещё более сложным, чем читать исходный код на ассемблере. Одна работа с флагами во что может вылиться, да и обозначения переменных без привязки к их сущности только запутает дело. В проблеме можно разобраться, потратив неопределённо большое количество сил и времени на проработку. Старый ПК стоить может крайне не дорого, предположим, 5К, некоторые люди столько зарабатывают за день. В Tiny модели памяти формата *.com с максимальным размером в 64 КБ можно ковыряться не одну неделю. Иногда дешевле заказать разработку продукта заново. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Ochkarik | 
								|  | « Ответ #9 : 15-11-2017 22:04 »  |  | 
 
 IgelImNebel, винда x32 или x64? запускали с правами администратора?
 кстати программа виндовая? точно не дос?) (на всякий случая - я уж забыл как там оно было в 95том с портами i/o )
 тоже встречал, что не все любят работать с ком портами через мосты. как ком порт Был и теперь реализован физически? USB шнурок, плата, встроенный?
 настройки порта?
 PS может действительно проще найти старый комп с 95той виндой и не тратить время?) декомпиляция... не стоит оно того ИМХО)
 |  
						| 
								|  |  
								|  |  Записан | 
 
 RTFM уже хоть раз наконец!     :[ ну или хотя бы STFW ... |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #10 : 15-11-2017 22:58 »  |  | 
 
 Я так понимаю, что программулина напрямую лезет к адресам порта, миную системные настройки.А может все же нет?
 Если она образца 2000, то там уже и xp была, и 98-ая
 А может там вообще crt-шная либа доступа к видео?
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| IgelImNebel 
								Интересующийся    Offline | 
								|  | « Ответ #11 : 16-11-2017 03:22 »  |  | 
 
 Огромное спасибо за подсказки и информацию. На следующей смене поспрашиваю мужиков,  что и как там работает, попробуем запустить с подключением (хотя это они вероятно в первую очередь пробовали). Насчёт того для дос или нет она -  не знаю.
 Но скорее всего не новее 95го ибо внедряют инновации на объект медленно и уже проверенные, дабы 100% работало.
 По поводу заказа обновлённого ПО -  компании которая выпускала оборудованип уже давно нет, следовательно и поддержки оного. Так бы не пытались своими силами решить.
 
 Как будут какие-либо новые подробности - напишу.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #12 : 16-11-2017 07:31 »  |  | 
 
 Помню, уже в 2004-м были трудности поставить 95-ую винду на современное железо тех лет, да и нафиг эта падучая жуть, когда уже был XP. У нас тоже было ПО для настройки мультиплексоров SDH, которое на 98 даже не запускалось. VMWare решило все проблемы. Сегодня систем виртуализации много больше. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| IgelImNebel 
								Интересующийся    Offline | 
								|  | « Ответ #13 : 21-11-2017 04:05 »  |  | 
 
 В общем со всеми подключениями и правами администратора конечно-же пробовали и до меня.А программа,  говорят,  скорее всего под дос деланая.
 В общем видимо с виртуалкой что-то придумывать будем.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #15 : 21-11-2017 21:37 »  |  | 
 
 DosBox — эмулятор. Т.е. работает много медленнее, чем вируталка (при наличии поддержки виртуализации в ядре). |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| Ochkarik | 
								|  | « Ответ #16 : 22-11-2017 07:18 »  |  | 
 
 RXL, в вики и virtualBox эмулятором обозван в статье) на самом деле а зачем досу виртуалка нужна? медленнее - понятие отностиельное, может программе будет достаточно.
 PS там кстати скорость по умолчанию занижена. и режим эмуляции можно поменять.
 |  
						| 
								|  |  
								| « Последнее редактирование: 22-11-2017 10:54 от Ochkarik » |  Записан | 
 
 RTFM уже хоть раз наконец!     :[ ну или хотя бы STFW ... |  |  | 
	| 
			| 
					
						| Aether | 
								|  | « Ответ #17 : 22-11-2017 14:05 »  |  | 
 
 Вопрос: какой из методов отобразит фактические порты на пространство портов DOS? То есть, предположим, у Вас на ПК нет непосредственно установленных портов:COM1: I/O port 0x3F8, IRQ 4
 COM2: I/O port 0x2F8, IRQ 3
 COM3: I/O port 0x3E8, IRQ 4
 COM4: I/O port 0x2E8, IRQ 3
 , но есть плата PCI-e, которая использует драйвер Windows, который сам по себе пространство портов МП не затрагивает. Устройство COM1 в Windows средствами WINAPI как бы есть, а порт 0x3F8 не отвечает, и программа в режиме V86 не работает.
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| darkelf 
								Молодой специалист    Offline | 
								|  | « Ответ #18 : 22-11-2017 14:26 »  |  | 
 
 Тут, пишут, что можно настроить гостевой COM-порт, на нужный реальный. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Aether | 
								|  | « Ответ #19 : 22-11-2017 15:15 »  |  | 
 
 Тут, пишут, что можно настроить гостевой COM-порт, на нужный реальный. Тогда решение подходит, единственное, что смущает, как в принципе такое отображение происходит? В ранних х86, если я правильно помню, линии портов и памяти были одни и те же, просто инструкции "IN" и "OUT" выставляли на специальной линии флаг, что значения на шине идут не в память, а в физическое устройство. Тут же получается, что устройства-то нет. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #20 :  22-11-2017 20:26 »   |  | 
 
 VirtualBox, при наличии аппаратной поддержки виртуализации, выполняет код без потерь (кроме эмуляции железа). Иначе, конечно, нужна эмуляция. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	|  |