Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.71
batex
0 / 0 / 0
Регистрация: 11.12.2009
Сообщений: 7
#1

exception : 0xC0000005: Access Violation - C++

02.08.2012, 11:44. Просмотров 2118. Ответов 2
Метки нет (Все метки)

Разработка идет по windows mobile 6. Возникла необходимость в определенном случае менять данные в памяти по адресу 0x02020000 cо смещение 0x4a. Написал в лоб:
C++
1
2
3
4
5
int offset = 0x4a;
int Addr = 0x02020000;
Addr += offset;
char * c = (char *) Addr;
*c = 0x1;
Выдает исключение: exception : 0xC0000005: Access Violation. Нет доступа к памяти. Попытался сделать через ReadProccessMemory и WriteProccessMemory. Вроде через эти функции можно писать в память другого процесса. Но для этого надо знать Handle процесса. Вопрос в следующем: Как узнать какому процессу принадлежит память(хотя есть такое ощущение, что это вообще реестр) или как получить доступ и писать в защищенную память?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.08.2012, 11:44     exception : 0xC0000005: Access Violation
Посмотрите здесь:

C++ Unhandled exception .. access violation
Ошибка Unhandled Exception, Access Violation C++
C++ Перегрузка assing operator. Unhandled exception at 0x103157aa (msvcr100d.dll) in 1exColonSynt_withColonSynt.exe: 0xC0000005: Access violation read
Ошибка: Unhandled exception at 0x772115de in TimeShift.exe: 0xC0000005: Access violation reading location 0x00041000. C++
Необработанное исключение по адресу 0x4050D302 в ConsoleApplication17.exe: 0xC0000005: Access violation (параметры: 0x00000008) C++
C++ WinAPI Ошибка "0xC0000005: Access violation" при вызове LookupAccountName
C++ Ошибка "Unhandled exception, Access violation writing location"
Ошибка raised exception class EAccessViolation with message 'Access violation at address 004011FA C++
0xC0000005: Access violation writing location C++
First chance exception at $77ADB09E. Exception class EAccessViolation with message 'Access Violation'. Process C++
Exception thrown at 0x77D75BCA (ntdll.dll): 0xC0000005: Access violation reading location 0x0000 C++
C++ Unhandled exception at 0x0F73DF62 | 0xC0000005: Access violation writing location

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Airhand
 Аватар для Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
04.08.2012, 13:29     exception : 0xC0000005: Access Violation #2
Нельзя так в лоб писать в любой винде. Память то защищённая и оно верно говорит "нет прав доступа".
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4253 / 2785 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
05.08.2012, 08:57     exception : 0xC0000005: Access Violation #3
Дело не в том, что так писать нельзя, а в том, что это бессмысленно. Таким образом ты обращаешся к памяти внутри своего сегмента, т.е. к памяти своей же программы. Ошибка возникает очевидно из-за того, что такой адрес не существует в твоей программе.
При адресации памяти адрес вычесляется с учетом значения, которое хранится в сегментном регистре (в данном случае это будет DS). В protected mode (в котором работает 32 битная винда) в сегментных регистрах лежат селекторы сегментных дескрипторов. Селектор - это индекс дескриптора в глобальной таблице дескрипторов (GDT), ее адрес находится в регистре GDTR. Чтоб получить линейный адрес (в общем случае он же физический, но есть исключения) нужно считать адрес из GDTR, прибавить к этом адресу наш селектор, потом в дескрипторе вычеслить адрес начала сегмента, и к этому адресу уже прибавить нужное смещение (в случае ТС это 0x02020000).
Вот, но это все не так просто, как кажется, поэтому WinAPI в помощь
Yandex
Объявления
05.08.2012, 08:57     exception : 0xC0000005: Access Violation
Ответ Создать тему
Опции темы

Текущее время: 03:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru