Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 01.04.2017
Сообщений: 6

Как определить границы памяти стороннего процесса?

01.04.2017, 18:40. Показов 1244. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне необходим пример c определением границ памяти стороннего процесса, по принципу работы artmoney.

Суть задачи такая, есть сторонний процесс, например открытый блокнот, в нем я вручную пишу одну случайную цифру от 0 до 9. В программе указываю что блокнот на данный момент содержит строку из одного символа и символ этот цифра 9. После этого программа должна определить границы памяти этого процесса то есть блокнота, перелопатить все ячейки в этом диапазоне и сформировать массив только с теми ячейками которые содержат цифру 9. Затем я в блокноте меняю цифру 9 на цифру 5 и в программе указываю что цифра поменялась, таким образом идет отсев тех адресов которые не содержат 5, учитывая данные из этого массива. И так далее пока не останется 1 адрес.

Прошу помочь с задачкой на простой примере с минимумом кода!

p.s.

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

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;
 
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
 
        const int PROCESS_WM_READ = 0x0010;
        const int PROCESS_ALL_ACCESS = 0x1F0FFF;
 
        [DllImport("kernel32.dll")]
        public static extern IntPtr OpenProcess(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);
 
        [DllImport("kernel32.dll")]
        public static extern bool ReadProcessMemory(int hProcess, int lpBaseAddress, byte[] lpBuffer, int dwSize, ref int lpNumberOfBytesRead);
 
        [DllImport("Kernel32")] // Запись в память
        public static extern Int32 WriteProcessMemory(IntPtr hProcess, int lpBaseAddress, byte[] lpBuffer, int nSize, out int lpNumberOfBytesWritten);
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
 
 
            Process process = Process.GetProcessesByName("notepad")[0];
            IntPtr processHandle = OpenProcess(PROCESS_WM_READ, false, process.Id);
 
            int bytesRead = 0;
            byte[] buffer = new byte[4];
 
            ReadProcessMemory((int)processHandle, 0x00399900, buffer, buffer.Length, ref bytesRead);
 
            MessageBox.Show(Encoding.ASCII.GetString(buffer));
 
 
        }
    }
}
То есть, я предполагаю если знать границы памяти то можно простым перебором по циклу for сформировать массив со значениями. Но как узнать диапазон этих адресов?
Прошу помочь кодом на конкретном примере блокнота!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2017, 18:40
Ответы с готовыми решениями:

Чтение памяти стороннего процесса
Здравствуйте, знатоки! Нужно считать данные из памяти сторонней программы. Использую для этого библиотеку VAMemory.dll. ...

Получение , запись дампа памяти стороннего процесса.
Можно ли получить дамп памяти стороннего процесса и записать в память этого процесса новые данные?

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

1
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,573
01.04.2017, 18:47
Цитата Сообщение от Jokersx Посмотреть сообщение
Но как узнать диапазон этих адресов?
VirtualQueryEx
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2017, 18:47
Помогаю со студенческими работами здесь

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

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

Завершение стороннего процесса
Нужна помощь!!! как завершить какой либо процесс в Windows'e при нажатии кнопки на форме прошу ответ более подробно я новичок еще.:) ...

Завершение стороннего процесса
День добрый. Возможно ли из программы завершить другую программу? Т.е. при нажатии на кнопку моей программы завершаем работу...

Корректное завершение стороннего процесса
Из своей программы (Wrapper) запускаю вторую (Program). Программа Program - консольное приложение, которое при завершении записывает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru