 |
|

09.12.2020, 09:49
|
|
Постоянный
Регистрация: 28.03.2013
Сообщений: 495
С нами:
6908018
Репутация:
213
|
|
Сообщение от Smeruxa
Как проверить, запущен ли определенный процесс в диспетчере задач?
сканить все процессы через: Process32First и Process32Next.
если нужно именно работать с диспетчером, то инжектишь туда dll и уже хукаешь эти функции в нём.
|
|
|

10.12.2020, 17:36
|
|
Познающий
Регистрация: 19.11.2020
Сообщений: 44
С нами:
2885808
Репутация:
13
|
|
Сообщение от memir
Действительно, делай static
Сообщение от Спойлер
Ебани __cdecl метод, дальше в тханке пушь указатель на свой объект, делай call на обработчик, затем вытаскивай запушеные четыре байта, ретайся (первым аргументом в обработчике придется сделать адрес возврата).
допустим callback я сделал для команды, но теперь мне нужен обработчик всех команд (detour по адресу base + 0x65A70). Т.е:
C++:
Код:
CMDPROC CInput
::
GetCommandHandler
(
const
char
*
pName
)
{
return
(
(
CMDPROC
(
__thiscall
*
)
(
CInput
*
,
const
char
*
)
)
GetAddress
(
0x65A70
)
)
(
this
,
pName
)
;
}
Сделал я так (для регистрации команд):
C++:
Код:
std
::
memcpy
(
&
m_thunk
[
12
]
,
"\x55\x89\xe5\xff\x75\x08\xb9????\xb8????\xff\xd0\xc9\xc3"
,
20
)
;
*
(
uintptr_t
*
)
&
m_thunk
[
19
]
=
(
uintptr_t
)
this
;
*
(
uintptr_t
*
)
&
m_thunk
[
24
]
=
m_union_cmd_callback
.
addr_as_uint64
;
m_input
->
AddCommand
(
"somecommand"
,
(
sampapi
::
CMDPROC
)
&
m_thunk
[
12
]
)
;
|
|
|

13.12.2020, 23:23
|
|
Новичок
Регистрация: 12.06.2010
Сообщений: 0
С нами:
8376981
Репутация:
0
|
|
1.Ваш вопрос : Как можно после загрузки игры отключить raknet или сделать так чтоб не подключался к серверу необходимое количество времени
|
|
|

14.12.2020, 00:04
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от Artem90
1.Ваш вопрос : Как можно после загрузки игры отключить raknet или сделать так чтоб не подключался к серверу необходимое количество времени
Можно попробовать хукнуть функцию отправки через сокет(sendto или send), и отклонять отправку, пока не прошло необходимое кол-во времени.
|
|
|

17.12.2020, 22:03
|
|
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами:
4091290
Репутация:
213
|
|
После инициализации имгуи, вечно рисуется курсор (курсор винды)
C++:
Код:
ImGui
::
CreateContext
(
)
;
ImGuiIO
&
io
=
ImGui
::
GetIO
(
)
;
io
.
Fonts
->
AddFontFromFileTTF
(
"C:\\Windows\\Fonts\\Arial.ttf"
,
16
,
NULL
,
ImGui
::
GetIO
(
)
.
Fonts
->
GetGlyphRangesCyrillic
(
)
)
;
(
void
)
io
;
ImGui_ImplWin32_Init
(
GetActiveWindow
(
)
)
;
ImGui_ImplDX9_Init
(
pDevice
)
;
пробовать отключать через
C++:
Код:
ImGui
::
GetIO
(
)
.
MouseDrawCursor
=
0
;
не помогло
|
|
|

18.12.2020, 02:18
|
|
Постоянный
Регистрация: 21.11.2014
Сообщений: 540
С нами:
6039222
Репутация:
163
|
|
Сообщение от AdCKuY_DpO4uLa
После инициализации имгуи, вечно рисуется курсор (курсор винды)
C++:
Код:
ImGui
::
CreateContext
(
)
;
ImGuiIO
&
io
=
ImGui
::
GetIO
(
)
;
io
.
Fonts
->
AddFontFromFileTTF
(
"C:\\Windows\\Fonts\\Arial.ttf"
,
16
,
NULL
,
ImGui
::
GetIO
(
)
.
Fonts
->
GetGlyphRangesCyrillic
(
)
)
;
(
void
)
io
;
ImGui_ImplWin32_Init
(
GetActiveWindow
(
)
)
;
ImGui_ImplDX9_Init
(
pDevice
)
;
пробовать отключать через
C++:
Код:
ImGui
::
GetIO
(
)
.
MouseDrawCursor
=
0
;
не помогло
C++:
Код:
io
.
ConfigFlags
|=
ImGuiConfigFlags_NoMouseCursorChange
;
|
|
|

