
01.10.2019, 09:57
|
|
Постоянный
Регистрация: 25.12.2018
Сообщений: 568
С нами:
3886298
Репутация:
113
|
|
Сообщение от Skeezzy
Не работает
ты пишешь в раздел для помощи где помогают в основном по DLL а не по EXE
Сообщение от ШPEK
C++:
Код:
if
(
GetAsyncKeyState
(
0x39
)
)
{
//Code
while
(
GetAsyncKeyState
(
0x39
)
)
Sleep
(
100
)
;
}
нахуя тут слип
|
|
|

01.10.2019, 10:01
|
|
Флудер
Регистрация: 08.11.2017
Сообщений: 4,787
С нами:
4480376
Репутация:
183
|
|
Сообщение от белебей
ты пишешь в раздел для помощи где помогают в основном по DLL а не по EXE
нахуя тут слип
это общий раздел с++, да и разница с длл и exe не велика, не неси ***ни
|
|
|

01.10.2019, 10:07
|
|
Постоянный
Регистрация: 25.12.2018
Сообщений: 568
С нами:
3886298
Репутация:
113
|
|
Сообщение от DonHomka
это общий раздел с++, да и разница с длл и exe не велика, не неси ***ни
я сказал в основном.
в EXE мы работаем со своим процессом, а в DLL с чужим.
форум в основном посвещен GTA:SAMP, т.е соответственно работа с чужим процессом 😀
|
|
|

08.10.2019, 21:40
|
|
Участник форума
Регистрация: 10.07.2018
Сообщений: 143
С нами:
4128555
Репутация:
68
|
|
Слушайте, такое дело:
Есть кастомный самп клиент, там оффсеты другие (луашные методы, связанные с сампом там не работают)
Нужно как-то ловить функцию SetPlayerHealth (0x15BA0) и игнорировать её посредством чтения памяти, а не какими-либо готовыми функциями sampfuncs'a или луа.
Как это можно сделать?
Как я понял, сначала нужно взять хэндл dll'а сампа
GetModuleHandle(L"samp.dll");
И к этому значению прибавить 0x15BA0?
Как это вообще работает?
|
|
|

10.10.2019, 10:33
|
|
Участник форума
Регистрация: 06.01.2016
Сообщений: 154
С нами:
5447649
Репутация:
28
|
|
Сообщение от 0xNull_Dll
Слушайте, такое дело:
Есть кастомный самп клиент, там оффсеты другие (луашные методы, связанные с сампом там не работают)
Нужно как-то ловить функцию SetPlayerHealth (0x15BA0) и игнорировать её посредством чтения памяти, а не какими-либо готовыми функциями sampfuncs'a или луа.
Как это можно сделать?
Как я понял, сначала нужно взять хэндл dll'а сампа
GetModuleHandle(L"samp.dll");
И к этому значению прибавить 0x15BA0?
Как это вообще работает?
Как вариант, в Cheat Engine поставить брейкпоинт на запись в адрес здоровья игрока, заставить сервер вызвать SetPlayerHealth, найти место где устанавливается хп, это и будет функция SetPlayerHealth. Для нопа функции в ее начале установить байты C2 04 00
|
|
|

08.10.2019, 22:21
|
|
Флудер
Регистрация: 18.03.2013
Сообщений: 4,080
С нами:
6921957
Репутация:
183
|
|
Советую уйти в RakPeer и RakClient хуки. ПО твоей теме пару страниц назад уже был подобный вопрос.
|
|
|

08.10.2019, 22:23
|
|
Участник форума
Регистрация: 19.01.2017
Сообщений: 130
С нами:
4901705
Репутация:
98
|
|
are there any tutorials on how to find this SAMP_CMP "F8036A004050518D4C24" ?
|
|
|

08.10.2019, 22:39
|
|
Новичок
Регистрация: 18.10.2015
Сообщений: 6
С нами:
5563739
Репутация:
0
|
|
Сообщение от _=Gigant=_
are there any tutorials on how to find this SAMP_CMP "F8036A004050518D4C24" ?
|
|
|

