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

  #1  
Старый 28.06.2023, 22:31
ya_noob
Познающий
Регистрация: 26.10.2022
Сообщений: 57
С нами: 1870038

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

Увидел как SR_team написал плагин используя только структуры без функции main, попробовал, но в игре НЕТ НИКАКИХ ИЗМЕНЕНИЙ.

Сначала был такой код:

C++:





Код:
#include 
#pragma warning(disable:4996)
struct
loader
{
public
:
loader
(
)
{
memset
(
(
unsigned
char
*
)
0x00522F6A
,
0x90
,
6
)
;
// FixFOV
*
(
float
*
)
0x00522F7A
=
90
;
strcpy
(
reinterpret_cast

(
0x866C8C
)
,
"$-%d"
)
;
strcpy
(
reinterpret_cast

(
0x866C94
)
,
"$%d"
)
;
*
(
char
*
)
7520695
=
235
;
*
(
float
*
)
0xB6EC1C
=
0.00012
;
*
(
float
*
)
0xB6EC18
=
*
(
float
*
)
0xB6EC1C
;
*
(
unsigned
char
*
)
0x00561344
=
*
(
unsigned
char
*
)
0x005609FF
=
0xEB
;
*
(
float
*
)
0x00B7C4F0
=
420
;
*
(
char
*
)
0x058E280
=
235
;
}
}
Loader
;


Но, как я и описал выше, никаких изменений, затем я обратился за помощью к ChatGPT и он выдал мне этот код, который я скомпилировал:

C++:





Код:
#include 
struct
Loader
{
Loader
(
)
{
PatchMemory
(
(
LPVOID
)
0x00522F6A
,
"\x90\x90\x90\x90\x90\x90"
,
6
)
;
// FixFOV
*
(
float
*
)
0x00522F7A
=
90
;
strcpy_s
(
reinterpret_cast

(
0x866C8C
)
,
sizeof
(
"$-%d"
)
,
"$-%d"
)
;
strcpy_s
(
reinterpret_cast

(
0x866C94
)
,
sizeof
(
"$%d"
)
,
"$%d"
)
;
*
(
char
*
)
7520695
=
235
;
*
(
float
*
)
0xB6EC1C
=
0.00012f
;
*
(
float
*
)
0xB6EC18
=
*
(
float
*
)
0xB6EC1C
;
*
(
unsigned
char
*
)
0x00561344
=
*
(
unsigned
char
*
)
0x005609FF
=
0xEB
;
*
(
float
*
)
0x00B7C4F0
=
420
;
*
(
char
*
)
0x058E280
=
235
;
}
static
void
PatchMemory
(
LPVOID address
,
const
void
*
data
,
size_t size
)
{
DWORD oldProtect
;
VirtualProtect
(
address
,
size
,
PAGE_EXECUTE_READWRITE
,
&
oldProtect
)
;
memcpy
(
address
,
data
,
size
)
;
VirtualProtect
(
address
,
size
,
oldProtect
,
&
oldProtect
)
;
}
}
;
Loader loader
;


Чуда не произошло. Что есть плагин, что его нет, ГТАшке все равно. Пишу эту тему с потребностью поинтересоваться ЧТО НЕ ТАК?

Хочу дополнить. Вот ссылка не код, в котором я увидел подобную реализацию без функции main(): https://gitlab.com/prime-hack/samp/p.../main/main.cpp
 
Ответить с цитированием

  #2  
Старый 28.06.2023, 22:46
siwage
Участник форума
Регистрация: 14.10.2020
Сообщений: 197
С нами: 2937817

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

Я не знаю С++, но возможно это?

 
Ответить с цитированием

  #3  
Старый 28.06.2023, 22:51
ya_noob
Познающий
Регистрация: 26.10.2022
Сообщений: 57
С нами: 1870038

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

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

Я не знаю С++, но возможно это?
скачал плагин SR_team'a работает

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

Я не знаю С++, но возможно это?
https://www.blast.hk/threads/173829/ Я скачал готовый .asi, захотел посмотреть сурс, а там это
 
Ответить с цитированием

  #4  
Старый 28.06.2023, 23:01
EclipsedFlow
Познавший АНТИЧАТ
Регистрация: 18.09.2017
Сообщений: 1,044
С нами: 4553429

Репутация: 153


По умолчанию

C++:





Код:
// Создаешь класс/структуру. В
// Создай конструктор и деструктор для них.
// Первый метод после "public:" - Конструктор, второй Деструктор.
// Конструктор выполняет код один раз при создании объекта класса/структруры.
// Деструктор обратное, вызывается один раз при удалении объекта из поля видисмоти.
// Тебе остается создать объект в глобальной области.
class
Boot
{
public
:
Boot
(
void
)
// Конструктор
{
// код выполняется раз при инициализации объкта.
}
~
Boot
(
void
)
// деструктор
{
// код выполняется раз при выхода из видисмоти/удалении объекта.
}
}
g_boot
;
// Или
Boot g_boot
;
 
Ответить с цитированием

  #5  
Старый 28.06.2023, 23:25
ya_noob
Познающий
Регистрация: 26.10.2022
Сообщений: 57
С нами: 1870038

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

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

C++:





Код:
// Создаешь класс/структуру. В
// Создай конструктор и деструктор для них.
// Первый метод после "public:" - Конструктор, второй Деструктор.
// Конструктор выполняет код один раз при создании объекта класса/структруры.
// Деструктор обратное, вызывается один раз при удалении объекта из поля видисмоти.
// Тебе остается создать объект в глобальной области.
class
Boot
{
public
:
Boot
(
void
)
// Конструктор
{
// код выполняется раз при инициализации объкта.
}
~
Boot
(
void
)
// деструктор
{
// код выполняется раз при выхода из видисмоти/удалении объекта.
}
}
g_boot
;
// Или
Boot g_boot
;

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

  #6  
Старый 28.06.2023, 23:32
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

Ты пишешь в память без VirtualProtect. Обычно это приводит к крашу игры, но если это делать в момент инициализации библиотеки, то вместо краша библиотека сразу выгрузится - что у тебя и происходит.

Тебе для каждого адреса по которому ты пишешь, надо сначала разрешить запись через VirtualProtect
 
Ответить с цитированием

  #7  
Старый 28.06.2023, 23:35
ya_noob
Познающий
Регистрация: 26.10.2022
Сообщений: 57
С нами: 1870038

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

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

Ты пишешь в память без VirtualProtect. Обычно это приводит к крашу игры, но если это делать в момент инициализации библиотеки, то вместо краша библиотека сразу выгрузится - что у тебя и происходит.

Тебе для каждого адреса по которому ты пишешь, надо сначала разрешить запись через VirtualProtect
Но если делать подобную инициализацию в цикле, который находится в функции main, то гта не крашится без разрешения записи VirtualProtect
 
Ответить с цитированием

  #8  
Старый 28.06.2023, 23:38
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

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

Но если делать подобную инициализацию в цикле, который находится в функции main, то гта не крашится без разрешения записи VirtualProtect
У тебя она не может не крашится. Может ты под циклом имеешь в виду mainloop из SF - это немного другое, и там CLEO снимает протект на всю память игры. Тут ты пишешь раньше.

И адрес 0x00561344, например, указывает на код. У кода по умолчанию разрешены только чтение и выполнение, а запись запрещена
 
Ответить с цитированием

  #9  
Старый 28.06.2023, 23:40
ya_noob
Познающий
Регистрация: 26.10.2022
Сообщений: 57
С нами: 1870038

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

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

У тебя она не может не крашится. Может ты под циклом имеешь в виду mainloop из SF - это немного другое, и там CLEO снимает протект на всю память игры. Тут ты пишешь раньше.
И адрес 0x00561344, например, указывает на код. У кода по умолчанию разрешены только чтение и выполнение, а запись запрещена
C++:





