ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   Блокировка TAB (https://forum.antichat.xyz/showthread.php?t=1516034)

yssimb 13.07.2024 05:52

Я написал скрипт, который по сути должен блокировать TAB, то бишь не давать его открыть. Но чет у меня не получилось, не понял как.

C++:





Код:

#include
#include "main.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
__stdcall
mainloop
(
)
{
static
bool
initialized
=
false
;
if
(
!
initialized
)
{
if
(
GAME
&&
GAME
->
GetSystemState
(
)
==
eSystemState
::
GS_PLAYING_GAME
&&
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
{
initialized
=
true
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"SAMPFUNCS Plugin loaded."
)
;
}
}
else
{
if
(
SF
->
getGame
(
)
->
isKeyDown
(
192
)
)
{
return
;
}
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
SF
->
initPlugin
(
mainloop
,
hModule
)
;
return
TRUE
;
}


moreveal 13.07.2024 08:27

wndproc надо хукать (в сф должна быть соответствующая функция), и там уже возврат делать, в мейнлупе ты никакого влияния не получишь, тут возврат никак не предотвращает нажатие клавиши

и насчёт числа, передаваемого в isKeyDown тож не уверен

вайега52 13.07.2024 09:17

Можно обойтись без прямого хука вндпрока, как вариант, записать в начало функции
Код:

void __thiscall CScoreboard::Enable(void)
опкод выхода.

https://forum.antichat.xyz/attachments/28518538/

C++:





Код:

auto
samp_handle
=
reinterpret_cast

(
GetModuleHandle
(
"samp.dll"
)
)
)
;
// R1: 0x6AD30
// R3: 0x6EC80
*
reinterpret_cast

(
samp_handle
+
0x6EC80
)
=
0xC3
;


moreveal 13.07.2024 09:17

Цитата:

Сообщение от whyega

Можно обойтись без прямого хука вндпрока, как вариант, записать в начало функции
Код:

void __thiscall CScoreboard::Enable(void)
опкод выхода.

C++:





Код:

auto
samp_handle
=
reinterpret_cast

(
GetModuleHandle
(
"samp.dll"
)
)
)
;
// R1: 0x6AD30
// R3: 0x6EC81
*
reinterpret_cast

(
samp_handle
+
0x6EC81
)
=
0xC3
;



да, но вопрос по сф, и плагин назван "скриптом" и т.п., я решил не грузить

yssimb 13.07.2024 16:43

Цитата:

Сообщение от moreveal

сф, и плагин назван "скриптом" и т.п., я решил н

Цитата:

Сообщение от whyega

Можно обойтись без прямого хука вндпрока, как вариант, записать в начало функции
Код:

void __thiscall CScoreboard::Enable(void)
опкод выхода.

C++:





Код:

auto
samp_handle
=
reinterpret_cast

(
GetModuleHandle
(
"samp.dll"
)
)
)
;
// R1: 0x6AD30
// R3: 0x6EC80
*
reinterpret_cast

(
samp_handle
+
0x6EC80
)
=
0xC3
;



https://forum.antichat.xyz/attachments/28518677/

C++:





Код:

#include
#include "main.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
__stdcall
mainloop
(
)
{
static
bool
initialized
=
false
;
if
(
!
initialized
)
{
if
(
GAME
&&
GAME
->
GetSystemState
(
)
==
eSystemState
::
GS_PLAYING_GAME
&&
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
{
initialized
=
true
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"SAMPFUNCS Plugin loaded."
)
;
}
}
else
{
if
(
SF
->
getGame
(
)
->
isKeyPressed
(
192
)
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"нет))"
)
;
auto
samp_handle
=
reinterpret_cast

(
GetModuleHandle
(
"samp.dll"
)
)
;
*
reinterpret_cast

(
samp_handle
+
0x6EC80
)
=
0xC3
;
//return;
}
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
SF
->
initPlugin
(
mainloop
,
hModule
)
;
return
TRUE
;
}



может я не так понял, но оно крашит, даже при открытии консоли сампфункса.

fuflexxxx 13.07.2024 17:09

Цитата:

Сообщение от yssimb

C++:





Код:

#include
#include "main.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
__stdcall
mainloop
(
)
{
static
bool
initialized
=
false
;
if
(
!
initialized
)
{
if
(
GAME
&&
GAME
->
GetSystemState
(
)
==
eSystemState
::
GS_PLAYING_GAME
&&
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
{
initialized
=
true
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"SAMPFUNCS Plugin loaded."
)
;
}
}
else
{
if
(
SF
->
getGame
(
)
->
isKeyPressed
(
192
)
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"нет))"
)
;
auto
samp_handle
=
reinterpret_cast

(
GetModuleHandle
(
"samp.dll"
)
)
;
*
reinterpret_cast

(
samp_handle
+
0x6EC80
)
=
0xC3
;
//return;
}
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
SF
->
initPlugin
(
mainloop
,
hModule
)
;
return
TRUE
;
}



может я не так понял, но оно крашит, даже при открытии консоли сампфункса.

Попробуй права доступа к памяти изменить через VirtualProtect перед записью нового значения.

dertex 13.07.2024 17:19

это конечно очень круто, но позволь поинтересовать зачем тебе блокировать таб?

yssimb 13.07.2024 18:12

Цитата:

Сообщение от dertex

это конечно очень круто, но позволь поинтересовать зачем тебе блокировать таб?

переделываю на цеф его

up

yssimb 15.07.2024 05:04

up

moreveal 15.07.2024 06:26

C++:





Код:

#include
#include "main.h"
SAMPFUNCS
*
SF
=
new
SAMPFUNCS
(
)
;
void
__stdcall
mainloop
(
)
{
static
bool
initialized
=
false
;
if
(
!
initialized
)
{
if
(
GAME
&&
GAME
->
GetSystemState
(
)
==
eSystemState
::
GS_PLAYING_GAME
&&
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
{
initialized
=
true
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
0
,
0xAA
,
0
)
,
"SAMPFUNCS Plugin loaded."
)
;
DWORD oldProtect
;
const
auto
patchAddr
=
SF
->
getSAMP
(
)
->
getSAMPAddr
(
)
+
0x6EC86
;
// R1 - 0x6AD36
VirtualProtect
(
reinterpret_cast

(
patchAddr
)
,
2
,
PAGE_READWRITE
,
&
oldProtect
)
;
*
reinterpret_cast

(
patchAddr
)
=
0xC35E
;
VirtualProtect
(
reinterpret_cast

(
patchAddr
)
,
2
,
oldProtect
,
nullptr
)
;
}
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
SF
->
initPlugin
(
mainloop
,
hModule
)
;
return
TRUE
;
}



Время: 21:02