14.10.2019, 00:19
|
|
Постоянный
Регистрация: 28.02.2018
Сообщений: 307
С нами:
4319022
Репутация:
113
|
|
Помомогите пожалуйста с опредением загруженого модуля(сф плагина) в гташку?
Так как название файла сф плагина можна пожно изменить я написал функцию которая по идее должна определять загружен ли плагин в игру или нет, название плагина CMDHelper.sf
я хотел делать так если в памяти выделенной под модуль есть определенная строка то это тот модуль который мне нужен, но не не работает
C++:
Код:
#define CMDHELPER_CHECK 0x172C8
HANDLE CmdEdit
::
CheckCMDHelperHANDLE
(
)
{
static
const
char
*
checkStr
=
"{FFA0661D}[blast.hk] {FFFFFF}CMD helper by {FFA0661D}MISTER_GONWIK"
;
HANDLE hProcess
;
HMODULE hMods
[
1024
]
;
DWORD cbNeeded
;
hProcess
=
GetCurrentProcess
(
)
;
if
(
NULL
==
hProcess
)
return
NULL
;
HMODULE ret
=
NULL
;
if
(
K32EnumProcessModules
(
hProcess
,
hMods
,
sizeof
(
hMods
)
,
&
cbNeeded
)
!=
NULL
)
{
DWORD dwProt
;
MODULEINFO module_info
;
MEMORY_BASIC_INFORMATION mem_info
;
TCHAR szModName
[
MAX_PATH
]
;
DWORD base
;
for
(
int
i
=
0
;
i
CMDHELPER_CHECK
+
strlen
(
checkStr
)
+
1
)
{
if
(
VirtualQuery
(
(
void
*
)
(
base
+
CMDHELPER_CHECK
)
,
&
mem_info
,
sizeof
(
mem_info
)
)
!=
NULL
)
{
if
(
mem_info
.
Protect
==
PAGE_READONLY
&&
(
DWORD
)
mem_info
.
AllocationBase
+
mem_info
.
RegionSize
>
base
+
CMDHELPER_CHECK
+
strlen
(
checkStr
)
+
1
)
{
if
(
!
strcmp
(
(
const
char
*
)
(
hMods
[
i
]
+
CMDHELPER_CHECK
)
,
checkStr
)
)
ret
=
hMods
[
i
]
;
else
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"INC STR %s"
,
szModName
)
;
}
}
else
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"ERR %s (0x%08X) %u"
,
szModName
,
hMods
[
i
]
,
GetLastError
(
)
)
;
}
}
}
CloseHandle
(
hProcess
)
;
return
ret
;
}
|
|
|

14.10.2019, 00:58
|
|
Постоянный
Регистрация: 25.12.2018
Сообщений: 568
С нами:
3886298
Репутация:
113
|
|
Сообщение от Stiopko
Помомогите пожалуйста с опредением загруженого модуля(сф плагина) в гташку?
Так как название файла сф плагина можна пожно изменить я написал функцию которая по идее должна определять загружен ли плагин в игру или нет, название плагина CMDHelper.sf
я хотел делать так если в памяти выделенной под модуль есть определенная строка то это тот модуль который мне нужен, но не не работает
C++:
Код:
#define CMDHELPER_CHECK 0x172C8
HANDLE CmdEdit
::
CheckCMDHelperHANDLE
(
)
{
static
const
char
*
checkStr
=
"{FFA0661D}[blast.hk] {FFFFFF}CMD helper by {FFA0661D}MISTER_GONWIK"
;
HANDLE hProcess
;
HMODULE hMods
[
1024
]
;
DWORD cbNeeded
;
hProcess
=
GetCurrentProcess
(
)
;
if
(
NULL
==
hProcess
)
return
NULL
;
HMODULE ret
=
NULL
;
if
(
K32EnumProcessModules
(
hProcess
,
hMods
,
sizeof
(
hMods
)
,
&
cbNeeded
)
!=
NULL
)
{
DWORD dwProt
;
MODULEINFO module_info
;
MEMORY_BASIC_INFORMATION mem_info
;
TCHAR szModName
[
MAX_PATH
]
;
DWORD base
;
for
(
int
i
=
0
;
i
CMDHELPER_CHECK
+
strlen
(
checkStr
)
+
1
)
{
if
(
VirtualQuery
(
(
void
*
)
(
base
+
CMDHELPER_CHECK
)
,
&
mem_info
,
sizeof
(
mem_info
)
)
!=
NULL
)
{
if
(
mem_info
.
Protect
==
PAGE_READONLY
&&
(
DWORD
)
mem_info
.
AllocationBase
+
mem_info
.
RegionSize
>
base
+
CMDHELPER_CHECK
+
strlen
(
checkStr
)
+
1
)
{
if
(
!
strcmp
(
(
const
char
*
)
(
hMods
[
i
]
+
CMDHELPER_CHECK
)
,
checkStr
)
)
ret
=
hMods
[
i
]
;
else
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"INC STR %s"
,
szModName
)
;
}
}
else
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"ERR %s (0x%08X) %u"
,
szModName
,
hMods
[
i
]
,
GetLastError
(
)
)
;
}
}
}
CloseHandle
(
hProcess
)
;
return
ret
;
}
Нихуя не понял, но очень интересно.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|