| Сейчас на форуме: asfa, bartolomeo (+7 невидимых) | 
| eXeL@B —› Вопросы новичков —› Поиск кода в программе | 
| Посл.ответ | Сообщение | 
| 
 | 
Создано: 19 февраля 2012 18:57 · Поправил: niar42  · Личное сообщение · #1 Здравствуйте. Имеется программа (файл приклеплен). Она помимо всего прочего в процессе работы пишет своё время работы с момента запуска в формате чч.мм.сс. Помогите, пожалуйста, найти участок кода, за это отвечающий. Точнее меня интересует способ, каким она получает время. P.S. Программа под дос, причем не факт что 16-битная. (Но она не запустится, так как она используется на каком-то специализированном одноплатном компьютере и использует его низкоуровневые фишки.) Но в целом программа обычная досовская. файл удален ![]()  | 
| 
 | 
Создано: 19 февраля 2012 19:34  · Личное сообщение · #2  | 
| 
 | 
Создано: 19 февраля 2012 19:40  · Личное сообщение · #3  | 
| 
 | 
Создано: 20 февраля 2012 03:57  · Личное сообщение · #4 niar42 yagello верно указал! ето чистая ДОС программа, насколько я помню под дос 32 биток не делали в реал моде? при запуске - страшно ругается: ![]() [16 bit MS-DOS Subsystem] C:\Windows\system32\cmd.exe - ttt.exe The NTVDM CPU has encountered an illegal instruction. CS:0f74 IP:9fe8 OP:0f 00 00 81 65 Choose 'Close' to terminate the application. [Close] [Ignore] niar42 пишет: она используется на каком-то специализированном одноплатном компьютере и использует его низкоуровневые фишки и как ето прикажите дебажить? Тут вижу два варианта - или DosBox под виндой или ДОСя под ВМ P.S. Один из древних файланализаторов подсказал что linker: Borland TLINK 7.1 sizes: header 28, relocs 4, empty 480, image 179224, overlay 0 bytes ![]()  | 
| 
 | 
Создано: 20 февраля 2012 06:04  · Личное сообщение · #5 Не надо это дебажить. чисто по дизассемблерному коду нельзя найти нужный кусок кода? по идее там должны быть какие то деления на 60 и т.п., преобразование в десятичную СС... Там естб несколько похожих участков, но я не уверен в них. в ассемблере я слабак, поэтому решил обратиться сюда. строка часов в формате чч.мм.сс, я искал участки, где добавляется точка, но не нашел. потом в hex режиме нашел строку "." 00 "." 00, но не нашел ссылки на нее... ![]()  | 
| 
 | 
Создано: 21 февраля 2012 05:43  · Личное сообщение · #6  | 
| 
 | 
Создано: 21 февраля 2012 06:32  · Личное сообщение · #7 niar42 пишет: Точнее меня интересует способ, каким она получает время. Порылся и нашёл код под дос для получения времени Code: 
 ----- Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли. ![]()  | 
| 
 | 
Создано: 21 февраля 2012 07:07  · Личное сообщение · #8  | 
| 
 | 
Создано: 21 февраля 2012 22:16  · Личное сообщение · #9  | 
| 
 | 
Создано: 21 февраля 2012 22:58  · Личное сообщение · #10  | 
| 
 | 
Создано: 22 февраля 2012 16:36  · Личное сообщение · #11  | 
| 
 | 
Создано: 22 февраля 2012 23:44 · Поправил: Hexxx  · Личное сообщение · #12  | 
| 
 | 
Создано: 23 февраля 2012 12:25  · Личное сообщение · #13  | 
| 
 | 
Создано: 23 февраля 2012 16:15  · Личное сообщение · #14  | 
| 
 | 
Создано: 23 февраля 2012 18:14  · Личное сообщение · #15 Только я один не вижу связи между сообщениями? Я говорю, программа при запуске выводит текущее время работы компьютера (с момента загрузки). Потом мне отвечают, что берёт она его из RTC, которые, по словам Hexxx, "показывают реальное время, обычные часы и все". А потом приплелась какая-то батарейка, которая нужна как раз наоборот, чтобы питать часы, пока комп выключен... Я новичок на этом форуме, так что извиняюсь заранее. Но если тут какой-то особый диалект русского языка используется -- просветите, пожалуйста. ![]()  | 
| 
 | 
Создано: 23 февраля 2012 19:20 · Поправил: Maximus  · Личное сообщение · #16  | 
| 
 | 
Создано: 23 февраля 2012 23:37 · Поправил: Hexxx  · Личное сообщение · #17 niar42 пишет: Только я один не вижу связи между сообщениями? Я говорю, программа при запуске выводит текущее время работы компьютера (с момента загрузки). Потом мне отвечают, что берёт она его из RTC, которые, по словам Hexxx, "показывают реальное время, обычные часы и все". А потом приплелась какая-то батарейка, которая нужна как раз наоборот, чтобы питать часы, пока комп выключен...Я новичок на этом форуме, так что извиняюсь заранее. Но если тут какой-то особый диалект русского языка используется -- просветите, пожалуйста. ну так вот эти часы, которые питает батарейка - это часы реального времени, ака RTC. На то они и часы реального времени, чтобы после отключения компа продолжать считать реальное время. Есть программный интерфейс для того чтобы прочитать их значение, 70-й порт. аптайм - это как раз разница значения RTC прочитанного на старте и прочитанного потом. Хотя при желании можно считать аптайм по регистру TSC. ----- Реверсивная инженерия - написание кода идентичного натуральному ![]()  | 
| 
 | 
Создано: 23 февраля 2012 23:54  · Личное сообщение · #18 Hexxx пишет: аптайм - это как раз разница значения RTC прочитанного на старте и прочитанного потом Я же говорю, что программа не имеет никаких резидентов и пр., стартующихся при запуске. Комп загрузился, через 10 минут я запускаю прогу и она мне пишет "00:10:00". В коде есть участок, где она что-то делает с 70-м портом. ![]()  | 
| 
 | 
Создано: 23 февраля 2012 23:55  · Личное сообщение · #19  | 
| 
 | 
Создано: 24 февраля 2012 09:15  · Личное сообщение · #20  | 
| 
 | 
Создано: 24 февраля 2012 09:23 · Поправил: Hexxx  · Личное сообщение · #21 Есть еще хацкерский способ получения времени в досе: Прочитать дату создания файла с именем NUL. NUL - это виртуальный файл, который дос создает при старте. Так что разница даты его создания и значение RTC - это как раз uptime. По идее можно читать дату создания любого такого виртуального устройства: PRN, AUX, CON ----- Реверсивная инженерия - написание кода идентичного натуральному ![]()  | 
| eXeL@B —› Вопросы новичков —› Поиск кода в программе | 









 Для печати