информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Портрет посетителяSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Я именно хочу прочитать ячейку в 'C++Builder 5'. 07.05.04 05:58  Число просмотров: 1554
Автор: void <Grebnev Valery> Статус: Elderman
<"чистая" ссылка>
Оставь эту идею, со смещением и адресом сегмента. Это уже не нужно.
<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-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach