Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];

Вниз

ReadProcessMemory.... Помогите разобраться!!!   Найти похожие ветки 

 
Alex_mai   (2002-12-05 13:34) [0]

Уважаемые мастера!!! У меня возникла проблема - Запускаю программу с помощью CreateProcess. Подскажите, пожалуйста, как по хендлу процесса или по его ID узнать начальный адрес памяти, где находится его код и данные... Сразу оговорюсь, что это производственная необходимость, а не вирусописание


 
paul_shmakov   (2002-12-05 13:41) [1]

все достаточно просто - все данные, которые вам нужны, находятся в PE-заголовке, которые можно считать из exe-файла.
смотрите структуру IMAGE_OPTIONAL_HEADER и поле в ней ImageBase.


 
Игорь Шевченко   (2002-12-05 13:56) [2]

А можно вопрос, что за производственная необходимость ? Очень мне интересно, ответьте, если не трудно...


 
paul_shmakov   (2002-12-05 14:00) [3]

только нужно в следующей последовательности считывать:
1) IMAGE_DOS_HEADER, проверить, что поле e_magic равно $4D5A (MZ)
2) по смещению IMAGE_DOS_HEADER.e_lfanew считать IMAGE_NT_HEADER, проверить, что поле Signature равно $50450000 (PE).

а дальше уже из IMAGE_NT_HEADER взять OptionalHeader.ImageBase - вот и результат. т.е. виртуальный адрес, по которому будет загружаться модуль (exe! dll может и по другому адресу загрузиться).

но это именно базовый виртуальный адрес загрузки модуля! а местоположение именно "кода и данных" не всегда возможно получить.
как правило, pe-модуль разделен на секции (секция кода, секция данных, секция импорта и т.п.). по флагам секций можно примерно определить, что в секции содержится.
но набор секций - произволен. может быть всего одна секция и в ней все-все-все, а может быть много секций с кодом, много с данными и т.д.

поэтому изложите проблему более конкретно.



 
Alex_mai   (2002-12-05 18:32) [4]

Игорь, совсем не трудно. Шеф принёс программу для редактирования бинарных файлов (прошивок), но беда в том, что в ней отсутствует функция сохранения. Попросил меня разобраться... Сами понимаете, что исходников под неё у меня нет, но я заметил, используя программу ART_MONEY, что загружаемый бинарник хранится в одном месте целиком. Программа даже адрес выдаёт - 00485058!
Пытаюсь читать из памяти:
ReadProcessMemory(hdl,pointer($485058),@buf,1,i)
-значения совершенно другие.

paul_shmakov, спасибо за ответ, но поскольку я не мастер в программировании, а дремучий новичок, то кроме "MZ" я ничего не понял. Извини.


 
Cobalt   (2002-12-05 18:58) [5]

попробуйте внедриться в АП


 
Ketmar   (2002-12-05 19:18) [6]

код в судию.

Satanas Nobiscum! 05-Dec-XXXVII A.S.


 
[NIKEL]   (2002-12-06 04:47) [7]

понятно другие... этож в другом адр. пространстве...
тут надо внедриться в процесс... а потом взять начало отображения данного модуля в памяти BYTE *image = (BYTE*)GetModuleHandle(NULL); и уж потом писать что надо

а вообще лучше сказать шефу что это нереально и что это выходит за рамки твоей компитенции, оно так лучше будет.


 
Игорь Шевченко   (2002-12-06 09:41) [8]


> а вообще лучше сказать шефу что это нереально и что это
> выходит за рамки твоей компитенции, оно так лучше будет.


IMHO, лучший совет :-)


 
Ketmar   (2002-12-06 10:35) [9]

>[NIKEL]© (06.12.02 04:47)
>понятно другие... этож в другом адр. пространстве...
тут надо внедриться в процесс... а потом взять начало отображения данного модуля в памяти BYTE *image = (BYTE*)GetModuleHandle(NULL); и уж потом писать что надо

не будем бредить, а лучше почитаем FM на ReadProcessMemory. никуда внедряться не надо.

>Игорь Шевченко© (06.12.02 09:41)
неа. это совет не интересный. от него американизмом попахивает. %-))

Satanas Nobiscum! 06-Dec-XXXVII A.S.


 
Alex_mai   (2002-12-06 11:23) [10]

Ketmar, спасибо за поддержку... На самом деле я разобрался с этой прогой...

Но мне всё равно не понятно, как определить память, где расположен процесс и его данные...


 
Игорь Шевченко   (2002-12-06 12:22) [11]

Ketmar © (06.12.02 10:35)

Да, конечно.
А советский человек достанет из кладовки портрет Ивана Кулибина, отряхнет с него пыль, поставит рядом с монитором, и вдохновляясь, начнет в очередной раз велосипед изобретать с четырьмя колесами. Сознание собственной крутости после наступания на все подряд грабли приведет его к узрению абсолюта воочью и прочим просветлениям.

Можно проще - не надо ерундой страдать :-)


 
Ketmar   (2002-12-06 12:37) [12]

>Alex_mai© (06.12.02 11:23)
на это вам paul_shmakov ответил. далее - копайте структуру PE-фалов (в Сети много инофрмации по этому поводу) и распределение памяти в винде. слишком уж долго тут все объяснять (если, конечно, вы хотите РАЗОБРАТЬСЯ, а не просто взять чей-то код и использовать).

