Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
c# inject
#1
Столкнулся с такой проблемой
Делаю лаунчер и пытаюсь чтобы при запуске клиента шёл инжект .dll и смена байт по определенном адресу
Вот инжект .dll как то сделал, но сменить при этом байты по определенному адресу не знаю как
Может ли кто-нибудь дать пример как такое можно реализовать?
Ответ
#2
Вроде нашел пример, но теперь такая ошибка
Код:
System.ComponentModel.Win32Exception: "32-разрядные процессы не могут получить доступ к 64-разрядному процессу."

вот код
[SRC="csharp"]
private void Start_Click(object sender, RoutedEventArgs e)
{
Process.Start("BlackDesert64.exe", "Kirito," + "135635");
Thread.Sleep(1500);
string strDLLName = "steam_api64.dll";
int processId = GetProcessId("BlackDesert64");
if (processId >= 0)
{
InjectDLL(OpenProcess(2035711U, 1, processId), strDLLName);
Thread.Sleep(500);
Process[] processesByName = Process.GetProcessesByName("BlackDesert64");
int processHandle = OpenProcess(0x1F0FFF, false, processesByName[0].Id);
ReadProcessMemory(processesByName[0].MainModule.BaseAddress.ToInt64() + 43055736L, 11, processHandle);
string hex = ConvertStringToHex("127.0.0.1");
WriteProcessMemory(processesByName[0].MainModule.BaseAddress.ToInt64() + 43055736L, StringToByteArray(hex), processHandle);
}
}
[/SRC]
[SRC="csharp"]
[DllImport("kernel32.dll")]
public static extern bool ReadProcessMemory(int hProcess, long lpBaseAddress, byte[] buffer, int size, int lpNumberOfBytesRead);
[/SRC]
Ответ
#3
inject dll происходит, но вот изменить байты по адресу не дает
как исправить это?
Код:
32-разрядные процессы не могут получить доступ к 64-разрядному процессу.
Ответ
#4
Ну так видимо твоё приложение работает как 32-разрядное.
Ответ
#5
PROGRAMMATOR Написал:Ну так видимо твоё приложение работает как 32-разрядное.

а как или где это исправить?
Ответ
#6
https://docs.microsoft.com/ru-ru/visuals...-platforms

+

[SRC="csharp"]bool ReadProcessMemory(Int64 hProcess, ...)
[/SRC]
Ответ
#7
PROGRAMMATOR Написал:https://docs.microsoft.com/ru-ru/visuals...-platforms

+

[SRC="csharp"]bool ReadProcessMemory(Int64 hProcess, ...)
[/SRC]

спасибо помогло, такой еще вопрос может просто я не заметил
но у меня он меняет ip не на 127.0.0.1 а на 127.0.0.120
почему так выходит?
Ответ
#8
Покажи WriteProcessMemory и ConvertStringToHex
Ответ
#9
ConvertStringToHex

WriteProcessMemory
Ответ
#10
Ещё StringToByteArray сбрось.

Что-то ты странное делаешь.

[SRC="csharp"]var addressBytes = IPAddress.Parse("127.0.0.1")
.GetAddressBytes();
[/SRC]
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 4 Гость(ей)