HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!
Merhaba arkadaşlar bir desteğe ihtiyacım var c# da DINPUT.DLL ile oto toplama yapmayı çözmeyi düşüyorum c# uygulamamı x64 olarak derliyorum lakin oto toplama için tuş ataması yapamıyorum.
DINPUT8.dll+30218 Oyun ekrana tıkladığımda değer 4 Bytes da 1 oluyor ekrandan cıkınca 0 oluyor (Belkide yanlış adresdeyimdir.)
DINPUT8.dll+30281 ise " tuşuna ait olduğunu düşünüyorum (Belkide yanlıştır dicem " ya basınca değer 128 oluyor (4Bytes))
DINPUT8.dll+30283 ise Z tuşuna ait olduğunu düşündüğüm (değer olarak 32768 veriyor)
Böyle bir örneklendirme öğrendim
public class DInputHelper
{
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool WriteProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
ref int lpBuffer,
int dwSize,
out IntPtr lpNumberOfBytesWritten);
private Process _process;
private IntPtr _addrZ;
private IntPtr _addrQuote;
public DInputHelper(string processName, int offsetQuote, int offsetZ)
{
_process = Process.GetProcessesByName(processName).FirstOrDefault();
if (_process == null)
throw new Exception("Process bulunamadı!");
var module = _process.Modules
.Cast<ProcessModule>()
.FirstOrDefault(m => m.ModuleName.ToLower() == "dinput8.dll");
if (module == null)
throw new Exception("Oyunda DINPUT8.dll bulunamadı!");
IntPtr baseAddress = module.BaseAddress;
// Offsetler
_addrQuote = IntPtr.Add(baseAddress, offsetQuote); // " tuşu
_addrZ = IntPtr.Add(baseAddress, offsetZ); // Z tuşu
}
private void PressKey(IntPtr addr)
{
if (addr == IntPtr.Zero) return;
int value = 32768; // Engine de gördüğün değer
WriteProcessMemory(_process.Handle, addr, ref value, 4, out _);
Thread.Sleep(30);
value = 0; // Key
WriteProcessMemory(_process.Handle, addr, ref value, 4, out _);
}
public void PressQuote() => PressKey(_addrQuote);
public void PressZ() => PressKey(_addrZ);
public void PressBoth()
{
PressQuote();
Thread.Sleep(30);
PressZ();
}
}
Ve mobdun ölümünden sonra tuş ataması için
private void Farm()
{
Logger.Log("FarmBot başlatıldı.");
bool isStopping = false;
DInputHelper dinput = null;
try
{
// Güncel offsetler: " = 0x30281, Z = 0x30283
dinput = new DInputHelper("Origins", 0x30281, 0x30283);
}
catch (Exception ex)
{
Logger.LogError(ex, "DInputHelper başlatılırken hata oluştu.");
}
... Sonrasında
_lastTargetVid = 0;
if (dinput != null)
{
try
{
for (int i = 0; i < 3; i++)
{
dinput.PressBoth();
Thread.Sleep(50);
}
}
catch (Exception exKey)
{
Logger.LogError(exKey, "Tuşlara basılırken hata oluştu.");
}
}
}
Desteklerinizi bekliyorum iyi formlar arkadaşlar, bunu öğretebilecek vasa mantğınıda çok sevinirim iyi geceler.
DINPUT8.dll+30218 Oyun ekrana tıkladığımda değer 4 Bytes da 1 oluyor ekrandan cıkınca 0 oluyor (Belkide yanlış adresdeyimdir.)
DINPUT8.dll+30281 ise " tuşuna ait olduğunu düşünüyorum (Belkide yanlıştır dicem " ya basınca değer 128 oluyor (4Bytes))
DINPUT8.dll+30283 ise Z tuşuna ait olduğunu düşündüğüm (değer olarak 32768 veriyor)
Böyle bir örneklendirme öğrendim
public class DInputHelper
{
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool WriteProcessMemory(
IntPtr hProcess,
IntPtr lpBaseAddress,
ref int lpBuffer,
int dwSize,
out IntPtr lpNumberOfBytesWritten);
private Process _process;
private IntPtr _addrZ;
private IntPtr _addrQuote;
public DInputHelper(string processName, int offsetQuote, int offsetZ)
{
_process = Process.GetProcessesByName(processName).FirstOrDefault();
if (_process == null)
throw new Exception("Process bulunamadı!");
var module = _process.Modules
.Cast<ProcessModule>()
.FirstOrDefault(m => m.ModuleName.ToLower() == "dinput8.dll");
if (module == null)
throw new Exception("Oyunda DINPUT8.dll bulunamadı!");
IntPtr baseAddress = module.BaseAddress;
// Offsetler
_addrQuote = IntPtr.Add(baseAddress, offsetQuote); // " tuşu
_addrZ = IntPtr.Add(baseAddress, offsetZ); // Z tuşu
}
private void PressKey(IntPtr addr)
{
if (addr == IntPtr.Zero) return;
int value = 32768; // Engine de gördüğün değer
WriteProcessMemory(_process.Handle, addr, ref value, 4, out _);
Thread.Sleep(30);
value = 0; // Key
WriteProcessMemory(_process.Handle, addr, ref value, 4, out _);
}
public void PressQuote() => PressKey(_addrQuote);
public void PressZ() => PressKey(_addrZ);
public void PressBoth()
{
PressQuote();
Thread.Sleep(30);
PressZ();
}
}
Ve mobdun ölümünden sonra tuş ataması için
private void Farm()
{
Logger.Log("FarmBot başlatıldı.");
bool isStopping = false;
DInputHelper dinput = null;
try
{
// Güncel offsetler: " = 0x30281, Z = 0x30283
dinput = new DInputHelper("Origins", 0x30281, 0x30283);
}
catch (Exception ex)
{
Logger.LogError(ex, "DInputHelper başlatılırken hata oluştu.");
}
... Sonrasında
_lastTargetVid = 0;
if (dinput != null)
{
try
{
for (int i = 0; i < 3; i++)
{
dinput.PressBoth();
Thread.Sleep(50);
}
}
catch (Exception exKey)
{
Logger.LogError(exKey, "Tuşlara basılırken hata oluştu.");
}
}
}
Desteklerinizi bekliyorum iyi formlar arkadaşlar, bunu öğretebilecek vasa mantğınıda çok sevinirim iyi geceler.
Adreslerin doğru olduğunu düşünüyorum çünkü başka benzeyen bir şey yokkiAdresin yanlış muhtemelen sağa sola gidip öyle dene
ilk olarak kullandığın dinput adresi yanlış dinput adresleri her pvp sunucuda aynıdır bunları sana birazdan atacağım ikinci olarak x64 uygulamadan x86 uygulamaya _process.Modules kullanarak x86 uygulamanın modüllerine erişemezsin CreateToolhelp32Snapshot TH32CS_SNAPMODULE32 kullanarak DINPUT8.dll modülbasesini alabilirsin bunu yaptıktan sonra mesajboxda kontrol ettir doğru modül adresi çektiğinden emin olduktan sonra aşağıdaki vericeğim kodları inceliyebilirsin elimde c# kodlar yok fakat mantığı anlamana yardımcı olacaktır
[CODE title="oto toplama"]state.processInfo.dinput8Base = GetModuleBase("DINPUT8.dll", state.processInfo.processId);
if (state.processInfo.dinput8Base != 0) {
state.processInfo.dinputz = state.processInfo.dinput8Base + 0x30280;
state.processInfo.bypassBackground = state.processInfo.dinput8Base + 0x30234;
state.processInfo.dinputctrl = state.processInfo.dinput8Base + 0x30274;
state.processInfo.dinputg = state.processInfo.dinput8Base + 0x3027a;
state.processInfo.dinput1 = state.processInfo.dinput8Base + 0x3025a;
state.processInfo.dinput2 = state.processInfo.dinput8Base + 0x3025a;
state.processInfo.dinput3 = state.processInfo.dinput8Base + 0x3025c;
state.processInfo.dinput4 = state.processInfo.dinput8Base + 0x3025c;
state.processInfo.dinputf1 = state.processInfo.dinput8Base + 0x30292;
state.processInfo.dinputf2 = state.processInfo.dinput8Base + 0x30294;
state.processInfo.dinputf3 = state.processInfo.dinput8Base + 0x30294;
state.processInfo.dinputf4 = state.processInfo.dinput8Base + 0x30296;
state.processInfo.dinputspace = state.processInfo.dinput8Base + 0x30290;
}
void OtoToplamaVoid(UIState& state) {
if (!state.processInfo.processHandle || state.processInfo.dinputz == 0) return;
try {
WriteInt(state.processInfo.dinputz, 32768, state.processInfo.processHandle);
std::this_thread::sleep_for(std::chrono::milliseconds(200));
WriteInt(state.processInfo.dinputz, 0, state.processInfo.processHandle);
} catch (...) {}
}
bool WriteInt(uintptr_t address, int value, HANDLE hProcess) {
if (!hProcess) return false;
return WriteProcessMemory(hProcess, reinterpret_cast<LPVOID>(address), &value, sizeof(int), nullptr);
}[/CODE]
[CODE title="oto toplama"]state.processInfo.dinput8Base = GetModuleBase("DINPUT8.dll", state.processInfo.processId);
if (state.processInfo.dinput8Base != 0) {
state.processInfo.dinputz = state.processInfo.dinput8Base + 0x30280;
state.processInfo.bypassBackground = state.processInfo.dinput8Base + 0x30234;
state.processInfo.dinputctrl = state.processInfo.dinput8Base + 0x30274;
state.processInfo.dinputg = state.processInfo.dinput8Base + 0x3027a;
state.processInfo.dinput1 = state.processInfo.dinput8Base + 0x3025a;
state.processInfo.dinput2 = state.processInfo.dinput8Base + 0x3025a;
state.processInfo.dinput3 = state.processInfo.dinput8Base + 0x3025c;
state.processInfo.dinput4 = state.processInfo.dinput8Base + 0x3025c;
state.processInfo.dinputf1 = state.processInfo.dinput8Base + 0x30292;
state.processInfo.dinputf2 = state.processInfo.dinput8Base + 0x30294;
state.processInfo.dinputf3 = state.processInfo.dinput8Base + 0x30294;
state.processInfo.dinputf4 = state.processInfo.dinput8Base + 0x30296;
state.processInfo.dinputspace = state.processInfo.dinput8Base + 0x30290;
}
void OtoToplamaVoid(UIState& state) {
if (!state.processInfo.processHandle || state.processInfo.dinputz == 0) return;
try {
WriteInt(state.processInfo.dinputz, 32768, state.processInfo.processHandle);
std::this_thread::sleep_for(std::chrono::milliseconds(200));
WriteInt(state.processInfo.dinputz, 0, state.processInfo.processHandle);
} catch (...) {}
}
bool WriteInt(uintptr_t address, int value, HANDLE hProcess) {
if (!hProcess) return false;
return WriteProcessMemory(hProcess, reinterpret_cast<LPVOID>(address), &value, sizeof(int), nullptr);
}[/CODE]
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 3
- Görüntüleme
- 1K
- Cevaplar
- 5
- Görüntüleme
- 607
- Cevaplar
- 8
- Görüntüleme
- 2K
Kontrol Ediliyor
hile yapacakların işine yarayacak paylaşım
- Cevaplar
- 2
- Görüntüleme
- 614
- Cevaplar
- 5
- Görüntüleme
- 475