>Игорь Шевченко© (06.12.02 12:22)
а если никогда не заниматься изобретательством, то и не будет ничего нового появляться. если бы Линус думал так же, то мы бы до сих пор не имели пингвиноида %-)

зыж
[краснея от стыда] Иван Кулибин - это кто? что-то больно имя знакомое, а вспомнить не могу.

Satanas Nobiscum! 06-Dec-XXXVII A.S.


 
Игорь Шевченко   (2002-12-06 13:13) [13]

Я не против изобретательства. Я против изобретательства велосипедов с четырьмя квадратными колесами, вырезания гланд через анальное отверстие и ковыряния в памяти чужих процессов без особой на то нужды.


> Иван Кулибин - это кто? что-то больно имя знакомое, а вспомнить
> не могу.


Талантливый русский изобретатель-самоучка.


 
Ketmar   (2002-12-06 13:51) [14]

>Игорь Шевченко© (06.12.02 13:13)
ну нужда-то была... см. Alex_mai© (05.12.02 18:32).

зыж
tnx за справочку %-)

Satanas Nobiscum! 06-Dec-XXXVII A.S.


 
[NIKEL]   (2002-12-06 13:53) [15]

2Ketmar
а никто и не бредит :)
///
а данные и начальный адресс могут быть и недоступны для чтения через ReadProcessMemory

///
попахивает много где и много чем
(тот же Мак Дональдс, та же винда на твоем компе(и он весь тоже), та же дельфя которой ты деньги заробатываешь и тот же Рихтер которого ты взахлеб зачитываешься...)
надо реально на вещи смотреть и оценивать возможности



 
a_k_v   (2002-12-06 14:28) [16]

Попахивает злобным крякерством:

>> Шеф принёс программу ... , но беда в том,
>> что в ней отсутствует функция сохранения.

Так нужно купить лицензионную версию :)


 
Ketmar   (2002-12-06 14:32) [17]

>[NIKEL]© (06.12.02 13:53)
пример в студию: когда я не могу использовать ReadProcessMemory, но могу внедриться в чужое АП?

Satanas Nobiscum! 06-Dec-XXXVII A.S.


 
Игорь Шевченко   (2002-12-06 15:02) [18]

Упс! Эт я неверно прочитал...
Автору - а воровать вообще нехорошо.


 
Ketmar   (2002-12-06 15:27) [19]

>Игорь Шевченко© (06.12.02 15:02)
нехорошо. но иногда приходится. и потом: хорошо, нехорошо... все относительно. но это уже тема для "потрепаться". %-)

Satanas Nobiscum! 06-Dec-XXXVII A.S.


 
Alex_mai   (2002-12-06 17:46) [20]

Народ, спасибо всем за участие, но, по-моему, вы отошли от темы... Ну очень необходимо человеку прочитать процесс... Ну если он сам его создал, а исходники потерял? Ну есть только ехе-шник. ну что ж ему заново прогу писать?! Не лучше ли примочку к ней? Даже если я пообещаю не использовать в писании вирусов и др. всё равно будут упрёки и т.д.
Игорь, если ты администратор, то администрируй, а не придирайся к тексту. Ну удали это сообщение, если считаешь, что оно не соответствует Правилам Форума, но не оставляй ничего не значащих постингов (пожозрение не столько помогает, сколько мешает в общении с людьми). Большая просьба. если нет ничего конкретного, то не пиши в эту ветку - у меня нет не колхозный - не хочу загружать лишние байты... Спасибо заранее...


 
Alex_mai   (2002-12-09 19:40) [21]

?! может кто ответит... а?


 
alex134   (2002-12-09 20:00) [22]


> Alex_mai © (09.12.02 19:40)
> ?! может кто ответит... а?

Буду рад помочь. Зайди на эту ветку через час (домой еду).


 
paul_shmakov   (2002-12-10 15:01) [23]

2 Alex_mai:
ну я же написал верный путь, в котором нужно двигаться. без понимания того, что же там понаписано после "MZ", ничего не получится. поверьте. вы не первый подобные проблемы решаете.

кстати, у Криса Касперски была статья как раз на ту тему, которая и вас волнует. там описывался процесс добавления в некое приложение функции сохранения, которая отсутствовала (именно отсутствовала, а не была задисейблена) в демо-версии.
найдите эту статью.


 
alex134   (2002-12-10 17:15) [24]

2 Alex_mai:
Мыло давай!


 
Alex_mai   (2002-12-12 10:10) [25]

paul_shmakov, спасибо. Сейчас посмотрю. Просто мне казалось, что решение должно быть проще.


 
Alex_mai   (2002-12-12 10:10) [26]

paul_shmakov, спасибо. Сейчас посмотрю. Просто мне казалось, что решение должно быть проще.

alex134 - там есть мыло.



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

Форум: "WinAPI";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.01 c
1-86730
diks
2003-01-15 21:03
2003.01.27
Копирование


3-86638
Flagman
2003-01-06 22:56
2003.01.27
Удаление записей через триггер


7-87168
Эли
2002-11-15 18:21
2003.01.27
переключение языка клавиатуры


3-86685
Nil
2003-01-08 12:07
2003.01.27
Помогите пожалуста правильно написать SQL-запрос !


4-87203
Youri
2002-12-10 12:13
2003.01.27
Telephony API header translation!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский