Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.04.03;
Скачать: CL | DM;

Вниз

Надпись в чужом процессе   Найти похожие ветки 

 
kester   (2010-12-29 18:29) [0]

Здравствуйте.

Вопрос вот в чем: в чужом приложении периодически появляется строка с текстом (непонятно что это за компонент). Текст строки известен. Необходимо проверять наличие этой строки. Надо как то искать в памяти процесса? Если да то как?

Спасибо.


 
Дмитрий С ©   (2010-12-29 18:46) [1]

Если в памяти, то можно например
ReadProcessMemory вроде.

если строка в отдельном окне появляется, то можно поискать другими путями, может она через GetWindowText вернется.


 
kester   (2010-12-29 23:10) [2]

Можно попросить Вас ссылочку поподробнее про ReadProcessMemory, а то гугл ничего понятного для нуба не воспроизводит.


 
Rouse_ ©   (2010-12-29 23:16) [3]


>  kester   (29.12.10 23:10) [2]
>
> Можно попросить Вас ссылочку поподробнее

http://3fw.ru/190


 
kester   (2010-12-30 01:04) [4]

Нужен код, который будет в памяти процесса (хэндл окна процесса известен) искать определенную строку (5 известных символов). Просто проверять на наличие строки, 0 или 1, никаких адресов и тд. Очень нужно, за рабочий код отблагодарю материально.

По поводу ссылки спасибо, очень помогла.


 
Германн ©   (2010-12-30 01:49) [5]


> По поводу ссылки спасибо, очень помогла.

Если "очень помогла", то зачем платить деньги за "рабочий код"?
А в целом ты не по адресу, имхо.
Тебе нужно обратиться либо сюда:
http://www.delphikingdom.com/notice/putinfo.asp?CategoryID=7
либо сюда:
http://forum.sources.ru/index.php?showforum=149


 
kester   (2010-12-30 08:04) [6]

Не понимаю смысла в форуме "Начинающим" если тут начинающему в качестве совета кидают ссылку на гугл, а код функции не могут привести даже за бабло, хотя я думаю она не очень сложная, вряд ли больше строчек 30.


 
Dennis I. Komarov ©   (2010-12-30 09:00) [7]


> а код функции не могут привести даже за бабло,

Ты вопросы пришел задавать, код просить или работу предлагать? Ты уж определись...

Да, и еще. Ты [0] перечетай и подумай, как человек не видя (зная) чего там где творится может ответить?


> в чужом приложении периодически появляется строка с текстом
> (непонятно что это за компонент). Текст строки известен.
>  Необходимо проверять наличие этой строки. Надо как то искать
> в памяти процесса? Если да то как?

Каждое подчеркнутое требует детального уточнения...


 
kester   (2010-12-30 12:04) [8]


> Ты вопросы пришел задавать, код просить или работу предлагать?
>  Ты уж определись...


Просто очень нужно решить такую задачу. Я пробую сам делать, но мне немного не разобраться, вот и прошу помощи у вас. Просто немного обидело то, что отправили сразу в гугл и все. Естественно, что я сначала поисковики посмотрел. Там есть примеры, да, но немного не то, что мне нужно, тем более я недостаточно хорошо соображаю, чтобы с ними разобраться. Тем более в последние 3 года я очень редко прибегаю к программированию, а сейчас вот опять начал и вспоминается очень с трудом и не все.


> Каждое подчеркнутое требует детального уточнения...


Нужно проверить есть ли в памяти процесса данная строка или нет. Я понимаю, что нужно написать какой то цикл, который последовательно байтам будет проверять содержимое памяти (видимо, с помощью ReadProcessMemory). Если комбинация из 5 байт совпадает с нужными, то 1. Если нигде такой комбинации не нашлось в памяти процесса, то 0. Я мыслю правильно или нет?
Если правильно, то как мне определить по каким адресам прогонять цикл? Какие параметры должны быть в ReadProcessMemory?

Если неправильно, поправьте пожалуйста.

Заранее спасибо!


 
12 ©   (2010-12-30 12:09) [9]

а она там точно есть?
посмотрите ArtMoney(что это игровая приблуда - внимания не обращать), читает процессы и ищет байты. Может и не найдется такой строки


 
Dennis I. Komarov ©   (2010-12-30 12:32) [10]

