Сейчас на форуме: 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 —› Вопросы новичков —› Поиск кода в программе |