Название говорит само за себя. :)
[Вот] и видеоурок. Довольно длинный, аж на тридцать минут, так что запаситесь чаем и бутербродами перед просмотром. В этом уроке я покажу, как создать простенький каркас, найти процесс, открыть его и записать в его память несколько байт.
Visual Studio, которая в уроке использовалась, можно скачать [вот отсюда]. А меня можно найти ещё и [вот тут].
[Вот] и видеоурок. Довольно длинный, аж на тридцать минут, так что запаситесь чаем и бутербродами перед просмотром. В этом уроке я покажу, как создать простенький каркас, найти процесс, открыть его и записать в его память несколько байт.
Visual Studio, которая в уроке использовалась, можно скачать [вот отсюда]. А меня можно найти ещё и [вот тут].
Делал все как сказано. Я мало что понимаю в принципе и правилах языка, но соскреб все точь в точь и все же в двух местах слова подсвечиваются как ошибки. (Я их пометил кучей точек).
ОтветитьУдалитьОбъясните и пожалуйста подправьте эти пару строчек.
Вот код почти весь (в конце только FormLoad... и еще пару кнопочек пустых)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace MuOnline_Editor_v1._0
{
public partial class Form1 : Form
{
[DllImport("kernel32.dll")]
public static extern IntPtr OpenProcces(int dwDesiredAccess, bool bInheritHandle, int dwProcessId);
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool CloseHandle(IntPtr hObject);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize, out UIntPtr lpNumberOfBytesWritten);
public int pID;
public Form1()
{
InitializeComponent();
GetProcess("muruz");
WriteBytes();
}
public void GetProcess(string name)
{
var pList = Process.GetProcesses();
if (pList.Count != 0) //...........1 ОШИБКА (Слово Count подсвечивается).................!!!
{
foreach (var process in pList)
{
if (process.ProcessName == name)
{
pID = process.Id;
MessageBox.Show("Процес игры найден!");
return;
}
}
}
}
public void WriteBytes()
{
var zenAddress = 0x0F96160C;
byte[] zenBytes = { 0x00, 0x94, 0x35, 0x77 }; // 2kkk zen
var size = 4;
var dummy = new UIntPtr();
var handle = OpenProcess(0x001F0FFF, false, pID); //.........2 ОШИБКА (Слово OpenProcess подсвечивается...!!!
WriteProcessMemory(handle, (IntPtr)zenAddress, zenBytes, (uint)size, out dummy);
CloseHandle(handle);
}
Привет!
УдалитьpList.Count() - вроде бы скобки забыл.
По поводу OpenProcess() - какую ошибку пишет при попытке скомпилировать?
PS: "MuOnline_Editor_v1" - красноречивое название. ;)