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





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
1.) if (byteswriten != sizeof(gettextex)) return; оставляет... 14.04.10 14:54  Число просмотров: 2899
Автор: kstati <Евгений Борисов> Статус: Elderman
Отредактировано 14.04.10 14:56  Количество правок: 1
<"чистая" ссылка>
1.) if (BytesWriten != sizeof(GETTEXTEX)) return; оставляет процесс не закрытым — поправь.

2.) на чём, собственно обломы идут-то? Что под клоподавом видно?
<programming>
[Win32] Как получить текст из чужого RichEdit'а? 05.04.10 07:20  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка>
Точнее TRichView / TInfuRichEdit. На всех окнах и кнопках работает функция GetWindowText или WM_GETTEXT, а здесь не хочет. Пробовал ещё извращаться с WM_GETSEL, EM_FINDTEXT и некоторыми другими. Результат 0. В поиске нашёл пару топиков с подобным вопросом, но решения нигде не было...
[win32] есть мнение, что нужно аллоцировать память в чужом процессе, и слать em_gettextex. 05.04.10 11:33  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 05.04.10 11:37  Количество правок: 2
<"чистая" ссылка>
VirtualAllocEx, внутри чужого процесса заполняем структуру GETTEXTEX, делаем PostMessage с соотв. указателями на GETTEXTEX и буфер, куда вернётся текст.
Потом ReadProcessMemory() и вуаля ;)
А вообще, сперва попробуй эти же пляски с VirtualAllocEx, но пошли простой WM_GETTEXT.
Если не получится, то пляски по полной программе.
[Win32] Спасибо! 06.04.10 09:05  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка>
[Win32] Спасибо - мало. Ты скажи - получилось? И как? 07.04.10 06:16  
Автор: Zef <Alloo Zef> Статус: Elderman
<"чистая" ссылка>
В общем написал вот такой код. Ошибок винда не возвращает,... 08.04.10 14:18  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка>
В общем написал вот такой код. Ошибок винда не возвращает, все дескрипторы корректные, но в szBuf в результате исполнения кода остаётся пустая строка.
	HWND	hwndRich;
	HANDLE	hProcess;
	DWORD	dwProcessID ; 

	GETTEXTEX	StructTextEx;
	GETTEXTEX	*PStructTextEx;
	LPSTR		PTextBuffer;

	DWORD BytesWriten, BytesRed; 
	char szBuf[100];

	hwndRich = (HWND) 0x50492;
	GetWindowThreadProcessId(hwndRich, &dwProcessID); 
	hProcess = OpenProcess(PROCESS_ALL_ACCESS, TRUE, dwProcessID); 
	PStructTextEx = (GETTEXTEX *) VirtualAllocEx(hProcess, NULL, sizeof(GETTEXTEX), MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE); 
	PTextBuffer	= (LPSTR) VirtualAllocEx(hProcess, NULL, 20, MEM_COMMIT | MEM_TOP_DOWN, PAGE_READWRITE); 

	StructTextEx.flags = GTL_NUMBYTES | GTL_USECRLF; 
	StructTextEx.codepage = 1200; 
	StructTextEx.lpDefaultChar = NULL;
	StructTextEx.lpUsedDefChar = NULL;

	WriteProcessMemory(hProcess, PStructTextEx, &StructTextEx, sizeof(GETTEXTEX), &BytesWriten); 
	if (BytesWriten != sizeof(GETTEXTEX))
		return; 
	SendMessage(hwndRich, EM_GETTEXTEX, (WPARAM) PStructTextEx, (LPARAM) PTextBuffer); 
	ReadProcessMemory(hProcess, PTextBuffer, szBuf, 100, &BytesRed);

	VirtualFreeEx(m_hProcessHandle, PStructTextEx, sizeof(GETTEXTEX), MEM_DECOMMIT);
	VirtualFreeEx(m_hProcessHandle, PTextBuffer, 20, MEM_DECOMMIT);
	CloseHandle(hProcess);

---

PS. Может быть правда, что я константу EM_GETTEXTEX неправильно определил... У меня 6-ая студия стоит, а там в инклудах такой переменной нету. В сети нагуглил такое определение: "#define EM_GETTEXTEX (WM_USER + 94)". Оно правильное?
1.) if (byteswriten != sizeof(gettextex)) return; оставляет... 14.04.10 14:54  
Автор: kstati <Евгений Борисов> Статус: Elderman
Отредактировано 14.04.10 14:56  Количество правок: 1
<"чистая" ссылка>
1.) if (BytesWriten != sizeof(GETTEXTEX)) return; оставляет процесс не закрытым — поправь.

2.) на чём, собственно обломы идут-то? Что под клоподавом видно?
А хендл окна точно тот? Тыркни в окно RichEdit'a определялкой Spy++, мож там ещё есть вложенное окно? 09.04.10 22:21  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 09.04.10 22:21  Количество правок: 1
<"чистая" ссылка>
SPY++ мигает именно на том окне (речь о QIP Infinum) идёт, т.е. хендл точно правильный. Вложенных окон нет. 10.04.10 14:32  
Автор: Vedrus <Serokhvostov Anton> Статус: Member
<"чистая" ссылка>
1




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


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