Код:
#include "windows.h"
#include "process.h"
#include "cstdint"
#pragma warning(disable:4996)
class
rain_noise
{
public
:
void
fixNoise
(
)
;
private
:
static
char
&
a1
;
static
int
&
a2
;
static
char
&
b1
;
static
int
&
b2
;
static
char
&
c1
;
static
int
&
c2
;
static
char
&
d1
;
static
int
&
d2
;
}
;
char
&
rain_noise
::
a1
=
*
(
char
*
)
0x72C7C0
;
int
&
rain_noise
::
a2
=
*
(
int
*
)
0x72C7C1
;
char
&
rain_noise
::
b1
=
*
(
char
*
)
0x705078
;
int
&
rain_noise
::
b2
=
*
(
int
*
)
0x705079
;
char
&
rain_noise
::
c1
=
*
(
char
*
)
0x72AAE0
;
int
&
rain_noise
::
c2
=
*
(
int
*
)
0x72AAE1
;
char
&
rain_noise
::
d1
=
*
(
char
*
)
0x53E126
;
int
&
rain_noise
::
d2
=
*
(
int
*
)
0x53E127
;
void
rain_noise
::
fixNoise
(
)
{
a1
=
144
;
a2
=
-
1869574000
;
b1
=
144
;
b2
=
-
1869574000
;
c1
=
144
;
c2
=
-
1869574000
;
//d1 = 144;
//d2 = -1869574000;
}
class
fov90
{
public
:
void
setFov
(
)
{
Afov2
=
90
;
// ������� ���� ������, ������������ �� �����������
fov1
=
90
;
// �����������.
// ���� �������
fov3
=
90
;
// ����������� ���� ������ ��� ���2
fov4
=
90
;
}
private
:
float
&
fov1
=
*
(
float
*
)
0x00522F7A
;
float
&
Afov2
=
*
(
float
*
)
0x00B6F250
;
float
&
fov3
=
*
(
float
*
)
0x8D5038
;
float
&
fov4
=
*
(
float
*
)
0xB6FF5C
;
}
;
class
fogdist
{
public
:
void
setFogDist
(
int
distance
)
{
fd1
=
fd2
=
0xEB
;
fd3
=
distance
;
}
private
:
unsigned
char
&
fd1
=
*
(
unsigned
char
*
)
0x00561344
;
unsigned
char
&
fd2
=
*
(
unsigned
char
*
)
0x005609FF
;
float
&
fd3
=
*
(
float
*
)
0x00B7C4F0
;
// float& LodDist = *(float*)0x00858FD8;
}
;
class
HUD
{
public
:
void
setHUD
(
)
{
// HealthHeight = 9;
// HealthWidth = 109; // 109
// HealthX = 141; //141
// HealthY = 77;
// ArmorX = 114; // 94
// ArmorY = 48; // 48
//  MoneyX_ = 64;
//   MoneyY_ = 89;
// MoneyY_ = (float)89.0;
// MoneyX = 20;
// MoneyY = 79; // 89
MoneyXScale
=
0.5
;
// 0.55
MoneyYScale
=
0.9
;
// 1.1
// radarrect = 1075318232;
WantedXScale
=
0.45
;
// 0.605
WantedYScale
=
0.9
;
// 1.21
WI_W
=
47
;
// 47;
WantedColor
=
0xFFD8D8D8
;
}
private
:
//  float& HealthWidth = *(float*)0x866BB8;
//  float& HealthHeight = *(float*)0x85EED4;
//  float& HealthX = *(float*)0x86535C;
//  float& HealthY = *(float*)0x866CA8;
// float& ArmorX = *(float*)0x866B78;
// float& ArmorY = *(float*)0x862D38;
// float& MoneyX = *(float*)0x85950C;
// byte& MoneyX_ = *(byte*)0x58F5FC;
// float& MoneyY = *(float*)0x866C88;
// byte& MoneyY_ = *(byte*)0x58F5DC;
float
&
WI_W
=
*
(
float
*
)
0x866C4C
;
float
&
WantedXScale
=
*
(
float
*
)
0x866C60
;
float
&
WantedYScale
=
*
(
float
*
)
0x866C64
;
float
&
MoneyXScale
=
*
(
float
*
)
0x866CAC
;
float
&
MoneyYScale
=
*
(
float
*
)
0x858F14
;
int
&
radarrect
=
*
(
int
*
)
0x58585A
;
char
&
WantedColor
=
*
(
char
*
)
0x58DDC9
;
}
;
/*namespace radarzoomfix
{
    float& a3 = *(float*)5794971; // 180
  // float& a0 = *(float*)5794971;
    char& a2 = *(char*)5794943;
  //  float& b4 = *(float*)5810889;
  //  float& c5 = *(float*)5810877;
  //  float& d6 = *(float*)5810871;
  //  float& a7 = *(float*)5811888;
  //  float& a8 = *(float*)5811894;
    
    float& a6 = *(float*)5810871;
    float& a5 = *(float*)5810877;
    float& a7 = *(float*)5811888;
    float& a8 = *(float*)5811894;
}*/
void
__cdecl
MainThread
(
void
*
pArg
)
{
rain_noise a
;
fov90 b
;
fogdist c
;
HUD d
;
std
::
uint8_t
chromekiller
[
]
{
*
(
std
::
uint8_t
*
)
0x00733275
,
*
(
std
::
uint8_t
*
)
0x00733FB6
,
*
(
std
::
uint8_t
*
)
0x00733365
,
*
(
std
::
uint8_t
*
)
0x00734276
,
*
(
std
::
uint8_t
*
)
0x0073357E
,
*
(
std
::
uint8_t
*
)
0x007344D1
,
*
(
std
::
uint8_t
*
)
0x00733453
,
*
(
std
::
uint8_t
*
)
0x007343A6
}
;
while
(
true
)
{
while
(
(
*
(
char
*
)
0xC8D4C0
)
!=
9
)
{
Sleep
(
100
)
;
}
bool
&
denchik
=
*
(
bool
*
)
0x58F58D
;
int
&
colorhp
=
*
(
int
*
)
0xBAB22C
;
float
&
deagle
=
*
(
float
*
)
0x521632
;
float
&
ak47m4rifle
=
*
(
float
*
)
0x8CC4B4
;
float
&
zspeed
=
*
(
float
*
)
0x862F1C
;
float
&
sens1
=
*
(
float
*
)
0xB6EC1C
;
float
&
sens2
=
*
(
float
*
)
0xB6EC18
;
int
valuecolor
=
0xFFD8D8D8
;
int
*
p_valuecolor
;
denchik
=
1
;
p_valuecolor
=
(
int
*
)
0xBAB230
;
*
p_valuecolor
=
valuecolor
;
colorhp
=
valuecolor
;
deagle
=
70
;
ak47m4rifle
=
70
;
// freetarget = 90;
zspeed
=
0
;
// tochkapricel = 235;
sens1
=
0.00012
;
sens2
=
sens1
;
//aatochkapric = 235;
*
(
char
*
)
0x058E280
=
235
;
char
&
no_more_haze
=
*
(
char
*
)
7520695
;
a
.
fixNoise
(
)
;
b
.
setFov
(
)
;
c
.
setFogDist
(
600
)
;
d
.
setHUD
(
)
;
no_more_haze
=
235
;
strcpy
(
reinterpret_cast

(
0x866C8C
)
,
"$-%d"
)
;
strcpy
(
reinterpret_cast

(
0x866C94
)
,
"$%d"
)
;
for
(
std
::
uint8_t
element
:
chromekiller
)
{
element
=
0xEB
;
}
}
}
BOOL WINAPI
DllMain
(
_In_ HINSTANCE hinstDLL
,
_In_ DWORD fdwReason
,
_In_ PVOID lpvReserved
)
{
if
(
fdwReason
==
DLL_PROCESS_ATTACH
)
_beginthread
(
MainThread
,
NULL
,
nullptr
)
;
return
TRUE
;
}


