HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 03.04.2024, 06:36
F0RQU1N and
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами: 4012500

Репутация: 138


По умолчанию

Цитата:
Сообщение от skrrt  

как можно реализовать привязку сервера, например если подключаешься на IP 127.0.0.1:7777, то будет выводиться определенная функция, а если на другой IP то ничего не будет
gethostbyname проще всего хукнуть
 
Ответить с цитированием

  #2  
Старый 23.04.2024, 12:09
writeline
Новичок
Регистрация: 16.01.2022
Сообщений: 28
С нами: 2276608

Репутация: 8
По умолчанию

Цитата:
Сообщение от skrrt  

как можно реализовать привязку сервера, например если подключаешься на IP 127.0.0.1:7777, то будет выводиться определенная функция, а если на другой IP то ничего не будет
При загрузке плагина добавь проверку наличия "ключа" в строке запуска сампа, при наличии твоего IP будет выполнятся функция, если же его не будет то самп запустится как обычно.

с++:





Код:
BOOL APIENTRY
DllEntryPoint
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
{
DisableThreadLibraryCalls
(
hModule
)
;
TCHAR
*
cmdline
=
GetCommandLine
(
)
;
if
(
StrStr
(
cmdline
,
"127.0.0.1:7777"
)
)
{
// ТУТ ТВОЙ КОД
}
}
return
TRUE
;
LoadLibrary
(
"samp.dll"
)
;
}
 
Ответить с цитированием

  #3  
Старый 23.04.2024, 17:14
вайега52
Флудер
Регистрация: 19.06.2022
Сообщений: 2,997
С нами: 2055431

Репутация: 3


По умолчанию

Цитата:
Сообщение от skrrt  

как можно реализовать привязку сервера, например если подключаешься на IP 127.0.0.1:7777, то будет выводиться определенная функция, а если на другой IP то ничего не будет
Цитата:
Сообщение от writeline  

При загрузке плагина добавь проверку наличия "ключа" в строке запуска сампа, при наличии твоего IP будет выполнятся функция, если же его не будет то самп запустится как обычно.

с++:





Код:
BOOL APIENTRY
DllEntryPoint
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
if
(
dwReasonForCall
==
DLL_PROCESS_ATTACH
)
{
DisableThreadLibraryCalls
(
hModule
)
;
TCHAR
*
cmdline
=
GetCommandLine
(
)
;
if
(
StrStr
(
cmdline
,
"127.0.0.1:7777"
)
)
{
// ТУТ ТВОЙ КОД
}
}
return
TRUE
;
LoadLibrary
(
"samp.dll"
)
;
}

Можно хукнуть метод RakClient, отвечающий за подключение к серверу

C++:





Код:
#include "kthook/kthook.hpp"
using
RakClientConnect_t
=
bool
(
__thiscall
*
)
(
void
*
pRakClient
,
const
char
*
host
,
unsigned
short
serverPort
,
unsigned
short
clientPort
,
unsigned
int
depreciated
,
int
threadSleepTimer
)
;
kthook
::
kthook_simple

(
RakClientConnectHook
)
;
bool
RakClientConnectHooked
(
const
decltype
(
RakClientConnectHook
)
&
hook
,
void
*
pRakClient
,
const
char
*
host
,
unsigned
short
serverPort
,
unsigned
short
clientPort
,
unsigned
int
depreciated
,
int
threadSleepTimer
)
{
if
(
strcmp
(
host
,
"127.0.0.1"
)
==
0
)
)
std
::
cout

(
GetModuleHandle
(
"samp.dll"
)
)
;
RakClientConnectHook
.
set_cb
(
&
RakClientHooked
)
;
RakClientConnectHook
.
set_dest
(
SAMPHandle
+
0x339F0
)
;
// R3
RakClientConnectHook
.
install
(
)
;


Еще к примеру можно хукать какую-нибудь функцию из winsock (получать адрес экпортируемой функции из Ws2_32.dll), но тогда есть вероятность. то функция вызвана не из samp.dll, а например из какого-то плагина
 
Ответить с цитированием

  #4  
Старый 25.04.2024, 18:47
vmprotect
Постоянный
Регистрация: 15.09.2021
Сообщений: 396
С нами: 2453766

Репутация: 68
По умолчанию

Цитата:
Сообщение от why ega  

Можно хукнуть метод RakClient, отвечающий за подключение к серверу

C++:





Код:
#include "kthook/kthook.hpp"
using
RakClientConnect_t
=
bool
(
__thiscall
*
)
(
void
*
pRakClient
,
const
char
*
host
,
unsigned
short
serverPort
,
unsigned
short
clientPort
,
unsigned
int
depreciated
,
int
threadSleepTimer
)
;
kthook
::
kthook_simple

