Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.05.2013, 15:45
Colombo Colombo вне форума
Прохожий
 
Регистрация: 03.05.2013
Сообщения: 5
Версия Delphi: Delphi XE2
Репутация: 10
По умолчанию Обход защиты чтения памяти

Задача подключиться и читать данные из программы.
Все было хорошо, пока не поставили блок на подключение к процессу.
Изменение привилегий читающей программы не помогло.
openprocess возвращает 0.
Возможна оплата готового решения, писать в ЛС.

Последний раз редактировалось Colombo, 03.05.2013 в 15:56.
Ответить с цитированием
  #2  
Старый 03.05.2013, 18:33
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А вот это (см. прикреплённый архив) снимает блокировку с процесса? Если не снимает, то подключение тогда вообще не возможно.

Последний раз редактировалось Alegun, 09.05.2013 в 12:21.
Ответить с цитированием
  #3  
Старый 03.05.2013, 18:45
Colombo Colombo вне форума
Прохожий
 
Регистрация: 03.05.2013
Сообщения: 5
Версия Delphi: Delphi XE2
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
А вот это (см. прикреплённый архив) снимает блокировку с процесса? Если не снимает, то подключение тогда вообще не возможно.
Если там SeDebugPrivilege, то оно не помогает.
Попробую, отпишусь.
Ответить с цитированием
  #4  
Старый 04.05.2013, 00:55
Colombo Colombo вне форума
Прохожий
 
Регистрация: 03.05.2013
Сообщения: 5
Версия Delphi: Delphi XE2
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
А вот это (см. прикреплённый архив) снимает блокировку с процесса? Если не снимает, то подключение тогда вообще не возможно.
Это не заработало на win7(64).


Немного подробностей по проблеме
читаю процесс так

Код:
procedure TForm2.ConnectGame;
var
  WndHndl: THandle;
  PID, BytesCount, ipbuf: size_t;
begin

  WndHndl := findwindow('ArmA 2 OA', nil);
  GetWindowThreadProcessId(WndHndl, @PID);
  hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ or
      PROCESS_VM_OPERATION, False, PID);
  if hProcess = 0 then
    begin
      BitBtn1.Caption := ('error');
      BitBtn1.Font.Color := clRed;
    end
  else
    begin
      BitBtn1.Caption := ('connected');
      BitBtn1.Font.Color := clGreen;
    end;
  if hProcess <> 0 then
    try
До 8-й строки, включительно, все вроде бы хорошо.
Девятая возвращает 0.
Это происходит именно когда срабатывает блокировка на открытие/чтение процесса, потому что если ее обойти (есть временный вариант), то все работает.
Ответить с цитированием
  #5  
Старый 04.05.2013, 00:59
ChinYan ChinYan вне форума
Тыкаю клавиши
 
Регистрация: 13.07.2009
Сообщения: 804
Версия Delphi:
Репутация: 48633
По умолчанию

Какова разрядность процесса, который читаете?
Права админа у вас есть?
Отладочные привилегии?

В чем заключается этот временный метод?
Ответить с цитированием
  #6  
Старый 04.05.2013, 01:28
Colombo Colombo вне форума
Прохожий
 
Регистрация: 03.05.2013
Сообщения: 5
Версия Delphi: Delphi XE2
Репутация: 10
По умолчанию

Цитата:
Сообщение от ChinYan
Какова разрядность процесса, который читаете?
Права админа у вас есть?
Отладочные привилегии?

В чем заключается этот временный метод?
1- 32
2- программа, которая читает, запускается с правами администратора
3- пробовал ставить, не помогло, хотя возможно что криво ставил

Он заключается в том, что если открыть процесс на чтение в самом начале, как только загрузилась программа из которой читаем, то он открывается и остается открытым и все работает.
А вот если его попытаться открыть в процессе использования программы, из которой читаем, то он уже не откроется.
А нужно, что бы его можно было открыть, на чтение, в любой момент.
Ответить с цитированием
  #7  
Старый 04.05.2013, 01:53
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Вероятнее всего работает какой-нить антидебаг как защита от кряка. Знаю пару методик, которые фиг обойдешь.
Решение - пиши свой Soft-Ice. Ну или просто драйвер, читающий из процессов, забивая на винду. Другого решения придумать не могу.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:18.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter