ANTICHAT

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

nonelike 03.01.2025 21:16

говнокод, для тестов:





Код:

void
removeVehicleLimits
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x0E40E
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits2
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x9F440
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits3
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x9F46B
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits4
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5461
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits5
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5501
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits6
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA55A1
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits7
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5641
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits8
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xB2D2F
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}



(я знаю что код ***ня, не пишите, это ток для тестов)

ида:





Код:

0x0E40E
cmp    eax
,
263
h
0x9F3AE
cmp    ax
,
263
h
0x9F440
cmp    ax
,
263
h
0x9F46B
cmp    ax
,
263
h
0xA5461
cmp    edx
,
263
h
0xA5501
cmp    edx
,
263
h
0xA55A1
cmp    edx
,
263
h
0xA5641
cmp    edx
,
263
h
0xB2D2F
cmp    ax
,
263
h
0xB752F
cmp    ax
,
263
h



(в адресах уже есть смещение на 1байт)

нашел все конструкции через ida pro под самп р3, которые содержат 263h (611) и решил прост заменить их на 30000 тем самым обойдя проверку тачек больше, чем 611, но игра прост виснет про спавне тачки вне 611, 12503 допустим, дело в том что я чет нахуячил в памяти или нет?

fuflexxxx 03.01.2025 22:45

При случае cmp eax, 263h ты затираешь байты инструкции cmp, надо патчить байты на address_vehicle + 1.

При случае cmp ax, 263h там вообще ужас будет, там вся инструкция ломается, т.к ax - регистр размером 2 байта, а ты указываешь int32_t.

И вообще зачем все места трогать? Найди одно нужное и меняй там.

nonelike 03.01.2025 22:56

Цитата:


При случае cmp eax, 263h ты затираешь байты инструкции cmp, надо патчить байты на address_vehicle + 1.

Код:





Код:

*reinterpret_cast(address_vehicle+1) = 30000;


?

Цитата:


При случае cmp ax, 263h там вообще ужас будет, там вся инструкция ломается, т.к ax - регистр размером 2 байта, а ты указываешь int32_t.

int16_t?

Цитата:


И вообще зачем все места трогать? Найди одно нужное и меняй там.

пару адресов действительно были лишними, а так по большей части тут не один нужен, а несколько

fuflexxxx 03.01.2025 23:01

Цитата:

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

Код:





Код:

*reinterpret_cast(address_vehicle+1) = 30000;


?

int16_t?

пару адресов действительно были лишними, а так по большей части тут не один нужен, а несколько

Ну типа того.

nonelike 03.01.2025 23:11

Цитата:

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

Ну типа того.

говнокод, для тестов:





Код:

void
removeVehicleLimits
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x0E40E
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits2
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x9F440
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits3
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x9F46B
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits4
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5461
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits5
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5501
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits6
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA55A1
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits7
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5641
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits8
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xB2D2F
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}



виснет также при спавне тачки..

fuflexxxx 03.01.2025 23:22

Цитата:

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

говнокод, для тестов:





Код:

void
removeVehicleLimits
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x0E40E
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits2
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x9F440
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits3
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x9F46B
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits4
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5461
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits5
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5501
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits6
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA55A1
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits7
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5641
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits8
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xB2D2F
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}



виснет также при спавне тачки..

Забыл уточнить, что для cmp ax, 263h надо addr + 2 делать.





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

nonelike 03.01.2025 23:28

Цитата:

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

Забыл уточнить, что для cmp ax, 263h надо addr + 2 делать.

говнокод, для тестов:





Код:

void
removeVehicleLimits
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x0E40E
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits2
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x9F440
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
2
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits3
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x9F46B
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
2
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits4
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5461
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits5
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5501
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits6
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA55A1
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits7
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5641
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits8
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xB2D2F
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
2
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}



виснет

fuflexxxx 03.01.2025 23:34

Открывай иду, options -> General -> number of opcode bytes пиши 10.

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

Переходи к своей инструкции в асме и ищи там число 263. Смотри сколько до него байт и делай addr + n. Крашит оно как раз в cmp edx, 263 ибо там для них выставлен addr + 1, а надо addr + 2 тоже исходя из скрина.

nonelike 03.01.2025 23:46

Цитата:

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

Открывай иду, options -> General -> number of opcode bytes пиши 10.

Переходи к своей инструкции в асме и ищи там число 263. Смотри сколько до него байт и делай addr + n. Крашит оно как раз в cmp edx, 263 ибо там для них выставлен addr + 1, а надо addr + 2 тоже исходя из скрина.

говнокод, для тестов:





Код:

void
removeVehicleLimits
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x0E40D
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
1
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits2
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x9F43F
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
2
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits3
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0x9F46A
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
2
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits4
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5460
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
2
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits5
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5500
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
2
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits6
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA55A0
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
2
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits7
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xA5640
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
2
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}
void
removeVehicleLimits8
(
)
{
const
uintptr_t address_vehicle
=
reinterpret_cast

(
GetModuleHandleA
(
"samp.dll"
)
)
+
(
0xB2D2E
)
;
DWORD dwOldProtect_veh
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
PAGE_EXECUTE_READWRITE
,
&
dwOldProtect_veh
)
;
*
reinterpret_cast

(
address_vehicle
+
2
)
=
30000
;
VirtualProtect
(
(
LPVOID
)
address_vehicle
,
4
,
dwOldProtect_veh
,
&
dwOldProtect_veh
)
;
}



перепроверил везде, теперь должно стоять верно по байтам, но все равно зависает

(спасибо что научил смотреть байты)

fuflexxxx 03.01.2025 23:50

Проверь версию сампа. Проверь не конфликтуют ли твои изменения с другими плагинами, если они есть. А вообще лучше скачать Cheat engine или x64dbg и посмотреть какие там инструкции теперь на адресах.


Время: 07:29