А если такая строка (в смысле значение) висит в памяти как константа? Ведь она откуда то берется? И чего тогда там искать? А если такое сочетание 5-и байт случайно встретится в памяти? Мало ли чего там валяется?


 
kester   (2010-12-30 12:38) [11]


> А если такая строка (в смысле значение) висит в памяти как
> константа? Ведь она откуда то берется? И чего тогда там
> искать? А если такое сочетание 5-и байт случайно встретится
> в памяти? Мало ли чего там валяется?

Через ArtMoney проверил. Все получается, если строка висит - то артмани находит. Строки нет - не находит. Выходит мне просто нужно повторить процедуру артмани.


 
kester   (2010-12-30 14:36) [12]

Rак мне определить по каким адресам прогонять цикл? Какие параметры должны быть в ReadProcessMemory?


 
Сергей М. ©   (2010-12-30 14:40) [13]

> мне просто нужно повторить процедуру артмани

Если факт появления строки нужно обнаружить мгновенно, то глупее затеи не придумать.


 
kester   (2010-12-30 14:48) [14]


> Если факт появления строки нужно обнаружить мгновенно, то
> глупее затеи не придумать.

Нет, не мгновенно, строка появляется на продолжительное время. Проверку планируется сделать с интервалом раз в минуту. Просто поставлю проверку на таймер.


 
Сергей М. ©   (2010-12-30 14:55) [15]

> строка появляется на продолжительное время

А пропадает, к примеру, на доли миллисекунды.
Или тебя не парит необходимость обнаружения отсутствия строки ?


 
kester   (2010-12-30 14:58) [16]


> Или тебя не парит необходимость обнаружения отсутствия строки
> ?

Да, абсолютно не парит. После обнаружения присутствия и сигнала о нем, программа завершает работу.


 
Сергей М. ©   (2010-12-30 15:01) [17]


> абсолютно не парит


Ну тады ой)


 
12 ©   (2010-12-30 15:19) [18]

посмотрите уже в гугл
сам никогда не занимался, правда, подобным -
а набрав много чего получил, с кодами

http://www.google.ru/webhp?rls=ig#num=20&hl=ru&newwindow=1&rls=ig&biw=1280&bih=814&q=writeprocessmemo ry+delphi+%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80&aq=f&aqi=&aql=&oq=&gs_rfai=&fp=c7a3af04a750e359


 
kester   (2010-12-30 15:19) [19]

Ну я имел ввиду то, что после того как она первый раз появилась, больше ничего делать не надо. В смысле ой?


 
Сергей М. ©   (2010-12-30 15:35) [20]


> В смысле ой?


Ну не надо значит не надо, я же не возражаю)


 
Amoeba_   (2010-12-30 18:49) [21]


> Rак мне определить по каким адресам прогонять цикл?

Да ни как.
Ответа на вопрос нет и не может быть.


 
HF-Trade ©   (2011-01-03 06:22) [22]

Как то так...

Var
H: THandle;
pid, RetVal, pHandle: DWord;
MSG: Array[0..1023] of WideChar;
Begin
H := FindWindow("Имя чужого окна", nil);
GetWindowThreadProcessId(H, pid);
pHandle := OpenProcess(PROCESS_ALL_ACCESS, False, pid);
ReadProcessMemory(pHandle, Ptr($000000{Адрес из артмани}) ,@MSG, 4{Кол-во байт}, RetVal);
Stroka := MSG;


 
Студент   (2011-01-09 06:26) [23]

А вы пробовали смотреть чужое окно через Spy++ и аналогами? Уверен в подавляющем количестве случаев достаточно GetWindowText...


> А если такая строка (в смысле значение) висит в памяти как
> константа?


Разумеется висит...) Куда ж она денется, если "периодически появляется"?)
Разве что из файла берёт каждый раз...



Страницы: 1 вся ветка

Текущий архив: 2011.04.03;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.01 c
15-1292536050
George
2010-12-17 00:47
2011.04.03
Delphi, PHP и md5


2-1293636549
kester
2010-12-29 18:29
2011.04.03
Надпись в чужом процессе


15-1292844027
George
2010-12-20 14:20
2011.04.03
Почитать бы


15-1292611465
PEAKTOP
2010-12-17 21:44
2011.04.03
ОлдФаги, помогите мультик найти !


2-1294187314
RUu
2011-01-05 03:28
2011.04.03
работа с popupmenu в runtime