· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› базовый адрес модуля в другом процессе

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Июн 12, 2004 17:29:29

Как можно узнать сабж?
Не пробегать же с IsValidReadPtr все 4 гигабайта....
процесс в заданных условиях может быть еще даже не запущен на исполнение. имею вииду, что узнать сабж после CreateProcess(....CREATE_SUSPENDED...)


Дата: Июн 12, 2004 18:11:34

подробнее...

какого модуля ?
базовый адрес .exe или .dll какой ?
какая ОС ?

можно проенумить все процессы и модуля с помощью CreateToolhelp32Snapshot
и найти какой-то один, искомый


Дата: Июн 12, 2004 18:41:27

базовый адрес .exe или .dll какой
именно

CreateToolhelp32Snapshot именно это и искал. Спасибо... видимо, та прога его самостоятельно подгружает


Дата: Июн 13, 2004 19:47:48

хотя не все так безоблачно.
если вызвать CreateToolhelp32Snapshot сразу после CreateProcess(...CREATE_SUSPENDED...), то как-бы все хорошо идет и показывается, но при ResumeThread процесс умирает... GetThreadContext вообще какую-то билиберду возвращает (EIP == EBP, ESP == 1, если память не подводит)

вообще кармическая цель - узнать EntryPoint...


Дата: Июн 13, 2004 20:49:02

я все же так и не понял, какой процесс ты пытаешься исследовать...

ты используешь CreateToolhelp32Snapshot
после вызова CreateProcess, который *ты* же и вызываешь ?

если так, то зачем тогда снапшот ?
в последний параметр PROCESS_INFORMATION
и так запишется ProcessID, зная который
ты можешь прочитать память из этого процесса
(ReadProcessMemory)... вот и прочитай
PE заголовок, из которого достанешь EP...

или объясни подробнее, если все не так


Дата: Июн 13, 2004 20:55:48

а откуда взять смешение РЕ заголовка, если процесс загрузили не по ImageBase?
например, могут же быть relocatable exe, и не-relocatable dll...


Дата: Июн 13, 2004 20:57:21

или это настолько сферический случай, что про него можно забыть?


Дата: Июн 13, 2004 21:04:07


Дата: Июн 13, 2004 21:13:07

видел сие, но оно, к сожалению, nt-only...
а хотелось бы, чтобы и под Win98 (можно и другим методом)


Дата: Июн 13, 2004 21:19:54

Ой-ешеньки... Да сколько ж можно эту тему мусолить...
Есть библиотека PSAPI, в ней есть GetModuleInformation. Бери оттуда. И таскай за собой, как Olly делает. Или юзай свой примаханый snapshot.


Дата: Июн 13, 2004 22:07:15

LoadLibrary("psapi.dll") вернуло нуль под win98se (сама dll лежит в C:\windows\system. вернуло ошибку "Присоединеное к системе устройство не работает", афаир, такое выдавалось, если DLLEntry что-то false возвращал.
а CreateToolhelp32Snapshot безвозвратно у меня убивает спящий процесса... точнне процесс сразу умирает по пробуждению.


Дата: Июн 13, 2004 22:17:05

DarkK
Давай сюда свой код, потому что странные вещи ты говоришь, Toolhelp32 API, не могут вызывать такой "эффект"..


Дата: Июн 13, 2004 22:18:25

http://www.thecodeproject.com/threads/enumprocess.asp

Попробуй положи в свою же директорию.


Дата: Июн 13, 2004 22:28:38

GetStartupInfo(&startInfo);
if ( !CreateProcess(0, argv[1], 0, 0, 0, CREATE_SUSPENDED, 0, 0, &startInfo, &procInfo)) {
printf("Unable to create process\n");
return 1;
}
hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, procInfo.dwProcessId);
// вот тут уже несмотря на полную валидность hSnapshop и то, что ResumeThread возвращает также верное значение, но после ResumeThread процесс умирает.


Дата: Июн 13, 2004 22:33:07

глюк был на Win2k SP3 +некоторые критические патчи

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.081