Создаем читы на сишарп (C#) - Разработка ПО для Point Blank - Бюро разработчиков Zhyk.Ru: создание чит-программ и прочего ПО для Point Blank
Результаты опроса: Пригодилась ли вам данная тема?
Да
45
24.32%
Да[х2]
5
2.70%
Да[х3]
73
39.46%
Нет
62
33.51%
08.04.2012, 17:52
#1
Командор
Регистрация: 08.05.2011
Сообщений: 752
Популярность: 18860
Золото Zhyk.Ru: 8
Сказал(а) спасибо: 383
Поблагодарили 1,069 раз(а) в 448 сообщениях
Создаем читы на сишарп (C#)
Создание трейнера на c#
Добрый день всем!
В этой статье я расскажу как сделать Трейнер на C#
[*]Что нам потребуется:
- Microsoft Visual Studio 2010 (Гуглим) Несколько моих вариантов: [Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
[Ссылки могут видеть только зарегистрированные пользователи. ]
- Желание
Обновление 28,04,2012:
Скрины не работают, ну и ладно с ними, скачиваем тестовый архив. Там все сделано.
И так, 4game переименовали процесс пб в PointBlank.exe.exe , что предотвращает поиск процесса по имени (т.к ".exe" считается как расширение, а не название. Короче работать такой принцип не будет.
Самым подходящим вариантом на мой взгляд - подключение к процессу по идентификатору. (есть еще способы, но это самый такой простой и быстрый. Более изощренные методы оставим на потом и в случае фикса такого метода, будем использовать другой
И так, делаем этот поиск по ид.
Добавляем на нашу форму combobox (выпадающий список грубо говоря).
Щелкаем по произвольной зоне формы (свободной от элементов) - делаем действие при открытии формы.
И в открывшемся окне вставляем:
Код:
foreach (Process eProcess in Process.GetProcesses())
{
combobox1.Items.Add(eProcess.Id.ToString() + " - " + eProcess.ProcessName);
}
затем нап потребуется либо постоянно обновляемая функция (с помощью таймера) либо нажатие на кнопку. Короче кидаем на форму кнопку и щелкаем по ней два раза. В открывшемся окошке вставляем:
Код:
string lstbox = combobox1.SelectedItem.ToString();
int ProcessID = int.Parse(combobox1.Remove(combobox1.LastIndexOf(" - ")));
Нужно вынести переменную int ProcessID; в глобальные.
А лучше просто перекачайте архивы с вложения и будет ок (писать много - занят)
--------------------------------------------------------------------------
Если будет что то непонятное, пишем мне в ICQ или ЛС/или Здесь, но глупые вопросы просьба не задавать
Удачных экспериментов.
for objaa,
зы, Свой трейнер обновлю со дня/на день. Просто очень занят был + модерирование занимает время. Короче скоро все будет
________________
Последний раз редактировалось Skilful; 29.04.2012 в 17:32 .
8 пользователя(ей) сказали cпасибо:
08.04.2012, 18:22
#2
Разведчик
Регистрация: 03.04.2012
Сообщений: 7
Популярность: -257
Сказал(а) спасибо: 14
Поблагодарили 7 раз(а) в 7 сообщениях
Re: Создаем читы на сишарп (C#)
Действительно интересно...
Спасибо за гайд.
Щас буду что то мутить!
Я хотел спросить на сишарпе можно вставить текстуру и делать на будон 1 ????
08.04.2012, 18:34
#3
Командор
Регистрация: 08.05.2011
Сообщений: 752
Популярность: 18860
Золото Zhyk.Ru: 8
Сказал(а) спасибо: 383
Поблагодарили 1,069 раз(а) в 448 сообщениях
Re: Создаем читы на сишарп (C#)
________________
08.04.2012, 21:56
#4
Пехотинец
Регистрация: 23.05.2010
Сообщений: 55
Популярность: 1
Сказал(а) спасибо: 67
Поблагодарили 112 раз(а) в 34 сообщениях
Re: Создаем читы на сишарп (C#)
Слушай, как сделать допустим дамаг или любую другую?
Мне без разницы какую функцию просто хочу понять как добавить.
________________
Я та-а-к быстро вспомнил о чем забыл, что забыл о чём вспомнил
[
Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось revi994; 08.04.2012 в 22:07 .
08.04.2012, 22:59
#5
Рыцарь-капитан
Регистрация: 29.01.2010
Сообщений: 547
Популярность: 41279
Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
Re: Создаем читы на сишарп (C#)
тема полезная, надеюсь автор будет ее развивать.
вот исходник vamemory, полезно будет пролистать...
Код:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
namespace Cheat
{
internal class Memory
{
[DllImport("kernel32.dll")]
private static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint nSize,
uint lpNumberOfBytesWritten);
[DllImport("kernel32.dll")]
private static extern IntPtr OpenProcess(uint dwDesiredAccess, bool bInheritHandle, int dwProcessId);
[DllImport("kernel32.dll", SetLastError = true, ExactSpelling = true)]
private static extern IntPtr VirtualAllocEx(IntPtr hProcess, IntPtr lpAddress, uint dwSize,
uint flAllocationType, uint flProtect);
[DllImport("kernel32.dll")]
private static extern bool VirtualProtectEx(IntPtr hProcess, IntPtr lpAddress, UIntPtr dwSize, uint flNewProtect,
out uint lpflOldProtect);
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, uint dwSize,
uint lpNumberOfBytesRead);
public static IntPtr baseAddress;
public static bool debugMode = false;
public static Process[] mainProcess;
public static IntPtr processHandle;
public static ProcessModule processModule;
public static string processName = "PointBlank";
public static bool CheckProcess()
{
if (processName != null)
{
mainProcess = Process.GetProcessesByName(processName);
if (mainProcess.Length == 0)
{
ErrorProcessNotFound(processName);
return false;
}
processHandle = OpenProcess(0x1f0fff, false, mainProcess[0].Id);
if (processHandle == IntPtr.Zero)
{
ErrorProcessNotFound(processName);
return false;
}
return true;
}
MessageBox.Show("Programmer, define process name first!");
return false;
}
[DllImport("kernel32.dll")]
public static extern bool CloseHandle(IntPtr hObject);
public static void ErrorProcessNotFound(string pProcessName)
{
MessageBox.Show(processName + " is not running or has not been found. Please check and try again",
"Process Not Found", MessageBoxButtons.OK, MessageBoxIcon.Hand);
}
public bool ReadBoolean(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToBoolean(ReadByteArray(pOffset, 1), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadByte" + exception.ToString());
}
return false;
}
}
public byte ReadByte(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return ReadByteArray(pOffset, 1)[0];
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadByte" + exception.ToString());
}
return 0;
}
}
public byte[] ReadByteArray(IntPtr pOffset, uint pSize)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
uint num;
VirtualProtectEx(processHandle, pOffset, (UIntPtr) pSize, 4, out num);
byte[] lpBuffer = new byte[pSize];
ReadProcessMemory(processHandle, pOffset, lpBuffer, pSize, 0);
VirtualProtectEx(processHandle, pOffset, (UIntPtr) pSize, num, out num);
return lpBuffer;
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadByteArray" + exception.ToString());
}
return new byte[1];
}
}
public char ReadChar(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToChar(ReadByteArray(pOffset, 1), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadChar" + exception.ToString());
}
return ' ';
}
}
public double ReadDouble(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToDouble(ReadByteArray(pOffset, 8), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadDouble" + exception.ToString());
}
return 0.0;
}
}
public float ReadFloat(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToSingle(ReadByteArray(pOffset, 4), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadFloat" + exception.ToString());
}
return 0f;
}
}
public short ReadInt16(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToInt16(ReadByteArray(pOffset, 2), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadInt16" + exception.ToString());
}
return 0;
}
}
public int ReadInt32(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToInt32(ReadByteArray(pOffset, 4), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadInt32" + exception.ToString());
}
return 0;
}
}
public long ReadInt64(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToInt64(ReadByteArray(pOffset, 8), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadInt64" + exception.ToString());
}
return 0L;
}
}
public int ReadInteger(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToInt32(ReadByteArray(pOffset, 4), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadInteger" + exception.ToString());
}
return 0;
}
}
public long ReadLong(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToInt64(ReadByteArray(pOffset, 8), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadLong" + exception.ToString());
}
return 0L;
}
}
public short ReadShort(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToInt16(ReadByteArray(pOffset, 2), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadInt16" + exception.ToString());
}
return 0;
}
}
public string ReadStringASCII(IntPtr pOffset, uint pSize)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return Encoding.ASCII.GetString(ReadByteArray(pOffset, pSize), 0, (int) pSize);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadStringASCII" + exception.ToString());
}
return "";
}
}
public string ReadStringUnicode(IntPtr pOffset, uint pSize)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return Encoding.Unicode.GetString(ReadByteArray(pOffset, pSize), 0, (int) pSize);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadStringUnicode" + exception.ToString());
}
return "";
}
}
public ushort ReadUInt16(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToUInt16(ReadByteArray(pOffset, 2), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadUInt16" + exception.ToString());
}
return 0;
}
}
public uint ReadUInt32(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToUInt32(ReadByteArray(pOffset, 4), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadUInt32" + exception.ToString());
}
return 0;
}
}
public ulong ReadUInt64(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToUInt64(ReadByteArray(pOffset, 8), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadUInt64" + exception.ToString());
}
return 0L;
}
}
public uint ReadUInteger(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToUInt32(ReadByteArray(pOffset, 4), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadUInteger" + exception.ToString());
}
return 0;
}
}
public long ReadULong(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return (long) BitConverter.ToUInt64(ReadByteArray(pOffset, 8), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadULong" + exception.ToString());
}
return 0L;
}
}
public ushort ReadUShort(IntPtr pOffset)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return BitConverter.ToUInt16(ReadByteArray(pOffset, 2), 0);
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: ReadUShort" + exception.ToString());
}
return 0;
}
}
public bool WriteBoolean(IntPtr pOffset, bool pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteBoolean" + exception.ToString());
}
return false;
}
}
public bool WriteByte(IntPtr pOffset, byte pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes((short) pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteByte" + exception.ToString());
}
return false;
}
}
public static bool WriteByteArray(IntPtr pOffset, byte[] pBytes)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
uint num;
VirtualProtectEx(processHandle, pOffset, (UIntPtr) pBytes.Length, 4, out num);
bool flag = WriteProcessMemory(processHandle, pOffset, pBytes, (uint) pBytes.Length, 0);
VirtualProtectEx(processHandle, pOffset, (UIntPtr) pBytes.Length, num, out num);
return flag;
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteByteArray" + exception.ToString());
}
return false;
}
}
public bool WriteChar(IntPtr pOffset, char pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteChar" + exception.ToString());
}
return false;
}
}
public bool WriteDouble(IntPtr pOffset, double pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteDouble" + exception.ToString());
}
return false;
}
}
public bool WriteFloat(IntPtr pOffset, float pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteFloat" + exception.ToString());
}
return false;
}
}
public bool WriteInt16(IntPtr pOffset, short pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteInt16" + exception.ToString());
}
return false;
}
}
public bool WriteInt32(IntPtr pOffset, int pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteInt32" + exception.ToString());
}
return false;
}
}
public bool WriteInt64(IntPtr pOffset, long pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteInt64" + exception.ToString());
}
return false;
}
}
public bool WriteInteger(IntPtr pOffset, int pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteInt" + exception.ToString());
}
return false;
}
}
public bool WriteLong(IntPtr pOffset, long pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteLong" + exception.ToString());
}
return false;
}
}*/
/*
public bool WriteShort(IntPtr pOffset, short pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteShort" + exception.ToString());
}
return false;
}
}
public bool WriteStringASCII(IntPtr pOffset, string pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, Encoding.ASCII.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteStringASCII" + exception.ToString());
}
return false;
}
}
public bool WriteStringUnicode(IntPtr pOffset, string pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, Encoding.Unicode.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteStringUnicode" + exception.ToString());
}
return false;
}
}
public bool WriteUInt16(IntPtr pOffset, ushort pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteUInt16" + exception.ToString());
}
return false;
}
}
public bool WriteUInt32(IntPtr pOffset, uint pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteUInt32" + exception.ToString());
}
return false;
}
}
public bool WriteUInt64(IntPtr pOffset, ulong pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteUInt64" + exception.ToString());
}
return false;
}
}
public bool WriteUInteger(IntPtr pOffset, uint pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteUInt" + exception.ToString());
}
return false;
}
}
public bool WriteULong(IntPtr pOffset, ulong pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteULong" + exception.ToString());
}
return false;
}
}
public bool WriteUShort(IntPtr pOffset, ushort pData)
{
if (processHandle == IntPtr.Zero)
{
CheckProcess();
}
try
{
return WriteByteArray(pOffset, BitConverter.GetBytes(pData));
}
catch (Exception exception)
{
if (debugMode)
{
Console.WriteLine("Error: WriteShort" + exception.ToString());
}
return false;
}
}
// Properties
public long getBaseAddress
{
get
{
baseAddress = IntPtr.Zero;
processModule = mainProcess[0].MainModule;
baseAddress = processModule.BaseAddress;
return (long) baseAddress;
}
}
// Nested Types
[Flags]
private enum ProcessAccessFlags : uint
{
All = 0x1f0fff,
CreateThread = 2,
DupHandle = 0x40,
QueryInformation = 0x400,
SetInformation = 0x200,
Synchronize = 0x100000,
Terminate = 1,
VMOperation = 8,
VMRead = 0x10,
VMWrite = 0x20
}
private enum VirtualMemoryProtection : uint
{
PAGE_EXECUTE = 0x10,
PAGE_EXECUTE_READ = 0x20,
PAGE_EXECUTE_READWRITE = 0x40,
PAGE_EXECUTE_WRITECOPY = 0x80,
PAGE_GUARD = 0x100,
PAGE_NOACCESS = 1,
PAGE_NOCACHE = 0x200,
PAGE_READONLY = 2,
PAGE_READWRITE = 4,
PAGE_WRITECOPY = 8,
PROCESS_ALL_ACCESS = 0x1f0fff
}
}
}
пример:
Код:
private void eButton1_Click(object sender, EventArgs e)
{
int num = 0x5c1003;
int num2 = 0x5c1027;
int num3 = 0x5c10b7;
byte[] pBytes = new byte[] { 0xeb };
byte[] buffer2 = new byte[] { 0xeb };
byte[] buffer3 = new byte[] { 0x90, 0x90 };
Memory.WriteByteArray((IntPtr)num, pBytes);
Memory.WriteByteArray((IntPtr)num2, buffer2);
Memory.WriteByteArray((IntPtr)num3, buffer3);
}
2 пользователя(ей) сказали cпасибо:
08.04.2012, 23:17
#6
Командор
Регистрация: 08.05.2011
Сообщений: 752
Популярность: 18860
Золото Zhyk.Ru: 8
Сказал(а) спасибо: 383
Поблагодарили 1,069 раз(а) в 448 сообщениях
Re: Создаем читы на сишарп (C#)
________________
09.04.2012, 12:15
#7
Пехотинец
Регистрация: 23.05.2010
Сообщений: 55
Популярность: 1
Сказал(а) спасибо: 67
Поблагодарили 112 раз(а) в 34 сообщениях
Re: Создаем читы на сишарп (C#)
Мне пофиг какую функцию,
Можешь хотябы написать как сделать(если можно код< без адресов а просто написать куда вставить и что)
Вот допустим ультра нож
http://zhyk.ru/forum/showthread.php?t=401260
Как его добавить в программу чтоб нажал кнопку и у тебя в игре ультра нож?
За ранее спс.
________________
Я та-а-к быстро вспомнил о чем забыл, что забыл о чём вспомнил
[
Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось revi994; 09.04.2012 в 12:25 .
09.04.2012, 12:39
#8
Рыцарь-лейтенант
Регистрация: 13.02.2011
Сообщений: 422
Популярность: 13168
Золото Zhyk.Ru: 10
Сказал(а) спасибо: 643
Поблагодарили 733 раз(а) в 369 сообщениях
Re: Создаем читы на сишарп (C#)
09.04.2012, 13:44
#9
Рыцарь-капитан
Регистрация: 29.01.2010
Сообщений: 547
Популярность: 41279
Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
Re: Создаем читы на сишарп (C#)
09.04.2012, 14:09
#10
Пехотинец
Регистрация: 23.05.2010
Сообщений: 55
Популярность: 1
Сказал(а) спасибо: 67
Поблагодарили 112 раз(а) в 34 сообщениях
Re: Создаем читы на сишарп (C#)
Ну вот я хочу узнать можно ли такое замутить если да то как?
________________
Я та-а-к быстро вспомнил о чем забыл, что забыл о чём вспомнил
[
Ссылки могут видеть только зарегистрированные пользователи. ]
09.04.2012, 14:14
#11
Рыцарь-капитан
Регистрация: 29.01.2010
Сообщений: 547
Популярность: 41279
Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
Re: Создаем читы на сишарп (C#)
Цитата:
Ну вот я хочу узнать можно ли такое замутить если да то как?
ассемблер на шарпе:
[
Ссылки могут видеть только зарегистрированные пользователи. ]
[
Ссылки могут видеть только зарегистрированные пользователи. ]
но в гайде приведен пример не чита в длл а в виде полноценного приложения.ехе, те память будет изменяться не в игре а в вашей программе(если вставить ассемблерный код с другой темы). придёться писать отдельные дллки на ассемблере и с помощью трейнера инжектить в игру, имхо оно того не стоит
Последний раз редактировалось warl0ck; 09.04.2012 в 14:19 .
09.04.2012, 15:08
#12
Пехотинец
Регистрация: 23.05.2010
Сообщений: 55
Популярность: 1
Сказал(а) спасибо: 67
Поблагодарили 112 раз(а) в 34 сообщениях
Re: Создаем читы на сишарп (C#)
А через vamemory можно?
Видел BassBoy вроде так, сделал трейнер.
Подскажите как?
________________
Я та-а-к быстро вспомнил о чем забыл, что забыл о чём вспомнил
[
Ссылки могут видеть только зарегистрированные пользователи. ]
09.04.2012, 15:24
#13
Рыцарь-капитан
Регистрация: 29.01.2010
Сообщений: 547
Популярность: 41279
Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
Re: Создаем читы на сишарп (C#)
09.04.2012, 16:57
#14
Командор
Регистрация: 08.05.2011
Сообщений: 752
Популярность: 18860
Золото Zhyk.Ru: 8
Сказал(а) спасибо: 383
Поблагодарили 1,069 раз(а) в 448 сообщениях
Re: Создаем читы на сишарп (C#)
Цитата:
А через vamemory можно?
Видел BassBoy вроде так, сделал трейнер.
Подскажите как?
Тебе же несколько раз сказали, что Функции на асме - нужно переделывать.
Как и что (в словесной фореме) - я тебе написал в прошлом посту. Гайд об этом не буду делать, т.к Если это сделать - начнется создание однотипных трейнеров.
Кстати, бассбой переделывал функции (с асм на такую). Что тебе еще нужно?
Мб ты хочешь полностью исходник трейнера получить? Нет.. В 1 посту написан пример, тебе осталось только найти адрес + аррай байт (на какой править) и все. А это все ты должен делать сам.
________________
09.04.2012, 17:04
#15
Рыцарь-капитан
Регистрация: 29.01.2010
Сообщений: 547
Популярность: 41279
Сказал(а) спасибо: 692
Поблагодарили 2,270 раз(а) в 1,035 сообщениях
Re: Создаем читы на сишарп (C#)
Последний раз редактировалось Skilful; 14.04.2012 в 22:02 .
Пользователь сказал cпасибо:
Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
Похожие темы
Тема
Автор
Раздел
Ответов
Последнее сообщение
[Услуги] ### Создаем ICQ чаты ###
Cerber1993
Товары/услуги в Сети
0
14.11.2010 21:47
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 20:57 .