Перейти к содержанию
Авторизация  
Гость Killer23

Проблемма с трейнером

Рекомендуемые сообщения

Гость Killer23


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;[/size][/font][/color]
[color=#282828][font=helvetica, arial, sans-serif][size=4]namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
[DllImport("kernel32.dll")]
public static extern IntPtr OpenProcess(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);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [Out] byte[] lpBuffer, int dwSize, out int lpNumberOfBytesRead);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [Out, MarshalAs(UnmanagedType.AsAny)] object lpBuffer, int dwSize, out int lpNumberOfBytesRead);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, int dwSize, out int lpNumberOfBytesRead);
public int pID;
public Form1()
{
InitializeComponent();
GetProcess("TombRaider");
FindSignature();[/size][/font][/color]
[color=#282828][font=helvetica, arial, sans-serif][size=4] }
public void GetProcess(string name)
{
var plist = Process.GetProcesses();
if (plist.Count() != 0)
{
foreach (var process in plist)
{
if (process.ProcessName == name)
{
pID = process.Id;
MessageBox.Show("Процесс найден!");
return;
}
}
}
return;
}[/size][/font][/color]
[color=#282828][font=helvetica, arial, sans-serif][size=4] public int FindSignature()
{
var moduleName = "TombRaider.exe";
var startAddress = 0;
var sizeToAllocate = 0;
var pattern = new int[] {0x3B, 0x51, 0x0C, 0x7D, 0x77, 0x53, 0x8B, 0x5D, 0x0C, 0x3B, 0xDF, 0x7C, 0x6E, 0x3B, 0x59, 0x08, 0x7D, 0x69, 0x8B, 0xB8, 0xD0, 0x00, 0x00, 0x00, 0x8B, 0x80, 0xCC, 0x00, 0x00, 0x00, 0x0F, 0xAF};
if (pID != 0)
{
foreach (var p in Process.GetProcesses())
{
if (p.Id == pID)
{
foreach (ProcessModule m in p.Modules)
{
if (m.ModuleName == moduleName)
{
startAddress = (int)m.BaseAddress;
sizeToAllocate = m.ModuleMemorySize;
break;
}
}
}
}
var handle = OpenProcess(0x001F0FFF, false, pID);
if (handle != IntPtr.Zero)
{
byte[] buffer = new byte[sizeToAllocate];
int bytesread;
ReadProcessMemory(handle, (IntPtr)startAddress, buffer, sizeToAllocate, out bytesread);
CloseHandle(handle);
var counter = 0;
if (pattern.Length <= buffer.Length)
{
for (var i = 0; i < buffer.Length; i++)
{
if (buffer[i] == pattern[0] | pattern[0] == -1)
{
for (var j = 0; j < pattern.Length; j++)
{
if (buffer[i + j] == pattern[j] | pattern[j] == -1)
{
counter++;
if (counter == pattern.Length)
{
var result = i + startAddress;
return (int)result;
}
}
else
{
counter = 0;
}
}
}
}
}
}
}
return -1;
}[/size][/font][/color]
[color=#282828][font=helvetica, arial, sans-serif][size=4] public void WriteBytes(int address, byte[] bytes)
{
var dummy = new UIntPtr();
if (pID != 0)
{
var handle = OpenProcess(0x001F0FFF, false, pID);
WriteProcessMemory(handle, (IntPtr)address, bytes, (uint)bytes.Length, out dummy);
CloseHandle(handle);
}
}[/size][/font][/color]
[color=#282828][font=helvetica, arial, sans-serif][size=4] private void button1_Click(object sender, EventArgs e)
{
var myFoundAddress = FindSignature(); //Вызов возвратит тебе или -1 (если не нашёл), или адрес (если нашёл)
if (myFoundAddress != -1)//Проверяем, что адрес найден
{
//var handle = OpenProcess(All, false, pID);//Получаем хендл процесса с правами на запись в память
//if(handle!=0)//Проверяем, что хэндл получен[/size][/font][/color]

[color=#282828][font=helvetica, arial, sans-serif][size=4] byte[] myValues = new byte[] { 0x90, 0x90, 0x90 };
var size = 3;
var dummy = new UIntPtr();
var handle = OpenProcess(0x1F0FFF, false, pID);
WriteProcessMemory(handle, (IntPtr)myFoundAddress, myValues, (uint)size, out dummy);//Пишем 0)
CloseHandle(handle); //Закрываем хэндл[/size][/font][/color]
[color=#282828][font=helvetica, arial, sans-serif][size=4] }
}
}
}

посмотрите пожалуйста что тут не так???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для начала очисти код от лишних бб-кодов (скорее всего, они попали сюда и в твой код из-за копипасты).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость Killer23

Для начала очисти код от лишних бб-кодов (скорее всего, они попали сюда и в твой код из-за копипасты).

они сюда попали после того как я вставил код


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
[DllImport("kernel32.dll")]
public static extern IntPtr OpenProcess(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);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [Out] byte[] lpBuffer, int dwSize, out int lpNumberOfBytesRead);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, [Out, MarshalAs(UnmanagedType.AsAny)] object lpBuffer, int dwSize, out int lpNumberOfBytesRead);
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, IntPtr lpBuffer, int dwSize, out int lpNumberOfBytesRead);
public int pID;
public Form1()
{
InitializeComponent();
GetProcess("TombRaider");
FindSignature();
}
public void GetProcess(string name)
{
var plist = Process.GetProcesses();
if (plist.Count() != 0)
{
foreach (var process in plist)
{
if (process.ProcessName == name)
{
pID = process.Id;
MessageBox.Show("Процесс найден!");
return;
}
}
}
return;
}
public int FindSignature()
{
var moduleName = "TombRaider.exe";
var startAddress = 0;
var sizeToAllocate = 0;
var pattern = new int[] {0x3B, 0x51, 0x0C, 0x7D, 0x77, 0x53, 0x8B, 0x5D, 0x0C, 0x3B, 0xDF, 0x7C, 0x6E, 0x3B, 0x59, 0x08, 0x7D, 0x69, 0x8B, 0xB8, 0xD0, 0x00, 0x00, 0x00, 0x8B, 0x80, 0xCC, 0x00, 0x00, 0x00, 0x0F, 0xAF};
if (pID != 0)
{
foreach (var p in Process.GetProcesses())
{
if (p.Id == pID)
{
foreach (ProcessModule m in p.Modules)
{
if (m.ModuleName == moduleName)
{
startAddress = (int)m.BaseAddress;
sizeToAllocate = m.ModuleMemorySize;
break;
}
}
}
}
var handle = OpenProcess(0x001F0FFF, false, pID);
if (handle != IntPtr.Zero)
{
byte[] buffer = new byte[sizeToAllocate];
int bytesread;
ReadProcessMemory(handle, (IntPtr)startAddress, buffer, sizeToAllocate, out bytesread);
CloseHandle(handle);
var counter = 0;
if (pattern.Length <= buffer.Length)
{
for (var i = 0; i < buffer.Length; i++)
{
if (buffer[i] == pattern[0] | pattern[0] == -1)
{
for (var j = 0; j < pattern.Length; j++)
{
if (buffer[i + j] == pattern[j] | pattern[j] == -1)
{
counter++;
if (counter == pattern.Length)
{
var result = i + startAddress;
return (int)result;
}
}
else
{
counter = 0;
}
}
}
}
}
}
}
return -1;
}
public void WriteBytes(int address, byte[] bytes)
{
var dummy = new UIntPtr();
if (pID != 0)
{
var handle = OpenProcess(0x001F0FFF, false, pID);
WriteProcessMemory(handle, (IntPtr)address, bytes, (uint)bytes.Length, out dummy);
CloseHandle(handle);
}
}
private void button1_Click(object sender, EventArgs e)
{
var myFoundAddress = FindSignature(); //Вызов возвратит тебе или -1 (если не нашёл), или адрес (если нашёл)
if (myFoundAddress != -1)//Проверяем, что адрес найден
{
//var handle = OpenProcess(All, false, pID);//Получаем хендл процесса с правами на запись в память
//if(handle!=0)//Проверяем, что хэндл получен

byte[] myValues = new byte[] { 0x90, 0x90, 0x90 };
var size = 3;
var dummy = new UIntPtr();
var handle = OpenProcess(0x1F0FFF, false, pID);
WriteProcessMemory(handle, (IntPtr)myFoundAddress, myValues, (uint)size, out dummy);//Пишем 0)
CloseHandle(handle); //Закрываем хэндл
}
}
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все правильно, все работает!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В конце кода добавь скобку "}".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

×

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.