Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 22.03.2011, 12:31   #1
Рыцарь
 
Аватар для Morfik
 
Регистрация: 13.10.2009
Сообщений: 665
Сказал Спасибо: 38
Имеет 172 спасибок в 108 сообщенях
Morfik пока неопределено
По умолчанию Чтение из памяти

Итак существует ситуация: в своем потоке получаем указатели на некоторые данные, после выдираем инфу по этим указателем, НО в этот момент другой, скажем так главный поток может сделать ФРИМЕМ на этот блок памяти (тормозить его и вообще делать что либо с ним не вариант, да и поток это не мой), а так как мы читаем указатели можем вылететь с критом типа "can not read adress что то там".

Можно ли с этим что поделать, была идея юзать ReadProcessMemory, но по мне весь этот процесс чтения будет кушать больше и длится дольше, да и решит ли это проблему ошибки "can not read..." или может можно сделать что еще?


зы: наверна скопирую через ReadProcessMemory нужный блок и буду читать из него, его хотябы никто не фримемнет кроме меня

Последний раз редактировалось Morfik, 22.03.2011 в 12:32. Причина: Добавлено сообщение
Morfik вне форума   Ответить с цитированием
Старый 22.03.2011, 14:35   #2
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Morfik, а что мешает процессу фримемнуть память непосредственно перед или даже во время того как ты делаешь ReadProcessMemory? итог будет тот же что и при доступе к этой памяти из того же процесса)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 22.03.2011, 16:30   #3
Рыцарь
 
Аватар для Morfik
 
Регистрация: 13.10.2009
Сообщений: 665
Сказал Спасибо: 38
Имеет 172 спасибок в 108 сообщенях
Morfik пока неопределено
По умолчанию

Цитата:
Сообщение от xkor Посмотреть сообщение
Morfik, а что мешает процессу фримемнуть память непосредственно перед или даже во время того как ты делаешь ReadProcessMemory? итог будет тот же что и при доступе к этой памяти из того же процесса)
разница в том что это
a:=DWORD(Pointer($fffffff)^);
крашит приложение
а это
ReadProcessMemory(getcurrentProcess,Pointer($fffff ff),@a,4,b);
просто вернет фалсе

моя проблема заключается как раз в крашаш, а не в том что я могу лишиться какой нибудь из полученных записей
Morfik вне форума   Ответить с цитированием
Старый 22.03.2011, 16:38   #4
Местный
 
Регистрация: 27.01.2009
Сообщений: 154
Сказал Спасибо: 23
Имеет 26 спасибок в 19 сообщенях
guplen пока неопределено
По умолчанию

В try ... except засунь чтение.
guplen вне форума   Ответить с цитированием
За это сообщение guplen нажился спасибкой от:
Старый 22.03.2011, 16:44   #5
Рыцарь
 
Аватар для Morfik
 
Регистрация: 13.10.2009
Сообщений: 665
Сказал Спасибо: 38
Имеет 172 спасибок в 108 сообщенях
Morfik пока неопределено
По умолчанию

Цитата:
Сообщение от guplen Посмотреть сообщение
В try ... except засунь чтение.
Код:
try
            	cba:=DWORD(Pointer($fffffff)^);
            except
            on E:Exception do
      			MessageBox(0,pchar(E.Message),'чтение',0);
         	end;
помогло, хотя давненько вроде пробовал все равно летало, не думал что поможет. Что ж щас хотя бы точное место ошибок легче искать будет.
Morfik вне форума   Ответить с цитированием
Старый 23.03.2011, 09:02   #6
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

а что мешает вызвать стоптред для того потока (потоков) проверить isbadreadptr (забыл точное название) и считать. Но если память динамичная может быть другая трабла. После фримем там может оказатса другая читаемая память, но... Нето)
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 26.03.2011, 01:38   #7
Рыцарь
 
Аватар для Morfik
 
Регистрация: 13.10.2009
Сообщений: 665
Сказал Спасибо: 38
Имеет 172 спасибок в 108 сообщенях
Morfik пока неопределено
По умолчанию

Цитата:
Сообщение от mira Посмотреть сообщение
а что мешает вызвать стоптред для того потока (потоков) проверить isbadreadptr (забыл точное название) и считать. Но если память динамичная может быть другая трабла. После фримем там может оказатса другая читаемая память, но... Нето)
не та инфа что нужно не столь критично, а вот тормозить тот поток ваще не вариант - пишу для ло2 и каждые несколько секунд тормозить главный поток игры чтобы вытащить свою инфу вообще не вариант)
Morfik вне форума   Ответить с цитированием
Старый 30.03.2011, 11:17   #8
Местный
 
Регистрация: 10.08.2010
Сообщений: 634
Сказал Спасибо: 22
Имеет 95 спасибок в 70 сообщенях
mira пока неопределено
По умолчанию

а ты попробуй. Если у тя клиент запущен на калькуляторе то да, возможно скажетса на работе.
Хотя я не очень понимаю к чему этот артмани стайл
__________________
читернуть бы ништяг
mira вне форума   Ответить с цитированием
Старый 02.04.2011, 20:50   #9
Рыцарь
 
Аватар для Morfik
 
Регистрация: 13.10.2009
Сообщений: 665
Сказал Спасибо: 38
Имеет 172 спасибок в 108 сообщенях
Morfik пока неопределено
По умолчанию

Для максимальной безопасности, не хочу менять ни единого байта оригинальных функций и таблиц. Функционал минимален да и методы УГ но что поделать.
Morfik вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 09:10.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!