Перейти к содержанию

Coder

Ветераны
  • Постов

    815
  • Зарегистрирован

  • Посещение

  • Победитель дней

    13

Весь контент Coder

  1. Здравствуйте! Как в FASM подключиться к процессу по его имени (war3.exe)? Или по его классу? format PE GUI 4.0 entry start include 'd:\Coding\fasm\include\win32a.inc' section '.data' data readable writable error_message db 'Access denited!',0 caption db 'Fasm Trainer',0 pid dd 0 Poke dd _Poke windowcap db 'Warcraft III',0 addr dd адрес godmode_on db байты вкл godmode_off db байты выкл section '.text' code readable executable start: invoke GetModuleHandle,0 invoke DialogBoxParam,eax,37,HWND_DESKTOP,DialogProc,0 invoke ExitProcess,0 proc DialogProc hwnddlg,msg,wparam,lparam cmp [msg],WM_CLOSE je .wmclose cmp [msg],WM_COMMAND je .wmcommand cmp [msg],WM_LBUTTONDOWN je .move xor eax,eax jmp .finish .wmcommand: cmp [wparam],BN_CLICKED shl 16 + 1 je .poke cmp [wparam],BN_CLICKED shl 16 + 2 je .wmclose .poke: invoke Poke,[addr],godmode_on,2 jmp .finish .wmclose: invoke Poke,[addr],godmode_off,2 invoke EndDialog,[hwnddlg],0 .move: invoke SendMessage,[hwnddlg],WM_NCLBUTTONDOWN,2,0 .finish: ret endp proc _Poke,memadd,memval,bytes invoke FindWindow, windowcap, windowcap cmp eax,0 je .error invoke GetWindowThreadProcessId,eax,pid cmp [pid],0 je .error invoke OpenProcess,PROCESS_ALL_ACCESS,0,[pid] cmp eax,0 je .error invoke WriteProcessMemory,eax,[memadd],[memval],[bytes],0 cmp eax,0 je .error ret .error: invoke MessageBox,HWND_DESKTOP,error_message,caption,MB_OK ret endp section '.idata' import data readable writeable library kernel,'kernel32.DLL',\ user,'user32.DLL' import kernel,\ GetModuleHandle,'GetModuleHandleA',\ ExitProcess,'ExitProcess',\ OpenProcess,'OpenProcess',\ WriteProcessMemory,'WriteProcessMemory' import user,\ DialogBoxParam,'DialogBoxParamA',\ EndDialog,'EndDialog',\ MessageBox,'MessageBoxA',\ FindWindow,'FindWindowA',\ GetWindowThreadProcessId,'GetWindowThreadProcessId',\ SendMessage,'SendMessageA' section '.rsrc' resource data readable directory RT_DIALOG,dialogs resource dialogs,37,LANG_ENGLISH+SUBLANG_DEFAULT,demonstration dialog demonstration,'WarCraft +1 trainer',70,70,190,175,WS_POPUP dialogitem 'STATIC','Press OK for toggle godmone on.',-1,0,0,163,188,SS_LEFT + WS_VISIBLE+ SS_CENTER dialogitem 'BUTTON','OK',1,85,150,45,15,WS_VISIBLE dialogitem 'BUTTON','Exit',2,135,150,45,15,WS_VISIBLE enddialog Так как подключиться по имени окна не получается, та же самая проблема возникла и при написании данного трейнера на C#, проблема при подключении к процессу.
  2. Данный код не работает. После того как тыкаешь, чтобы изменить значение, вылетает ошибка на строке if (iRetValue == 0) throw new Exception("CloseHandle Failed"); } Вот моя Form1 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.Runtime.InteropServices; using System.Globalization; using System.Threading; using trainer2; namespace IE { public partial class Form1 : Form { trainer2.Memory oMemory = new Memory(); bool gamehacklab = true; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Process[] aProcesses = Process.GetProcessesByName("war3"); //Имя процесса игры в памяти, пишем без "exe" if (aProcesses.Length != 0) { oMemory.ReadProcess = aProcesses[0]; oMemory.Open(); int myGame_Address = Addr.ToDec("52C0000"); // Статичный адрес указателя int[] myGame_Offsets = { 0x42CA1A }; // Офсеты, смещение пишем в виде 0х-- int bytesWritten; // byte[] bValue_To_Write = BitConverter.GetBytes(15); //3аписиваем 999 количество трутниц string sWritten_Address = oMemory.PointerWrite((IntPtr)myGame_Address, bValue_To_Write, myGame_Offsets, out bytesWritten); if (bytesWritten == bValue_To_Write.Length) label1.Text = ("MapHack Enabled." + "!"); // Выводим текст если изменяется значение else label1.Text = ("MapHack Disabled (Error!). " + ".");// Выводим текст если ничего не получится oMemory.CloseHandle(); } } private void timer1_Tick(object sender, EventArgs e) { Process[] aProcesses = Process.GetProcessesByName("war3"); if (aProcesses.Length != 0) { gamehacklab = true; label2.Text = "Игра запущена"; } else { gamehacklab = false; label2.Text = "Игра Не запущена"; } } } } В чём проблема?
×
×
  • Создать...

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

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