(
RakClientConnectHook
)
;
bool
RakClientConnectHooked
(
const
decltype
(
RakClientConnectHook
)
&
hook
,
void
*
pRakClient
,
const
char
*
host
,
unsigned
short
serverPort
,
unsigned
short
clientPort
,
unsigned
int
depreciated
,
int
threadSleepTimer
)
{
if
(
strcmp
(
host
,
"127.0.0.1"
)
==
0
)
)
std
::
cout

(
GetModuleHandle
(
"samp.dll"
)
)
;
RakClientConnectHook
.
set_cb
(
&
RakClientHooked
)
;
RakClientConnectHook
.
set_dest
(
SAMPHandle
+
0x339F0
)
;
// R3
RakClientConnectHook
.
install
(
)
;


Еще к примеру можно хукать какую-нибудь функцию из winsock (получать адрес экпортируемой функции из Ws2_32.dll), но тогда есть вероятность. то функция вызвана не из samp.dll, а например из какого-то плагина
а через rakclient можно создать коннект на другой айпи ?
 
Ответить с цитированием

  #5  
Старый 25.04.2024, 18:54
0xff
Новичок
Регистрация: 21.03.2006
Сообщений: 17
С нами: 10600540

Репутация: 7
По умолчанию

Цитата:
Сообщение от skrrt  

а через rakclient можно создать коннект на другой айпи ?
на любой можно
 
Ответить с цитированием

  #6  
Старый 25.04.2024, 18:59
vmprotect
Постоянный
Регистрация: 15.09.2021
Сообщений: 396
С нами: 2453766

Репутация: 68
По умолчанию

Цитата:
Сообщение от 0xFF  

на любой можно
а можно пример?
 
Ответить с цитированием

  #7  
Старый 28.04.2024, 11:03
вайега52
Флудер
Регистрация: 19.06.2022
Сообщений: 2,997
С нами: 2055431

Репутация: 3


По умолчанию

Цитата:
Сообщение от skrrt  

а через rakclient можно создать коннект на другой айпи ?
Если я правильно понимаю, ты хочешь изменить айпи при подключении в сампе?

Тогда ты можешь делать что-то типа такого

Цитата:
Сообщение от Спойлер  




C++:





Код:
using
NetGameConnect_t
=
int
(
__thiscall
*
)
(
std
::
uintptr_t
*
netgame
)
;
kthook
::
kthook_simple

NetGameConnectHook
;
// r3
NetGameConnectHook
.
set_dest
(
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
0x85D0
)
;
NetGameConnectHook
.
set_cb
(
[
]
(
const
decltype
(
NetGameConnectHook
)
&
hook
,
std
::
uintptr_t
*
netgame
)
{
char
*
host
=
reinterpret_cast

(
*
netgame
+
0x30
)
;
strcpy
(
host
,
"127.0.0.1"
)
;
*
reinterpret_cast

(
*
netgame
+
0x235
)
=
7777
;
return
hook
.
get_trampoline
(
)
(
netgame
)
;
}
)
;
NetGameConnectHook
.
install
(
)
;
 
Ответить с цитированием

  #8  
Старый 28.04.2024, 12:07
vmprotect
Постоянный
Регистрация: 15.09.2021
Сообщений: 396
С нами: 2453766

Репутация: 68
По умолчанию

Цитата:
Сообщение от why ega  

Если я правильно понимаю, ты хочешь изменить айпи при подключении в сампе?
Тогда ты можешь делать что-то типа такого
Цитата:
Сообщение от Спойлер  


C++:





Код:
using
NetGameConnect_t
=
int
(
__thiscall
*
)
(
std
::
uintptr_t
*
netgame
)
;
kthook
::
kthook_simple

NetGameConnectHook
;
// r3
NetGameConnectHook
.
set_dest
(
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
0x85D0
)
;
NetGameConnectHook
.
set_cb
(
[
]
(
const
decltype
(
NetGameConnectHook
)
&
hook
,
std
::
uintptr_t
*
netgame
)
{
char
*
host
=
reinterpret_cast

(
*
netgame
+
0x30
)
;
strcpy
(
host
,
"127.0.0.1"
)
;
*
reinterpret_cast

(
*
netgame
+
0x235
)
=
7777
;
return
hook
.
get_trampoline
(
)
(
netgame
)
;
}
)
;
NetGameConnectHook
.
install
(
)
;

крашит, при попытке подключения
 
Ответить с цитированием

  #9  
Старый 03.04.2024, 14:24
vmprotect
Постоянный
Регистрация: 15.09.2021
Сообщений: 396
С нами: 2453766

Репутация: 68
По умолчанию

каким образом можно сделать наложение обводки на радар?
 
Ответить с цитированием

  #10  
Старый 14.04.2024, 20:07
middle1221
Новичок
Регистрация: 14.04.2024
Сообщений: 1
С нами: 1097180

Репутация: 1
По умолчанию

Как можно отрисовать imgui меню на android без хука egl swap buffer?
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT ™ © 2001- Antichat Kft.