Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Ошибка в Delphi XE2. Skill Sender

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 29.01.2018, 12:32   #1
 Разведчик
Аватар для Makasas
 
Makasas никому не известный тип
Регистрация: 20.01.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Ошибка в Delphi XE2. Skill Sender

Код:
unit walk_function;

interface

uses
  Windows, Dialogs;
procedure Walk(x, y, z: single; WalkMode: dword);

type
  PParams = ^TParams;

  TParams = packed record
    Param1: dword;
    Param2, Param3, Param4: single;
    PW_GAMERUN_ADDR, Walk1, Walk2, Walk3, Walk_Ofs1: Pointer;
  end;

implementation

uses func, main, setup;

const
  PW_BASE_ADDRESS = $B8FBCC;
  PW_GAMERUN_ADDR = $00B9029C;

var
  rw: cardinal;

procedure InjectFunc(ProcessID: cardinal; func, aParams: Pointer;
  aParamsSize: dword);
var
  hThread: THandle;
  lpNumberOfBytes: dword;
  ThreadAddr, ParamAddr: Pointer;
begin
  if ProcessID <> 0 then
  begin
    // ---- Âûäåëÿåì ìåñòî â ïàìÿòè ïðîöåññà, è çàïèñûâàåì òóäà íàøó ôóíêöèþ
    ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT,
      PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ThreadAddr, func, 256, lpNumberOfBytes);

    // ---- Òàêæå çàïèøåì ïàðàìåòðû ê íåé
    ParamAddr := VirtualAllocEx(ProcessID, nil, aParamsSize, MEM_COMMIT,
      PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize,
      lpNumberOfBytes);

    // ---- Ñîçäàåì ïîòîê, â êîòîðîì âñå ýòî áóäåò âûïîëíÿòüñÿ.
    hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0,
      lpNumberOfBytes);

    // ---- Îæèäàåì çàâåðøåíèÿ ôóíêöèè
    WaitForSingleObject(hThread, INFINITE);

    // ---- ïîä÷èùàåì çà ñîáîé
    CloseHandle(hThread);
    VirtualFreeEx(ProcessID, ParamAddr, 0, MEM_RELEASE);
    VirtualFreeEx(ProcessID, ThreadAddr, 0, MEM_RELEASE);
  end

end;

Ругается на строчку
Код:
WriteProcessMemory(ProcessID, ThreadAddr, func, 256, lpNumberOfBytes);
[DCC Error] walk_function.pas(41): E2033 Types of actual and formal var parameters must be identical.
Помогите :с
  Ответить с цитированием
Старый 30.01.2018, 12:30   #2
 Разведчик
Аватар для dvamaster
 
dvamaster никому не известный тип
Регистрация: 12.08.2012
Сообщений: 26
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 5 раз(а) в 2 сообщениях
 
По умолчанию Re: Ошибка в Delphi XE2. Skill Sender

Объяви lpNumberOfBytes как NativeUInt. Это сделали для совместимости с X64.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Старый 01.02.2018, 19:30   #3
 Разведчик
Аватар для fds255
 
fds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известен
Регистрация: 23.06.2012
Сообщений: 43
Популярность: 427
Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
 
По умолчанию Re: Ошибка в Delphi XE2. Skill Sender

Попробуй так: lpNumberOfBytes:SIZE_T;
________________
MultiXBot
MultiX_POT
  Ответить с цитированием
Старый 02.02.2018, 12:27   #4
 Разведчик
Аватар для Makasas
 
Makasas никому не известный тип
Регистрация: 20.01.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Ошибка в Delphi XE2. Skill Sender

Короче я уже сделал, объявил как NativeUInt. На строчку
Цитата:
WriteProcessMemory(ProcessID, ThreadAddr, func, 256, lpNumberOfBytes);

уже не ругается. Но теперь такая же ошибка на строчке
Цитата:
hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0, lpNumberOfBytes);

Вот код :
Цитата:
unit walk_function;

interface

uses
Windows, Dialogs;
procedure Walk(x, y, z: single; WalkMode: dword);

type
PParams = ^TParams;

TParams = packed record
Param1: dword;
Param2, Param3, Param4: single;
PW_GAMERUN_ADDR, Walk1, Walk2, Walk3, Walk_Ofs1: Pointer;
end;

implementation

uses func, main, setup;

