Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2017, 12:08   #21
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Я не понимаю, если у вас есть исходник программы, зачем искать что-то в памяти - можено же посмотреть что и куда пишется.
waleri вне форума Ответить с цитированием
Старый 27.04.2017, 17:02   #22
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
поэтому ваша программа и не пошла - защита включена.
но пошла на другой машине с чистым досом, и тут я понял что вообще дуб, посмотрел что самые нулевые адреса оперативной памяти имеют такие значения
Код:
00000000: D2 00 41 0A F4 06 70 00 16 00 95 06 F4 06 70 00
это 16сс данные начиная с адреса 0 и заканчивая адресом 00000009. А как мне написать код что бы прочитать эти адреса и вывести например в файл или неа экран эти значения, вернее как вывести это я знаю, не понимаю как в коже обратиться к эти ячейкам оперативной памяти и прочитать эти данные пусть даже в 16сс? Вообще не понимаю что писать?
седьмой вне форума Ответить с цитированием
Старый 27.04.2017, 17:06   #23
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
можено же посмотреть что и куда пишется
не могу разобраться там очень сложно, хотел зайти с другого конца, если не получится потом снова вернуться к коду, но что процесс затянулся чувствую, застрял и не туда и не сюда ( нет у меня опыта на с++) и не могу никому другому отдать писать эту программу, я один тут такой универсальный, который пишет на всех языках, которые у нас имеются, я не хвалюсь, просто на самом деле не на кого эту работу свалить и выход только один, разбираться дальше, уж как получится...
седьмой вне форума Ответить с цитированием
Старый 27.04.2017, 17:44   #24
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

В таком случае логичнее/быстрее/проще отдать заказ на фриланс или аутсорс...
p51x вне форума Ответить с цитированием
Старый 27.04.2017, 19:15   #25
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

C
Цитата:
Сообщение от седьмой Посмотреть сообщение
но пошла на другой машине с чистым досом, и тут я понял что вообще дуб, посмотрел что самые нулевые адреса оперативной памяти имеют такие значения
Код:
00000000: D2 00 41 0A F4 06 70 00 16 00 95 06 F4 06 70 00
это 16сс данные начиная с адреса 0 и заканчивая адресом 00000009. А как мне написать код что бы прочитать эти адреса и вывести например в файл или неа экран эти значения, вернее как вывести это я знаю, не понимаю как в коже обратиться к эти ячейкам оперативной памяти и прочитать эти данные пусть даже в 16сс? Вообще не понимаю что писать?
C нулевого адреса (помоему, нада освежить) расположена таблица векторов прерываний (всего из 256 по 4 байта помоему), это адреса, куда проц делает call (точнее вроде icall - снова не помню) в случае возникновения прерывания типа int 1.
На их основе реализовано ваще все, в т.ч. и таймеры и многозадачность в досе. Логично, что драйвер там чета писать и пользовать будет.
Более того, некоторые вектора та популярны, что проги перехватывают перехваченое, а потом без ребута обратно не восстановить (т.е. дебаг с промежуточными ребутами - такое норм).
Прерывания могут быть аппаратными (от платы) и программными.
Это выглдяит вполне логичным, что на каком-то аппаратном прерывании от платы стоит вызов на процедуру обработки сигнала драйвером. Именно так все и работает.

Последний раз редактировалось alexzk; 27.04.2017 в 19:22.
alexzk вне форума Ответить с цитированием
Старый 28.04.2017, 06:50   #26
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
В таком случае логичнее/быстрее/проще отдать заказ на фриланс или аутсорс...
не смешите, это не тот случай...
седьмой вне форума Ответить с цитированием
Старый 28.04.2017, 06:54   #27
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

...а да еще, процедура обработчика прерывания должна завершатся как iret
Там в борланд С++ был какойто модификатор названия функции типа interrupt, такая функция может быть повешена в таблицу...как это работает?
1. Читаете, что есть в таблице и запоминаете до ребута
2. Пишите туда свой адрес своей ф.
3. Из этой своей ф. делаете что нужно, и затем вызываете ф. из (1), которая там была.
alexzk вне форума Ответить с цитированием
Старый 28.04.2017, 06:59   #28
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
C нулевого адреса (помоему, нада освежить) расположена таблица векторов прерываний
это я все знаю, я писал аппаратный драйвер на ассемблере для сом порта по 7й и 8й ноге (пришел фронт с генератора, ушел ответ с другой ноги, задержка получилась порядка 10 мкс) , кстати я его тоже не знал (ассемблер), просто надо было и нашел все и программы и настройками сом порта разобрался и написал, это я к тому что на самом деле мне передавать работу некому... делать надо самому... Ну вот а эти адреса самые первые мне они не нужны просто я взял их что бы на них протестировать программу мне нужно в цикле прочитать значения по этим адресам, затем я могу расширить код и прочитать всю оперативную память и найти то что ищу , если оно там есть. Если не поможет, то так же думаю можно причитать и весь винт. А если и это не поможет то снова зароюсь в код или другой вариант, изменить себе алгоритм работы программы, выход всегда есть, просто профи наверно видят в чем я ошибаюсь, а я не вижу и действую методом тыка, но это тоже метод и он работает...
седьмой вне форума Ответить с цитированием
Старый 28.04.2017, 07:09   #29
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию

Цитата:
Сообщение от alexzk Посмотреть сообщение
прерывания должна завершатся как iret
вот мой драйвер для клавиатуры с iret , где то был и для сом порта не могу найти, но не суть, мне не нужны прерывания.
седьмой вне форума Ответить с цитированием
Старый 28.04.2017, 07:41   #30
седьмой
Форумчанин
 
Регистрация: 17.07.2012
Сообщений: 140
По умолчанию

Все, наконец то дошло, данные записываются видимо в саму плату, в ее оперативную память и поэтому при выключении программы данные постранично все сохраняюся именно там где они и были записаны, можно провести эксперимент выключить комп и данные все сотрутся и запишутся случайными значениями или не случайными, все зависит от того что туда записывает разработчик платы при ее инициализации. Но вопрос остается в силе, как в цикле на с++ прочитать данные из первых 10 адресов операционной памяти ПК?
седьмой вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Данные вводятся на веб странице, но хранятся в .... Ципихович Эндрю Общие вопросы Web 35 23.09.2016 08:10
Данные о температуре воздуха и количестве осадков за декаду апреля хранятся в массивах. Определить количество осадков... zzz99 Помощь студентам 8 13.03.2014 17:33
Байты или то, как хранятся данные RussDragon Общие вопросы C/C++ 10 11.06.2013 08:50
Дан массив, в котором хранятся данные о расписании поездов, определить поезда на станции (C++) nurtay1994 Общие вопросы C/C++ 1 29.04.2013 08:26
где хранятся данные при работе с dll ? xrob Общие вопросы Delphi 17 19.04.2013 23:18