23.12.2020, 01:38
|
|
Участник форума
Регистрация: 14.04.2018
Сообщений: 122
С нами:
4254200
Репутация:
98
|
|
Вот если в процессе два .dll модуля с одинаковым названием, как можно получить оба? По хэндлу все время только 1
|
|
|

24.12.2020, 15:09
|
|
Постоянный
Регистрация: 05.08.2018
Сообщений: 372
С нами:
4091290
Репутация:
213
|
|
у меня есть структура PlayerPool для R1
C++:
Код:
struct
stPlayerPool
{
uint32_t
MaxPlayerID
;
//???? not tested
uint16_t
sLocalPlayerID
;
void
*
pVTBL_txtHandler
;
union
{
char
szLocalPlayerName
[
16
]
;
char
*
pszLocalPlayerName
;
}
;
int
iLocalPlayerNameLen
;
int
iLocalPlayerNameAllocated
;
struct
stLocalPlayer
*
pLocalPlayer
;
int
iLocalPlayerPing
;
int
iLocalPlayerScore
;
struct
stRemotePlayer
*
pRemotePlayer
[
SAMP_MAX_PLAYERS
]
;
int
iIsListed
[
SAMP_MAX_PLAYERS
]
;
uint32_t
ulUnk1
[
SAMP_MAX_PLAYERS
]
;
}
можете дать такую же структуру, но для R3?
|
|
|

24.12.2020, 15:28
|
|
Флудер
Регистрация: 16.09.2019
Сообщений: 2,013
С нами:
3505395
Репутация:
183
|
|
Сообщение от AdCKuY_DpO4uLa
у меня есть структура PlayerPool для R1
C++:
Код:
struct
stPlayerPool
{
uint32_t
MaxPlayerID
;
//???? not tested
uint16_t
sLocalPlayerID
;
void
*
pVTBL_txtHandler
;
union
{
char
szLocalPlayerName
[
16
]
;
char
*
pszLocalPlayerName
;
}
;
int
iLocalPlayerNameLen
;
int
iLocalPlayerNameAllocated
;
struct
stLocalPlayer
*
pLocalPlayer
;
int
iLocalPlayerPing
;
int
iLocalPlayerScore
;
struct
stRemotePlayer
*
pRemotePlayer
[
SAMP_MAX_PLAYERS
]
;
int
iIsListed
[
SAMP_MAX_PLAYERS
]
;
uint32_t
ulUnk1
[
SAMP_MAX_PLAYERS
]
;
}
можете дать такую же структуру, но для R3?
C++:
Код:
enum
{
MAX_PLAYERS
=
1004
}
;
int
m_nLargestId
;
CPlayerInfo
*
m_pObject
[
MAX_PLAYERS
]
;
BOOL m_bNotEmpty
[
MAX_PLAYERS
]
;
BOOL m_bPrevCollisionFlag
[
MAX_PLAYERS
]
;
struct
SAMPAPI_EXPORT
{
int
m_nPing
;
int
m_nScore
;
ID m_nId
;
std
::
string m_szName
;
CLocalPlayer
*
m_pObject
;
}
m_localInfo
;
|
|
|

24.12.2020, 15:52
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от S E V E N
C++:
Код:
enum
{
MAX_PLAYERS
=
1004
}
;
int
m_nLargestId
;
CPlayerInfo
*
m_pObject
[
MAX_PLAYERS
]
;
BOOL m_bNotEmpty
[
MAX_PLAYERS
]
;
BOOL m_bPrevCollisionFlag
[
MAX_PLAYERS
]
;
struct
SAMPAPI_EXPORT
{
int
m_nPing
;
int
m_nScore
;
ID m_nId
;
std
::
string m_szName
;
CLocalPlayer
*
m_pObject
;
}
m_localInfo
;
C++:
Код:
struct
SAMPAPI_EXPORT
{
int
m_nPing
;
int
m_nScore
;
ID m_nId
;
#ifndef _DEBUG
private
:
int
__alignment
;
public
:
#endif
std
::
string m_szName
;
CLocalPlayer
*
m_pObject
;
}
m_localInfo
;
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|