const
PW_BASE_ADDRESS = $B8FBCC;
PW_GAMERUN_ADDR = $00B9029C;

var
rw: cardinal;

procedure InjectFunc(ProcessID: cardinal; func, aParams: Pointer;
aParamsSize: dword);
var
hThread: THandle;
lpNumberOfBytes:NativeUInt;
ThreadAddr, ParamAddr: Pointer;
begin
if ProcessID <> 0 then
begin
// ---- Âûäåëÿåì ìåñòî â ïàìÿòè ïðîöåññà, è çàïèñûâàåì òóäà íàøó ôóíêöèþ
ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT,
PAGE_READWRITE);
WriteProcessMemory(ProcessID, ThreadAddr, func, 256, lpNumberOfBytes);

// ---- Òàêæå çàïèøåì ïàðàìåòðû ê íåé
ParamAddr := VirtualAllocEx(ProcessID, nil, aParamsSize, MEM_COMMIT,
PAGE_READWRITE);
WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize,
lpNumberOfBytes);

// ---- Ñîçäàåì ïîòîê, â êîòîðîì âñå ýòî áóäåò âûïîëíÿòüñÿ.
hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0,
lpNumberOfBytes);

// ---- Îæèäàåì çàâåðøåíèÿ ôóíêöèè
WaitForSingleObject(hThread, INFINITE);

// ---- ïîä÷èùàåì çà ñîáîé
CloseHandle(hThread);
VirtualFreeEx(ProcessID, ParamAddr, 0, MEM_RELEASE);
VirtualFreeEx(ProcessID, ThreadAddr, 0, MEM_RELEASE);
end

end;

  Ответить с цитированием
Старый 02.02.2018, 18:48   #5
 Разведчик
Аватар для Etliche
 
Etliche на правильном путиEtliche на правильном пути
Регистрация: 19.01.2016
Сообщений: 1
Популярность: 146
Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 2 сообщениях
 
По умолчанию Re: Ошибка в Delphi XE2. Skill Sender

В этой строке не нужно lpNumberOfBytes. Нужно нечто типа cardinal.
  Ответить с цитированием
Старый 04.02.2018, 20:07   #6
 Разведчик
Аватар для Makasas
 
Makasas никому не известный тип
Регистрация: 20.01.2014
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Ошибка в Delphi XE2. Skill Sender

Всё. Уже сделал, теперь не ругается на это ._.
Сделал как сказал fds255, спасибо огромное ! Если кому надо :
Код:
var
  hThread: THandle;
  lpNumberOfBytes: SIZE_T;
  lpNumberOfBytes2: dword;
  ThreadAddr, ParamAddr: Pointer;
begin
  if ProcessID <> 0 then
  begin
    // ---- Âûäåëÿåì ìåñòî â ïàìÿòè ïðîöåññà, è çàïèñûâàåì òóäà íàøó ôóíêöèþ
    ThreadAddr := VirtualAllocEx(ProcessID, nil, 256, MEM_COMMIT,
      PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ThreadAddr, func, 256, lpNumberOfBytes);

    // ---- Òàêæå çàïèøåì ïàðàìåòðû ê íåé
    ParamAddr := VirtualAllocEx(ProcessID, nil, aParamsSize, MEM_COMMIT,
      PAGE_READWRITE);
    WriteProcessMemory(ProcessID, ParamAddr, aParams, aParamsSize,
      lpNumberOfBytes);

    // ---- Ñîçäàåì ïîòîê, â êîòîðîì âñå ýòî áóäåò âûïîëíÿòüñÿ.
    hThread := CreateRemoteThread(ProcessID, nil, 0, ThreadAddr, ParamAddr, 0,
    lpNumberOfBytes2);

    // ---- Îæèäàåì çàâåðøåíèÿ ôóíêöèè
    WaitForSingleObject(hThread, INFINITE);

    // ---- ïîä÷èùàåì çà ñîáîé
    CloseHandle(hThread);
    VirtualFreeEx(ProcessID, ParamAddr, 0, MEM_RELEASE);
    VirtualFreeEx(ProcessID, ThreadAddr, 0, MEM_RELEASE);
  end

end;
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
1.5.1 Skill Sender jv1989 Общение и обсуждение Perfect World 2 07.11.2017 18:45
Skill Sender Makasas Общение разработчиков 0 16.10.2017 21:04

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 19:39.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net