Просмотр полной версии : /q samp crash #2
legendabrn
05.02.2021, 11:57
проблема с деструктором ракнета ( была такая же тема, только от kin4stat ), что я делаю неправильно?
C++:
MH_CreateAndEnableHook
(
pSAMP
->
dwSAMPAddr
+
0x9525
,
&
HOOK_RakClientDestructor
,
NULL
)
;
C++:
__declspec
(
naked
)
void
HOOK_RakClientDestructor
(
void
)
{
if
(
pSAMP
->
getInfo
(
)
->
pRakClientInterface
!=
NULL
)
delete
pSAMP
->
getInfo
(
)
->
pRakClientInterface
;
pSAMP
->
getInfo
(
)
->
pRakClientInterface
=
pSAMP
->
getRakClientInterface
(
)
;
static
DWORD retDestruct
=
pSAMP
->
dwSAMPAddr
+
0x37686
;
__asm
{
mov eax
,
[
esp
+
04
]
test eax
,
eax
jmp retDestruct
}
}
https://forum.antichat.xyz/attachments/27663586/
kin4stat
05.02.2021, 12:45
проблема с деструктором ракнета ( была такая же тема, только от kin4stat ), что я делаю неправильно?
C++:
MH_CreateAndEnableHook
(
pSAMP
->
dwSAMPAddr
+
0x9525
,
&
HOOK_RakClientDestructor
,
NULL
)
;
C++:
__declspec
(
naked
)
void
HOOK_RakClientDestructor
(
void
)
{
if
(
pSAMP
->
getInfo
(
)
->
pRakClientInterface
!=
NULL
)
delete
pSAMP
->
getInfo
(
)
->
pRakClientInterface
;
pSAMP
->
getInfo
(
)
->
pRakClientInterface
=
pSAMP
->
getRakClientInterface
(
)
;
static
DWORD retDestruct
=
pSAMP
->
dwSAMPAddr
+
0x37686
;
__asm
{
mov eax
,
[
esp
+
04
]
test eax
,
eax
jmp retDestruct
}
}
в момент удаления там уже может лежать не твой RakClient
Также у тебя не сохранены регистры
legendabrn
05.02.2021, 12:49
в момент удаления там уже может лежать не твой RakClient
Также у тебя не сохранены регистры
других асишников нет, так что скорее всего, лежит мой ( мб не правильно понял тебя)
можешь по подробнее рассказать сохранения регистров?
CleanLegend
05.02.2021, 14:03
других асишников нет, так что скорее всего, лежит мой ( мб не правильно понял тебя)
можешь по подробнее рассказать сохранения регистров?
__asm pushad - в начале выполнения твоих действий
__asm popad - в конце твоих действий, перед использованием оригинальных байт и прыжком
и покажи инициализацию
kin4stat
06.02.2021, 00:31
C++:
typedef
void
(
__fastcall
*
sub_10009510
)
(
void
*
)
;
sub_10009510 fpHkDestructor
=
0
;
void
__fastcall
HOOK_sub_10009510
(
void
*
pThis
)
{
pSAMP
->
getInfo
(
)
->
pRakClientInterface
=
pSAMP
->
getRakClientInterface
(
)
;
return
fpHkDestructor
(
pThis
)
;
}
MH_CreateHook
(
reinterpret_cast
(
dwSAMP
+
0x9510
)
,
&
HOOK_sub_10009510
,
reinterpret_cast
(
&
fpHkDestructor
)
)
;
MH_EnableHook
(
reinterpret_cast
(
dwSAMP
+
0x9510
)
)
;
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot