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

Вниз

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 вся ветка

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

Наверх




Память: 0.53 MB
Время: 0.021 c
3-86689
Worker
2003-01-08 11:36
2003.01.27
Слезно молю о помощи. Помогите с создать SQL.


1-86808
zolotov
2003-01-18 18:04
2003.01.27
Formula One


1-86810
jen_bond
2003-01-18 23:46
2003.01.27
Технология FineReader


1-86941
123000
2003-01-16 18:55
2003.01.27
Рисунок в Richedit


1-86945
Zeratul
2003-01-17 01:29
2003.01.27
Cобытие FormKeyPress