Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/35: Рейтинг темы: голосов - 35, средняя оценка - 4.63
74 / 74 / 30
Регистрация: 22.03.2013
Сообщений: 224
1

WriteProcessMemory

06.07.2013, 18:40. Показов 6614. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Не работает код ,всегда возращает False .Все права вроде получаю
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
53
54
55
56
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.ComponentModel;
 
namespace ConsoleApplication1
{
    class Program
    {   
        [DllImport("kernel32.dll", SetLastError = true)]
        unsafe static extern bool WriteProcessMemory(
            IntPtr hProcess,
            void* IpBaseadress,
            void* IpBuffer,
            uint nSize,
            uint IpNumberOfBytesWritten
          
           );
        [DllImport("kernel32.dll")]
        public static extern IntPtr OpenProcess(
        int dwDesiredAccess,
        bool bInheritHandle,
        int dwProcessId);
        unsafe static void Main(string[] args)
        {
            //Process.EnterDebugMode();
 
            var mproc = Process.GetProcessesByName("iexplore");
            var proc=mproc[0];
            int id=proc.Id;
            
            string s = proc.ToString();
            Console.WriteLine(s);
          IntPtr hproc= OpenProcess(0x001F0FFF, false, id);
           //IntPtr hproc = proc.Handle;
           Console.WriteLine( hproc.ToString());
           Console.WriteLine(proc.Id.ToString());
          
            byte data=0x1;
            if (!WriteProcessMemory(hproc, (void*)0x400000, &data, 1, 0))
            { 
                Console.WriteLine("Error");
        }
            WriteProcessMemory(hproc, (void*)0x400000, &data, 1, 0);
            WriteProcessMemory(hproc, (void*)0x400000, &data, 1, 0);
            WriteProcessMemory(hproc, (void*)0x400000, &data, 1, 0);
            //Process.LeaveDebugMode();
            Console.ReadLine();
                
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.07.2013, 18:40
Ответы с готовыми решениями:

The memory could not be "read" \ "write"; Read\WriteProcessMemory
Добрый день. Вечная проблема при попытке прочитать \ записать в память, при помощи...

WriteProcessMemory
нужно изменит байты с чего начать помогите пожалуйста

WriteProcessMemory нюансы использования
Доброго времени суток! Возникла такая проблема, при запуске проекта из VS2015 все компилируется,...

Segfault после WriteProcessMemory
#include <windows.h> #include <string> using namespace std; int main() { string s =...

3
Почетный модератор
Эксперт .NET
8721 / 3673 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
08.07.2013, 17:10 2
Цитата Сообщение от Nevermore_ Посмотреть сообщение
OpenProcess(0x001F0FFF
Почему значение константное? proc.Handle должно быть.
Какой битности ваш процесс? Для x64 WriteProcessMemory прототип неверно описан.

Почему нет никаких проверок на результаты выполнения функций и Marshal.GetLastWin32Error?
В общем расставьте проверки, тогда будет понятно в какой момент происходит ошибка.
0
74 / 74 / 30
Регистрация: 22.03.2013
Сообщений: 224
08.07.2013, 17:53  [ТС] 3
я использовоал это http://www.pinvoke.net/default... penprocess
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Flags]
 enum ProcessAccessFlags : uint
 {
     All = 0x001F0FFF,
     Terminate = 0x00000001,
     CreateThread = 0x00000002,
     VMOperation = 0x00000008,
     VMRead = 0x00000010,
     VMWrite = 0x00000020,
     DupHandle = 0x00000040,
     SetInformation = 0x00000200,
     QueryInformation = 0x00000400,
     Synchronize = 0x00100000
 }
0
Почетный модератор
Эксперт .NET
8721 / 3673 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
08.07.2013, 20:57 4

Не по теме:

блин, нельзя делать несколько дел сразу...


Я ошибся. Первое значение в OpenProcess корректное, но это
Цитата Сообщение от NickoTin Посмотреть сообщение
Почему нет никаких проверок на результаты выполнения функций и Marshal.GetLastWin32Error?
В общем расставьте проверки, тогда будет понятно в какой момент происходит ошибка.
остается в силе. Ответа я не увидел.
1
08.07.2013, 20:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.07.2013, 20:57
Помогаю со студенческими работами здесь

Проблемы с ReadProcessMemory, WriteProcessMemory
Приветствую всех. Ребят, проблема − нужно подцепиться к стороннему процессу, прочитать кусок...

Объясните как пользоваться WriteProcessMemory()
Привет всем обитателям этого форума=) Объясните пожалуйста как пользоваться WriteProcessMemory()....

Запись значения в адрес с помощью WriteProcessMemory по смещениям
Как записать значение в адрес через 5 смещений? На сколько я понимаю нужно 5 раз прибавить к...

WriteProcessMemory. В чужой процесс записать 4 байта данных
Создавал уже тему по этому вопросу, решения так и не нашел. Нужно моим приложением в чужой процесс...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru