2011-12-30 2 views
8

Я пытаюсь проверить, пытается ли приложение манипулировать определенным процессом (например, к нему привязывает). Я не мог найти подходящего подхода для достижения этого. Возможно ли вычислительная контрольная сумма над запущенным процессом? Если это не так, я могу обнаружить эту ситуацию?Обнаружение доступа к памяти для процесса

+0

Вы знаете оскорбительное приложение? И вы знаете, как вы обнаружили в вашей манипуляции с приложениями? – rene

+0

Извините, у меня не возник вопрос. Я не знаю, как обнаружить манипуляции, поэтому я понятия не имею, как обнаружить проявления манипуляции. Вот почему я попросил о помощи. –

+0

Какова фактическая цель, которую вы пытаетесь достичь? Если вы пытаетесь избежать/обнаружить фальсификацию в своем собственном приложении, ничего не будет работать на 100%. –

ответ

4

Другие процессы не могут сделать крючки в вашем процессе, могут изменять память, но для того, чтобы сделать крючки, этот код должен быть в вашем адресном пространстве, это можно сделать, чтобы вставлять DLL в ваш процесс при запуске (во время выполнения dll dll жесткий), вы можете легко это проверить, указав DLL в своем процессе и выполнив поиск в своих кодах функций ReadProcessMemory, WriteProcessMemory, OpenProcess, CallNextHookEx. Для этого введите адрес (GetProcAddress) функции и значения поиска в коде (вы можете добавить некоторые asm call прогнозы для этого для ограниченного диапазона).

Вы можете проверить, что случилось с вашим файлом PE в диске и в памяти, когда инъекции DLL во время запуска было появление, то ваш файл PE после был скопирован в память из файла должен быть поврежден, после последней библиотеки длл вы должны быть перезаписаны символы отладки с дополнительным импортом dll. Эта модификация может быть выполнена в файле, таком же, как в памяти.

Лучший способ, но, вероятно, вам будет нелегко, если вы используете язык C#, обфускайте свой код. Я думаю, что это хороший метод, потому что вы не зацепили что-то, что вы не знаете, как работает, потому что вы не знаете, какой крюк вы должны делать и где. Но для хорошего обфускации кода на C# вы должны найти хорошее программное обеспечение для этого и, вероятно, заплатить не по низкой цене.

+0

@gcx: ReadProcessMemory, WriteProcessMemory также будет захватывать инъекции во время выполнения, инъекция времени выполнения от другой функции инжекции процесса к месту, когда будет выполняться с кодом библиотеки загрузки (в целевой памяти не как крючки в целевой память, но вызывающая функция, расположенная в dll) – Svisstack

+0

Я вижу, что вы упомянули обфускации. Я думаю, вы сказали, что из-за моего «моего процесса». Я сослался на конкретный процесс, сказав мой процесс. Я редактировал оригинальный пост. Извините за путаницу. –

+1

Вот лучший бесплатный обфускатор, который я знаю: [Eazfuscator.NET] (http://www.foss.kharkov.ua/g1/projects/eazfuscator/dotnet/Default.aspx) – ken2k

Смежные вопросы