Вот код из говна и палок где используется обычный цикл, гта не крашилась из-за него. Крашилась из-за достижения 500 МБ памяти стрима (я без BufferCleaner'a).

комментарии в "вопросиках", потому что я открыл .cpp в VS Code, а изначально он был в VS 2022
 
Ответить с цитированием

  #10  
Старый 29.06.2023, 21:46
SR_team
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами: 6603505

Репутация: 183


По умолчанию

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

C++:





Код:
#include "windows.h"
#include "process.h"
#include "cstdint"
#pragma warning(disable:4996)
class
rain_noise
{
public
:
void
fixNoise
(
)
;
private
:
static
char
&
a1
;
static
int
&
a2
;
static
char
&
b1
;
static
int
&
b2
;
static
char
&
c1
;
static
int
&
c2
;
static
char
&
d1
;
static
int
&
d2
;
}
;
char
&
rain_noise
::
a1
=
*
(
char
*
)
0x72C7C0
;
int
&
rain_noise
::
a2
=
*
(
int
*
)
0x72C7C1
;
char
&
rain_noise
::
b1
=
*
(
char
*
)
0x705078
;
int
&
rain_noise
::
b2
=
*
(
int
*
)
0x705079
;
char
&
rain_noise
::
c1
=
*
(
char
*
)
0x72AAE0
;
int
&
rain_noise
::
c2
=
*
(
int
*
)
0x72AAE1
;
char
&
rain_noise
::
d1
=
*
(
char
*
)
0x53E126
;
int
&
rain_noise
::
d2
=
*
(
int
*
)
0x53E127
;
void
rain_noise
::
fixNoise
(
)
{
a1
=
144
;
a2
=
-
1869574000
;
b1
=
144
;
b2
=
-
1869574000
;
c1
=
144
;
c2
=
-
1869574000
;
//d1 = 144;
//d2 = -1869574000;
}
class
fov90
{
public
:
void
setFov
(
)
{
Afov2
=
90
;
// ������� ���� ������, ������������ �� �����������
fov1
=
90
;
// �����������.
// ���� �������
fov3
=
90
;
// ����������� ���� ������ ��� ���2
fov4
=
90
;
}
private
:
float
&
fov1
=
*
(
float
*
)
0x00522F7A
;
float
&
Afov2
=
*
(
float
*
)
0x00B6F250
;
float
&
fov3
=
*
(
float
*
)
0x8D5038
;
float
&
fov4
=
*
(
float
*
)
0xB6FF5C
;
}
;
class
fogdist
{
public
:
void
setFogDist
(
int
distance
)
{
fd1
=
fd2
=
0xEB
;
fd3
=
distance
;
}
private
:
unsigned
char
&
fd1
=
*
(
unsigned
char
*
)
0x00561344
;
unsigned
char
&
fd2
=
*
(
unsigned
char
*
)
0x005609FF
;
float
&
fd3
=
*
(
float
*
)
0x00B7C4F0
;
// float& LodDist = *(float*)0x00858FD8;
}
;
class
HUD
{
public
:
void
setHUD
(
)
{
// HealthHeight = 9;
// HealthWidth = 109; // 109
// HealthX = 141; //141
// HealthY = 77;
// ArmorX = 114; // 94
// ArmorY = 48; // 48
//  MoneyX_ = 64;
//   MoneyY_ = 89;
// MoneyY_ = (float)89.0;
// MoneyX = 20;
// MoneyY = 79; // 89
MoneyXScale
=
0.5
;
// 0.55
MoneyYScale
=
0.9
;
// 1.1
// radarrect = 1075318232;
WantedXScale
=
0.45
;
// 0.605
WantedYScale
=
0.9
;
// 1.21
WI_W
=
47
;
// 47;
WantedColor
=
0xFFD8D8D8
;
}
private
:
//  float& HealthWidth = *(float*)0x866BB8;
//  float& HealthHeight = *(float*)0x85EED4;
//  float& HealthX = *(float*)0x86535C;
//  float& HealthY = *(float*)0x866CA8;
// float& ArmorX = *(float*)0x866B78;
// float& ArmorY = *(float*)0x862D38;
// float& MoneyX = *(float*)0x85950C;
// byte& MoneyX_ = *(byte*)0x58F5FC;
// float& MoneyY = *(float*)0x866C88;
// byte& MoneyY_ = *(byte*)0x58F5DC;
float
&
WI_W
=
*
(
float
*
)
0x866C4C
;
float
&
WantedXScale
=
*
(
float
*
)
0x866C60
;
float
&
WantedYScale
=
*
(
float
*
)
0x866C64
;
float
&
MoneyXScale
=
*
(
float
*
)
0x866CAC
;
float
&
MoneyYScale
=
*
(
float
*
)
0x858F14
;
int
&
radarrect
=
*
(
int
*
)
0x58585A
;
char
&
WantedColor
=
*
(
char
*
)
0x58DDC9
;
}
;
/*namespace radarzoomfix
{
    float& a3 = *(float*)5794971; // 180
  // float& a0 = *(float*)5794971;
    char& a2 = *(char*)5794943;
  //  float& b4 = *(float*)5810889;
  //  float& c5 = *(float*)5810877;
  //  float& d6 = *(float*)5810871;
  //  float& a7 = *(float*)5811888;
  //  float& a8 = *(float*)5811894;
   
    float& a6 = *(float*)5810871;
    float& a5 = *(float*)5810877;
    float& a7 = *(float*)5811888;
    float& a8 = *(float*)5811894;
}*/
void
__cdecl
MainThread
(
void
*
pArg
)
{
rain_noise a
;
fov90 b
;
fogdist c
;
HUD d
;
std
::
uint8_t
chromekiller
[
]
{
*
(
std
::
uint8_t
*
)
0x00733275
,
*
(
std
::
uint8_t
*
)
0x00733FB6
,
*
(
std
::
uint8_t
*
)
0x00733365
,
*
(
std
::
uint8_t
*
)
0x00734276
,
*
(
std
::
uint8_t
*
)
0x0073357E
,
*
(
std
::
uint8_t
*
)
0x007344D1
,
*
(
std
::
uint8_t
*
)
0x00733453
,
*
(
std
::
uint8_t
*
)
0x007343A6
}
;
while
(
true
)
{
while
(
(
*
(
char
*
)
0xC8D4C0
)
!=
9
)
{
Sleep
(
100
)
;
}
bool
&
denchik
=
*
(
bool
*
)
0x58F58D
;
int
&
colorhp
=
*
(
int
*
)
0xBAB22C
;
float
&
deagle
=
*
(
float
*
)
0x521632
;
float
&
ak47m4rifle
=
*
(
float
*
)
0x8CC4B4
;
float
&
zspeed
=
*
(
float
*
)
0x862F1C
;
float
&
sens1
=
*
(
float
*
)
0xB6EC1C
;
float
&
sens2
=
*
(
float
*
)
0xB6EC18
;
int
valuecolor
=
0xFFD8D8D8
;
int
*
p_valuecolor
;
denchik
=
1
;
p_valuecolor
=
(
int
*
)
0xBAB230
;
*
p_valuecolor
=
valuecolor
;
colorhp
=
valuecolor
;
deagle
=
70
;
ak47m4rifle
=
70
;
// freetarget = 90;
zspeed
=
0
;
// tochkapricel = 235;
sens1
=
0.00012
;
sens2
=
sens1
;
//aatochkapric = 235;
*
(
char
*
)
0x058E280
=
235
;
char
&
no_more_haze
=
*
(
char
*
)
7520695
;
a
.
fixNoise
(
)
;
b
.
setFov
(
)
;
c
.
setFogDist
(
600
)
;
d
.
setHUD
(
)
;
no_more_haze
=
235
;
strcpy
(
reinterpret_cast

(
0x866C8C
)
,
"$-%d"
)
;
strcpy
(
reinterpret_cast

(
0x866C94
)
,
"$%d"
)
;
for
(
std
::
uint8_t
element
:
chromekiller
)
{
element
=
0xEB
;
}
}
}
BOOL WINAPI
DllMain
(
_In_ HINSTANCE hinstDLL
,
_In_ DWORD fdwReason
,
_In_ PVOID lpvReserved
)
{
if
(
fdwReason
==
DLL_PROCESS_ATTACH
)
_beginthread
(
MainThread
,
NULL
,
nullptr
)
;
return
TRUE
;
}


Вот код из говна и палок где используется обычный цикл, гта не крашилась из-за него. Крашилась из-за достижения 500 МБ памяти стрима (я без BufferCleaner'a).

комментарии в "вопросиках", потому что я открыл .cpp в VS Code, а изначально он был в VS 2022
Так ты в цикле ждешь пока игра загрузится, за это время успевает загрузится CLEO и применить VirtualProtect к игре
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.