ROAD TO THE LEGEND
-
Автор темы
- #1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Гайд #3
В прошлом гайде я рассказывал как сделать форму с выбором игр. Сегодня вам расскажу как заставить работать кнопку "Play", или попросту говоря заинжектить длл.
Приступим.
1) Перекидываем файлы из архива в папку с проектом.
2) ПКМ по решению -> add -> existing item, и выбираете файлы, которые вы ранее распаковали.
3) Добавляем эти строчки в самом верху.
2 раза кликаем по кнопке "Play", вставляем данный код (Это как пример, меняйте под себя)
4) Создаём обычный label, в свойствах, в категории "Design" (Name) меняем на "label2", отлично. Меняем Visible на false.
На самом деле это всё. Казалось бы! Но нет. Сохранять на диск с виндой он будет только в том случае, если, если и ещё раз если, наша программа была открыта от имени администратора.
Давайте сделаем проверку.
В "public НАЗВАНИЕ_ПЕРВОЙ_ЗАГРУЖАЕМОЙ_ФОРМЫ(В МОЁМ СЛУЧАЕ Form1)()"
вставляем данный код
(выглядит это как "public Form1()")
На этом месте у вас появятся ошибки. Устраним их. Добавляем на самый верх
Проверяем! При обычном запуске - выскакивает месага, при запуске от имени администратора - всё хорошо заходит.
В прошлом гайде забыл показать отрисовку нижней панели с круглыми углами, 2 раза кликаем по этой панели, туда вставляем этот код.
На этом всё. Думаю сс не нужен
В прошлом гайде я рассказывал как сделать форму с выбором игр. Сегодня вам расскажу как заставить работать кнопку "Play", или попросту говоря заинжектить длл.
Приступим.
1) Перекидываем файлы из архива в папку с проектом.
Пожалуйста, авторизуйтесь для просмотра ссылки.
2) ПКМ по решению -> add -> existing item, и выбираете файлы, которые вы ранее распаковали.
3) Добавляем эти строчки в самом верху.
Код:
using ManualMapInjection.Injection;
using System.IO;
using System.Diagnostics;
using System.Net;
2 раза кликаем по кнопке "Play", вставляем данный код (Это как пример, меняйте под себя)
Код:
WebClient wb = new WebClient();
if (bunifuCustomLabel1.Text == "Counter Strike : Global Offensive")
{
string mainpath = "C:\\Windows\\dll.dll"; //Куда будет сохранятся длл, можно использовать любое имя длл
wb.DownloadFile("http://путь", mainpath); //Ваш путь к скачке длл
var name = "csgo"; //инжект в процесс csgo.exe
var target = Process.GetProcessesByName(name).FirstOrDefault();
var path = mainpath;
var file = File.ReadAllBytes(path);
//Если нет длл
if (!File.Exists(path))
{
MessageBox.Show("Длл не найдена или была не скачана");
return;
}
//Инжект
var injector = new ManualMapInjector(target) { AsyncInjection = true };
label2.Text = $"hmodule = 0x{injector.Inject(file).ToInt64():x8}";
if (System.IO.File.Exists(mainpath)) //Провряем есть ли длл
{
System.IO.File.Delete(mainpath); //Удаляем длл
}
}
else if (bunifuCustomLabel1.Text == "PUBG")
{
string mainpath = "C:\\Windows\\dll.dll"; //Куда будет сохранятся длл, можно использовать любое имя длл
wb.DownloadFile("http://путь", mainpath); //Ваш путь к скачке длл
var name = "pubg"; //инжект в процесс csgo.exe
var target = Process.GetProcessesByName(name).FirstOrDefault();
var path = mainpath;
var file = File.ReadAllBytes(path);
//Если нет длл
if (!File.Exists(path))
{
MessageBox.Show("Длл не найдена или была не скачана");
return;
}
//Инжект
var injector = new ManualMapInjector(target) { AsyncInjection = true };
label2.Text = $"hmodule = 0x{injector.Inject(file).ToInt64():x8}";
if (System.IO.File.Exists(mainpath)) //Провряем есть ли длл
{
System.IO.File.Delete(mainpath); //Удаляем длл
}
}
else if (bunifuCustomLabel1.Text == "Dota 2")
{
string mainpath = "C:\\Windows\\dll.dll"; //Куда будет сохранятся длл, можно использовать любое имя длл
wb.DownloadFile("http://путь", mainpath); //Ваш путь к скачке длл
var name = "dota"; //инжект в процесс csgo.exe
var target = Process.GetProcessesByName(name).FirstOrDefault();
var path = mainpath;
var file = File.ReadAllBytes(path);
//Если нет длл
if (!File.Exists(path))
{
MessageBox.Show("Длл не найдена или была не скачана");
return;
}
//Инжект
var injector = new ManualMapInjector(target) { AsyncInjection = true };
label2.Text = $"hmodule = 0x{injector.Inject(file).ToInt64():x8}";
if (System.IO.File.Exists(mainpath)) //Провряем есть ли длл
{
System.IO.File.Delete(mainpath); //Удаляем длл
}
}
На самом деле это всё. Казалось бы! Но нет. Сохранять на диск с виндой он будет только в том случае, если, если и ещё раз если, наша программа была открыта от имени администратора.
Давайте сделаем проверку.
В "public НАЗВАНИЕ_ПЕРВОЙ_ЗАГРУЖАЕМОЙ_ФОРМЫ(В МОЁМ СЛУЧАЕ Form1)()"
вставляем данный код
(выглядит это как "public Form1()")
Код:
bool isElevated;
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
isElevated = principal.IsInRole(WindowsBuiltInRole.Administrator);
if (isElevated == false)
{
MessageBox.Show("Запустите файл от имени администратора!"); // не обязательно
Environment.Exit(0);
}
Код:
using System.Security.Principal;
В прошлом гайде забыл показать отрисовку нижней панели с круглыми углами, 2 раза кликаем по этой панели, туда вставляем этот код.
Код:
e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
e.Graphics.Clear(panel1.Parent.BackColor);
Control control = panel1;
int radius = 30;
using (System.Drawing.Drawing2D.GraphicsPath path = new System.Drawing.Drawing2D.GraphicsPath())
{
path.AddLine(radius, 0, control.Width - radius, 0);
path.AddArc(control.Width - radius, 0, radius, radius, 270, 90);
path.AddLine(control.Width, radius, control.Width, control.Height - radius);
path.AddArc(control.Width - radius, control.Height - radius, radius, radius, 0, 90);
path.AddLine(control.Width - radius, control.Height, radius, control.Height);
path.AddArc(0, control.Height - radius, radius, radius, 90, 90);
path.AddLine(0, control.Height - radius, 0, radius);
path.AddArc(0, 0, radius, radius, 180, 90);
using (SolidBrush brush = new SolidBrush(control.BackColor))
{
e.Graphics.FillPath(brush, path);
}
}