|
Ошибка в Delphi XE2. Skill Sender - Общение разработчиков - Программирование для Perfect World, общение и обсуждене разработок |
29.01.2018, 12:32
|
#1
|
|
|
|
Разведчик
|
Регистрация: 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
|
|
|
|
Разведчик
|
Регистрация: 12.08.2012
Сообщений: 26
Популярность: 10
Сказал(а) спасибо: 1
Поблагодарили 5 раз(а) в 2 сообщениях
|
Re: Ошибка в Delphi XE2. Skill Sender
Объяви lpNumberOfBytes как NativeUInt. Это сделали для совместимости с X64.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
|
|
|
01.02.2018, 19:30
|
#3
|
|
|
|
Разведчик
|
Регистрация: 23.06.2012
Сообщений: 43
Популярность: 427
Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
|
Re: Ошибка в Delphi XE2. Skill Sender
Попробуй так: lpNumberOfBytes:SIZE_T;
|
|
|
02.02.2018, 12:27
|
#4
|
|
|
|
Разведчик
|
Регистрация: 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
|
|
|
|
Разведчик
|
Регистрация: 19.01.2016
Сообщений: 1
Популярность: 146
Сказал(а) спасибо: 0
Поблагодарили 5 раз(а) в 2 сообщениях
|
Re: Ошибка в Delphi XE2. Skill Sender
В этой строке не нужно lpNumberOfBytes. Нужно нечто типа cardinal.
|
|
|
04.02.2018, 20:07
|
#6
|
|
|
|
Разведчик
|
Регистрация: 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;
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
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.
|
|