ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   /q samp crash #2 (https://forum.antichat.xyz/showthread.php?t=1378098)

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

Цитата:

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

проблема с деструктором ракнета ( была такая же тема, только от 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

Цитата:

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

в момент удаления там уже может лежать не твой RakClient
Также у тебя не сохранены регистры

других асишников нет, так что скорее всего, лежит мой ( мб не правильно понял тебя)

можешь по подробнее рассказать сохранения регистров?

CleanLegend 05.02.2021 14:03

Цитата:

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

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

__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
)
)
;



Время: 15:03