информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеГде водятся OGRыСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Google заблокировала 2 с лишним... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Как прибить ветку, я же не Killer? 07.05.04 02:10  Число просмотров: 1254
Автор: kisoff Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Спасибо за помощь, в особенности DPP. А насколько я
> знаю и
> > умею в DOS peek() читает читает определенную ячейку
> памяти
> > в каком-то сегменте. Мне проще было пользоваться
> peek(),
> > чем указателями (в которых я плохо разбираюсь), а с
> peek()
> > все просто:
> >
> > int a = peek(сегмент, смещение);
> >
> > и в а содержимое ячейки .
> В win32 environment нету никаких сегментов. И далеко не по
> любому адресу можно читать память.
> ЗЫ а ветку эту сетаки прибей.
Я не умею пибивать ветки.
<programming>
[C++] Спасибо за ответы 06.05.04 23:09   [amirul]
Автор: kisoff Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Спасибо за помощь, в особенности DPP. А насколько я знаю и умею в DOS peek() читает читает определенную ячейку памяти в каком-то сегменте. Мне проще было пользоваться peek(), чем указателями (в которых я плохо разбираюсь), а с peek() все просто:

int a = peek(сегмент, смещение);

и в а содержимое ячейки .
->beginners 07.05.04 10:25  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
Осталось в плоской модели памяти определить только требуемые... 07.05.04 01:30  
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
> Мне проще было пользоваться peek(),
> чем указателями (в которых я плохо разбираюсь), а с peek()
> все просто:
>
> int a = peek(сегмент, смещение);
>
> и в а содержимое ячейки .

Осталось в плоской модели памяти определить только требуемые сегмент и смещение.
Я именно хочу прочитать ячейку в 'C++Builder 5'. 07.05.04 02:18  
Автор: kisoff Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Мне проще было пользоваться peek(),
> > чем указателями (в которых я плохо разбираюсь), а с
> peek()
> > все просто:
> >
> > int a = peek(сегмент, смещение);
> >
> > и в а содержимое ячейки .
>
> Осталось в плоской модели памяти определить только
> требуемые сегмент и смещение.
Я именно хочу прочитать ячейку в 'C++Builder 5'.
Попробовал через указатели и __asm{} читать ячейку, компиляцию проходит,
а при Runing'e дойдя до инструкции чтения ячейки пишет:

"Access violation at address 004016DB in module 'SomeProject.exe'.
Read of address 00000411."

Здесь 004016DB без понятия чей адрес (вероятно какой-то Win'довский),
SomeProject - это мой файл, а 00000411 - ячейка которую я читаю.

Можно ли с этим как-то борться или с Win'дами бороться бесполезно?! ;)
А зачем это все надо? 07.05.04 10:18  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 07.05.04 10:19  Количество правок: 1
<"чистая" ссылка>
> Я именно хочу прочитать ячейку в 'C++Builder 5'.

Метод работы с памятью не зависит ни от того Билдер ли это или нет, а от версии тем более.
Максимум что может быть - это не будет каких-либо библиотечных функций. Значит они либо не нужны, либо теряют смысл под этой операционной системой.

> Попробовал через указатели и __asm{} читать ячейку,
> компиляцию проходит,
> а при Runing'e дойдя до инструкции чтения ячейки пишет:
>
> "Access violation at address 004016DB in module
> 'SomeProject.exe'.
> Read of address 00000411."
>
> Здесь 004016DB без понятия чей адрес (вероятно какой-то
> Win'довский),

Адрес кода того места программы, в котором происходит РанТайм ошибка.

> SomeProject - это мой файл, а 00000411 - ячейка которую я
> читаю.
>
> Можно ли с этим как-то борться или с Win'дами бороться
> бесполезно?! ;)

Что хочется-то, зачем нужны данные этой ячейки памяти?

ПС: А плоская от страничной модели памяти ничем не отличается с точки зрения пользовательской программы.
А про сегменты надо все-равно забыть.
Я именно хочу прочитать ячейку в 'C++Builder 5'. 07.05.04 05:58  
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
Оставь эту идею, со смещением и адресом сегмента. Это уже не нужно.
Я именно хочу прочитать ячейку в 'C++Builder 5'. 07.05.04 02:55  
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 07.05.04 06:17  Количество правок: 1
<"чистая" ссылка>
Помимо того что написал dl могу тока еще сказать такую штуку что в win32 environment у каждого процесса свое адресное пространство. Так что если ты перепишешь какой нить байт в своем процессе по какому нить адресу в другом процессе байт который находиться по тому же самому адресу не поменяеться. Да и до привычных по ДОСу адресов памяти устройств ты не достучишься из User-mode. В адресном пространстве твоего процесса их попросту нет.

ЗЫ а ветки прибиваються путем открытия своего сообщения и нажатия линка <удалить>. Еще там же ветку мона закрыть. И вообще ртфм описание форума).
без шансов 07.05.04 02:34  
Автор: dl <Dmitry Leonov>
Отредактировано 07.05.04 02:36  Количество правок: 1
<"чистая" ссылка>
> "Access violation at address 004016DB in module
> 'SomeProject.exe'.
> Read of address 00000411."
> Здесь 004016DB без понятия чей адрес (вероятно какой-то
> Win'довский),
> SomeProject - это мой файл, а 00000411 - ячейка которую я
> читаю.
> Можно ли с этим как-то борться или с Win'дами бороться
> бесполезно?! ;)

Стоит сначала почитать про организацию памяти в Win32. Вообще-то младшие 4к в Win'9x (т.е. вплоть до FFF) и младшие 64к в NT (до FFFF) предназначены для выявления нулевых указателей и в принципе недоступны ни для записи, ни для чтения.
Совершенно верно! Сегмент и смещение у меня есть. 07.05.04 02:12  
Автор: kisoff Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Мне проще было пользоваться peek(),
> > чем указателями (в которых я плохо разбираюсь), а с
> peek()
> > все просто:
> >
> > int a = peek(сегмент, смещение);
> >
> > и в а содержимое ячейки .
>
> Осталось в плоской модели памяти определить только
> требуемые сегмент и смещение.
Совершенно верно! Сегмент и смещение у меня есть.
Совершенно верно! Сегмент и смещение у меня есть. 07.05.04 07:07  
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
> > Осталось в плоской модели памяти определить только
> > требуемые сегмент и смещение.
> Совершенно верно! Сегмент и смещение у меня есть.

Вот настырный.
Парни ж говорят, что нет. Модель памяти плоская , понимаешь. И память процесов изолирована друг от друга. Именно для того, чтоб кто-нить не сделал peek() другому процессу ;)))
ну а зачем для спасиба новую ветку создавать то? 06.05.04 23:11  
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 06.05.04 23:13  Количество правок: 1
<"чистая" ссылка>
> Спасибо за помощь, в особенности DPP. А насколько я знаю и
> умею в DOS peek() читает читает определенную ячейку памяти
> в каком-то сегменте. Мне проще было пользоваться peek(),
> чем указателями (в которых я плохо разбираюсь), а с peek()
> все просто:
>
> int a = peek(сегмент, смещение);
>
> и в а содержимое ячейки .
В win32 environment нету никаких сегментов. И далеко не по любому адресу можно читать память.
ЗЫ а ветку эту сетаки прибей.
Как прибить ветку, я же не Killer? 07.05.04 02:10  
Автор: kisoff Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Спасибо за помощь, в особенности DPP. А насколько я
> знаю и
> > умею в DOS peek() читает читает определенную ячейку
> памяти
> > в каком-то сегменте. Мне проще было пользоваться
> peek(),
> > чем указателями (в которых я плохо разбираюсь), а с
> peek()
> > все просто:
> >
> > int a = peek(сегмент, смещение);
> >
> > и в а содержимое ячейки .
> В win32 environment нету никаких сегментов. И далеко не по
> любому адресу можно читать память.
> ЗЫ а ветку эту сетаки прибей.
Я не умею пибивать ветки.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach