Вопрос о способах сброса оперативной памяти [Все языки и платформы] - PullRequest
0 голосов
/ 22 ноября 2010

Недавно я решил, что хотел бы написать приложение, которое будет альтернативой с открытым исходным кодом для некоторых приложений с закрытым исходным кодом, доступных на рынке;в первую очередь как опыт обучения.

Но я не совсем уверен, с чего начать (для машин с Windows).Я предполагаю, что мне придется перебирать память, используя подпрограмму, которая выполнялась на уровне ядра, но как я могу помешать машине делать что-либо, делая снимок, или делая как можно меньше, или даже имея доступ кбаран как этот, я потерян.

Любой, у кого есть опыт или совет, ценится, очень интересная тема.

Ответы [ 3 ]

1 голос
/ 22 ноября 2010

Для Windows все, что вам нужно, находится в dbghelp.dll - ссылка здесь .

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

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

0 голосов
/ 26 июля 2011

вот краткое руководство по приостановке процесса, чтобы вы могли поиграть с ним. http://www.infernodevelopment.com/freeze-programs-using-win32-threads

вот некоторые функции, полезные для поиска процесса или окна, на которое вы хотите посмотреть

  1. GetWindowThreadProcessId
  2. EnumWindows
  3. Tasklist
  4. GetCurrentProcess

для чтения из памяти вы можете использовать следующие функции API.

  1. OpenProcess
  2. ReadProcessMemory

поиск в Google должен дать вам хорошее начало

0 голосов
/ 22 ноября 2010

Существует Google Breakpad , который может помочь. Сам еще не использовал, хотя,

...