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

  #1  
Старый 03.04.2024, 22:55
qwertyrus
Познающий
Регистрация: 29.10.2023
Сообщений: 33
С нами: 1339196

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

Переписать external cheat в internal для MTA оказалось труднее, чем я думал(инжект работает и не банит). Заранее извиняюсь если код выглядит плохо, только учусь. Крашит после инжекта, пробовал изменять функцию world_to_screen, крашит в if'ах(внутри функции). Помогите если не трудно

C++:





Код:
#include "pch.h"
#include 
#include 
#include 
#include 
#include 
#include 
std
::
vector

world_to_screen
(
std
::
vector
>
ViewMatrix1
,
float
x
,
float
y
,
float
z
)
{
std
::
vector

badcord
=
{
-
1
,
-
1
}
;
std
::
vector

result
(
2
)
;
float
screenz
=
(
z
*
ViewMatrix1
[
2
]
[
2
]
)
+
(
y
*
ViewMatrix1
[
1
]
[
2
]
)
+
(
x
*
ViewMatrix1
[
0
]
[
2
]
)
+
ViewMatrix1
[
3
]
[
2
]
;
if
(
screenz
=
screenx
&&
screenx
>=
0
&&
1080
>=
screeny
&&
screeny
>=
0
)
{
result
[
0
]
=
static_cast

(
screenx
)
;
result
[
1
]
=
static_cast

(
screeny
)
;
return
result
;
}
else
{
return
badcord
;
}
}
DWORD WINAPI
MainThread
(
HMODULE hModule
)
{
AllocConsole
(
)
;
system
(
"title First project"
)
;
FILE
*
f
;
freopen_s
(
&
f
,
"CONOUT$"
,
"w"
,
stdout
)
;
//printf("Test 1");
Sleep
(
200
)
;
DWORD offsetview
=
0xB6FA2C
;
bool
espstatus
=
false
;
DWORD
*
cped
=
(
DWORD
*
)
0xB6F5F0
;
float
*
myhealth
=
(
float
*
)
(
*
cped
+
0x540
)
;
float
*
myarmour
=
(
float
*
)
(
*
cped
+
0x548
)
;
DWORD
*
xyz
=
(
DWORD
*
)
(
*
cped
+
0x14
)
;
float
*
x
=
(
float
*
)
(
*
xyz
+
0x30
)
;
float
*
y
=
(
float
*
)
(
*
xyz
+
0x30
+
4
)
;
float
*
z
=
(
float
*
)
(
*
xyz
+
0x30
+
8
)
;
std
::
vector
>
ViewMatrix
(
4
,
std
::
vector

(
4
)
)
;
while
(
!
GetAsyncKeyState
(
VK_END
)
)
{
if
(
GetAsyncKeyState
(
VK_INSERT
)
)
{
espstatus
=
true
;
}
if
(
GetAsyncKeyState
(
VK_DELETE
)
)
{
espstatus
=
false
;
}
for
(
int
i
=
0
;
i
=
4.0f
)
{
DWORD
*
pointercoords
=
(
DWORD
*
)
(
cpedsearch
+
0x14
)
;
float
*
hisx
=
(
float
*
)
(
*
cpedsearch
+
0x30
)
;
float
*
hisy
=
(
float
*
)
(
*
cpedsearch
+
0x34
)
;
float
*
hisz
=
(
float
*
)
(
*
cpedsearch
+
0x38
)
;
std
::
vector

onscreen
=
world_to_screen
(
ViewMatrix
,
*
hisx
,
*
hisy
,
*
hisz
)
;
//далее будет рисование, но пока упустим
}
}
}
if
(
GetAsyncKeyState
(
VK_END
)
)
{
FreeConsole
(
)
;
fclose
(
f
)
;
}
FreeLibraryAndExitThread
(
hModule
,
0
)
;
return
0
;
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD  ul_reason_for_call
,
LPVOID lpReserved
)
{
switch
(
ul_reason_for_call
)
{
case
DLL_PROCESS_ATTACH
:
DisableThreadLibraryCalls
(
hModule
)
;
//disables attach and detach notifications
CloseHandle
(
CreateThread
(
nullptr
,
0
,
(
LPTHREAD_START_ROUTINE
)
MainThread
,
hModule
,
0
,
nullptr
)
)
;
case
DLL_THREAD_ATTACH
:
case
DLL_THREAD_DETACH
:
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}
 
Ответить с цитированием

  #2  
Старый 04.04.2024, 00:26
SobFoX;
Участник форума
Регистрация: 02.06.2015
Сообщений: 122
С нами: 5761386

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

MTA:SA Forks Anticheat Bypass

Since dutchman101 provided a protection with full anticheat for forks, i think it`s a time to fun INFO: https://wiki.multitheftauto.com/wiki/Forks_Ful...

www.unknowncheats.me
 
Ответить с цитированием

  #3  
Старый 04.04.2024, 01:04
qwertyrus
Познающий
Регистрация: 29.10.2023
Сообщений: 33
С нами: 1339196

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

Цитата:
Сообщение от SobFoX;  

MTA:SA Forks Anticheat Bypass

Since dutchman101 provided a protection with full anticheat for forks, i think it`s a time to fun INFO: https://wiki.multitheftauto.com/wiki/Forks_Ful...

www.unknowncheats.me

Спасибо конечно, но как это изменит краш из за функции вычисления координат на экране?
 
Ответить с цитированием

  #4  
Старый 04.04.2024, 08:50
SobFoX;
Участник форума
Регистрация: 02.06.2015
Сообщений: 122
С нами: 5761386

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

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

Спасибо конечно, но как это изменит краш из за функции вычисления координат на экране?
Start by doing what I sent you, if you don't want to get a permanent ban from mta
 
Ответить с цитированием

  #5  
Старый 04.04.2024, 18:17
qwertyrus
Познающий
Регистрация: 29.10.2023
Сообщений: 33
С нами: 1339196

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

Цитата:
Сообщение от SobFoX;  

Start by doing what I sent you, if you don't want to get a permanent ban from mta
Скопировал данный код, выдает много ошибок, библиотеку minhook установил и добавил в проект.

upd ошибок осталось 4
 
Ответить с цитированием

  #6  
Старый 05.04.2024, 15:29
Vintik
Познавший АНТИЧАТ
Регистрация: 18.08.2017
Сообщений: 1,568
С нами: 4598023

Репутация: 183


По умолчанию

А если убрать 76 строку (
Код:
world_to_screen
) — крашит?
 
Ответить с цитированием

  #7  
Старый 05.04.2024, 15:34
qwertyrus
Познающий
Регистрация: 29.10.2023
Сообщений: 33
С нами: 1339196

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

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

А если убрать 76 строку (
Код:
world_to_screen
) — крашит?
Нет. Крашит только с ней. Без нее все ок, функция написана вроде правильно, потому что external работало, а щас переписав под интернал что-то пошло не так.
 
Ответить с цитированием

  #8  
Старый 05.04.2024, 15:58
Vintik
Познавший АНТИЧАТ
Регистрация: 18.08.2017
Сообщений: 1,568
С нами: 4598023

Репутация: 183


По умолчанию

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

C++:





Код:
for
(
int
i
=
1
;
i
=
4.0f
)
{
DWORD
*
pointercoords
=
(
DWORD
*
)
(
cpedsearch
+
0x14
)
;
float
*
hisx
=
(
float
*
)
(
*
cpedsearch
+
0x30
)
;
float
*
hisy
=
(
float
*
)
(
*
cpedsearch
+
0x34
)
;
float
*
hisz
=
(
float
*
)
(
*
cpedsearch
+
0x38
)
;
std
::
vector

onscreen
=
world_to_screen
(
ViewMatrix
,
*
hisx
,
*
hisy
,
*
hisz
)
;
}

Как минимум, ошибка заключается в том, что координаты неправильно считываются (
Код:
pointercoords
вместо
Код:
cpedsearch
).

C++:





Код:
float
*
hisx
=
(
float
*
)
(
*
pointercoords
+
0x30
)
;
float
*
hisy
=
(
float
*
)
(
*
pointercoords
+
0x34
)
;
float
*
hisz
=
(
float
*
)
(
*
pointercoords
+
0x38
)
;


И перебор игроков у тебя неверный. Вроде должно быть так:

Цитата:

0xB74490 - Содержит указатель на указатель. Этот указатель:
  • +0 = Содержит указатель на первый элемент в пуле CPed
  • +4 = Содержит указатель на карту байтов, которая обозначает, какие элементы используются в пуле CPed
  • +8 = [dword] Максимальное число элементов в пуле CPed
  • +12 = [dword] Текущее число элементов в пуле CPed
 
Ответить с цитированием

  #9  
Старый 05.04.2024, 16:31
qwertyrus
Познающий
Регистрация: 29.10.2023
Сообщений: 33
С нами: 1339196

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

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

Как минимум, ошибка заключается в том, что координаты неправильно считываются (
Код:
pointercoords
вместо
Код:
cpedsearch
).

C++:





Код:
float
*
hisx
=
(
float
*
)
(
*
pointercoords
+
0x30
)
;
float
*
hisy
=
(
float
*
)
(
*
pointercoords
+
0x34
)
;
float
*
hisz
=
(
float
*
)
(
*
pointercoords
+
0x38
)
;


И перебор игроков у тебя неверный. Вроде должно быть так:
Про поинтер, я видимо когда переписывал не заметил и не то вписал, а за перебор спасибо, проверю через некоторое время и отвечу, не можешь помочь с ошибками которые на скрине?
 
Ответить с цитированием

  #10  
Старый 05.04.2024, 16:43
Vintik
Познавший АНТИЧАТ
Регистрация: 18.08.2017
Сообщений: 1,568
С нами: 4598023

Репутация: 183


По умолчанию

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

Скопировал данный код, выдает много ошибок, библиотеку minhook установил и добавил в проект.
upd ошибок осталось 4
В исходном файле (который тебе скинули) действительно эти функции не определены. Может, там еще какая-нибудь зависимость...

@SobFoX; what you can say about his issue? maybe there are other dependencies because i can't see defenition of this function in code and even in minhook source.
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.