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

  #5921  
Старый 06.03.2022, 17:25
writeline
Новичок
Регистрация: 16.01.2022
Сообщений: 28
С нами: 2276608

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

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

Всем добый вечер,подскажите пожалуйста как узнать координаты объекта по его айди?
Notepad++

Ctrl+F



И получаешь результат.

Скриншот 06-03-2022 162807.pngwriteline · 6 Мар 2022 в 16:25' data-fancybox="lb-post-991447" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/138833/" style="cursor: pointer;" title="Скриншот 06-03-2022 162807.png">
 
Ответить с цитированием

  #5922  
Старый 06.03.2022, 17:30
F0RQU1N and
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами: 4012500

Репутация: 138


По умолчанию

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

А нужен "хук" по этому адресу.
GitHub - TsudaKageyu/minhook: The Minimalistic x86/x64 API Hooking Library for Windows

The Minimalistic x86/x64 API Hooking Library for Windows - TsudaKageyu/minhook

github.com


и это же строка, как ты собираешся её хукать?
 
Ответить с цитированием

  #5923  
Старый 07.03.2022, 09:25
Chilim
Познающий
Регистрация: 16.01.2022
Сообщений: 71
С нами: 2276608

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

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

Ты не понял суть вопроса, либо рофлишь.
При заходе в игру появится такая же папка, с тем же названием "GTA San Andreas User Files"
А нужен "хук" по этому адресу.

Notepad++
Ctrl+F

И получаешь результат.
мне нужно на с++ в реальном времени
 
Ответить с цитированием

  #5924  
Старый 07.03.2022, 20:39
Fiksae
Новичок
Регистрация: 17.02.2022
Сообщений: 26
С нами: 2230348

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

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

  #5925  
Старый 07.03.2022, 22:57
4el0ve4ik
Познавший АНТИЧАТ
Регистрация: 12.11.2015
Сообщений: 1,560
С нами: 5526867

Репутация: 183


По умолчанию

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

Ты не понял суть вопроса, либо рофлишь.
При заходе в игру появится такая же папка, с тем же названием "GTA San Andreas User Files"
А нужен "хук" по этому адресу.

Notepad++
Ctrl+F

И получаешь результат.
Кароче, что касается вопроса изменения названия папки, то идешь по адресу 0x74503E и перезаписываешь указатель на свою строку. т.е.

C++:





Код:
std
::
string nameFolder
{
"\\GTA SA My Name Folder"
}
;
*
reinterpret_cast

(
0x74503F
)
=
&
nameFolder
[
0
]
;
 
Ответить с цитированием

  #5926  
Старый 08.03.2022, 02:38
4el0ve4ik
Познавший АНТИЧАТ
Регистрация: 12.11.2015
Сообщений: 1,560
С нами: 5526867

Репутация: 183


По умолчанию

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

Сделал вот так, папка не появляется, подсасывает как обычно с дефолт папки.

C++:





Код:
#include "pch.h"
#include "string"
void
USER_FILES
(
)
{
std
::
string nameFolder
{
"\\GTA SA My Name Folder"
}
;
*
reinterpret_cast

(
0x74503F
)
=
&
nameFolder
[
0
]
;
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD  ul_reason_for_call
,
LPVOID lpReserved
)
{
switch
(
ul_reason_for_call
)
{
case
DLL_PROCESS_ATTACH
:
case
DLL_THREAD_ATTACH
:
case
DLL_THREAD_DETACH
:
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}

Во первых ты функцию нигде не вызываешь, вот полностью рабочий код:

C++:





Код:
std
::
string nameFolder
{
"\\GTA SA My Name Folder"
}
;
class
patchNameFolder
{
public
:
patchNameFolder
(
)
{
*
reinterpret_cast

(
0x74503F
)
=
&
nameFolder
[
0
]
;
}
}
pNF
;
 
Ответить с цитированием

  #5927  
Старый 08.03.2022, 02:51
kin4stat
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами: 4483143

Репутация: 183


По умолчанию

Цитата:
Сообщение от 4el0ve4ik  

Кароче, что касается вопроса изменения названия папки, то идешь по адресу 0x74503E и перезаписываешь указатель на свою строку. т.е.

C++:





Код:
std
::
string nameFolder
{
"\\GTA SA My Name Folder"
}
;
*
reinterpret_cast

(
0x74503F
)
=
&
nameFolder
[
0
]
;

Конкретно данный пример будет крашить если что.
 
Ответить с цитированием

  #5928  
Старый 09.03.2022, 15:49
Чёрный вурдалак
Новичок
Регистрация: 10.10.2021
Сообщений: 15
С нами: 2418048

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

Цитата:
Сообщение от 4el0ve4ik  

Во первых ты функцию нигде не вызываешь, вот полностью рабочий код:

C++:





Код:
std
::
string nameFolder
{
"\\GTA SA My Name Folder"
}
;
class
patchNameFolder
{
public
:
patchNameFolder
(
)
{
*
reinterpret_cast

(
0x74503F
)
=
&
nameFolder
[
0
]
;
}
}
pNF
;

Мелочь, но всё же:

C++:





Код:
std
::
string desiredFolderName
{
"Example"
}
;
void
*
folderNameAddress
{
reinterpret_cast

(
0x74503F
)
}
;
// Проверяем доступность страницы виртуальной памяти, в которой расположен указатель.
::
MEMORY_BASIC_INFORMATION mbi
{
}
;
if
(
0
!=
::
VirtualQuery
(
folderNameAddress
,
&
mbi
,
sizeof
(
mbi
)
)
&&
mbi
.
State
==
MEM_COMMIT
&&
(
mbi
.
Protect
&
(
PAGE_EXECUTE
|
PAGE_EXECUTE_READ
|
PAGE_EXECUTE_READWRITE
|
PAGE_EXECUTE_WRITECOPY
)
)
)
{
// На случай, если адрес памяти указателя под защитой, меняем флаг доступа.
::
DWORD protectionFlagsBefore
{
}
;
if
(
::
VirtualProtect
(
folderNameAddress
,
sizeof
(
void
*
)
,
PAGE_READWRITE
,
&
protectionFlagsBefore
)
)
{
// Клонируем указатель, который находится по данному адресу.
char
*
folderNamePtr
{
nullptr
}
;
std
::
memcpy
(
&
folderNamePtr
,
folderNameAddress
,
sizeof
(
char
*
)
)
;
if
(
nullptr
!=
folderNamePtr
)
{
// Если указатель валиден, то записываем значение прямо в его объект, в отличие от прошлого примера.
// Метод перезаписи адреса, на кой направляет указатель, мне не очень нравится,
// ибо придётся постоянно держать в памяти объект, созданный нами для сего деяния.
// Потому делаем иначе!
std
::
memcpy
(
folderNamePtr
,
desiredFolderName
.
c_str
(
)
,
desiredFolderName
.
size
(
)
)
;
}
}
}
 
Ответить с цитированием

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

Репутация: 153


По умолчанию

Не отправляется пакет, использую RakHook

C++:





Код:
void
SendVehiclePacket
(
unsigned
__int16 vehID
,
CVector pos
,
CVector speed
)
{
stInCarData data
=
{
0
}
;
data
.
sVehicleID
=
vehID
;
data
.
fPosition
[
0
]
=
pos
.
x
;
data
.
fPosition
[
1
]
=
pos
.
y
;
data
.
fPosition
[
2
]
=
pos
.
z
;
data
.
fMoveSpeed
[
0
]
=
speed
.
x
;
data
.
fMoveSpeed
[
1
]
=
speed
.
y
;
data
.
fMoveSpeed
[
2
]
=
speed
.
z
;
data
.
fQuaternion
[
0
]
=
0
;
data
.
fQuaternion
[
1
]
=
0
;
data
.
fQuaternion
[
2
]
=
0
;
data
.
fQuaternion
[
3
]
=
0
;
data
.
fVehicleHealth
=
1000.0f
;
RakNet
::
BitStream bs
;
bs
.
Write

(
ID_VEHICLE_SYNC
)
;
bs
.
Write
(
(
PCHAR
)
&
data
,
sizeof
(
stInCarData
)
)
;
rakhook
::
send
(
&
bs
,
PacketPriority
::
HIGH_PRIORITY
,
PacketReliability
::
RELIABLE
,
'\000'
)
;
}
 
Ответить с цитированием

  #5930  
Старый 10.03.2022, 15:35
4el0ve4ik
Познавший АНТИЧАТ
Регистрация: 12.11.2015
Сообщений: 1,560
С нами: 5526867

Репутация: 183


По умолчанию

Цитата:
Сообщение от Чёрный вурдалак  

Мелочь, но всё же:

C++:





Код:
std
::
string desiredFolderName
{
"Example"
}
;
void
*
folderNameAddress
{
reinterpret_cast

(
0x74503F
)
}
;
// Проверяем доступность страницы виртуальной памяти, в которой расположен указатель.
::
MEMORY_BASIC_INFORMATION mbi
{
}
;
if
(
0
!=
::
VirtualQuery
(
folderNameAddress
,
&
mbi
,
sizeof
(
mbi
)
)
&&
mbi
.
State
==
MEM_COMMIT
&&
(
mbi
.
Protect
&
PAGE_EXECUTE_FLAGS
)
)
{
// На случай, если адрес памяти указателя под защитой, меняем флаг доступа.
::
DWORD protectionFlagsBefore
{
}
;
if
(
::
VirtualProtect
(
folderNameAddress
,
sizeof
(
void
*
)
,
PAGE_READWRITE
,
&
protectionFlagsBefore
)
)
{
// Клонируем указатель, который находится по данному адресу.
char
*
folderNamePtr
{
nullptr
}
;
std
::
memcpy
(
&
folderNamePtr
,
folderNameAddress
,
sizeof
(
char
*
)
)
;
if
(
nullptr
!=
folderNamePtr
)
{
// Если указатель валиден, то записываем значение прямо в его объект, в отличие от прошлого примера.
// Метод перезаписи адреса, на кой направляет указатель, мне не очень нравится,
// ибо придётся постоянно держать в памяти объект, созданный нами для сего деяния.
// Потому делаем иначе!
std
::
memcpy
(
folderNamePtr
,
desiredFolderName
.
c_str
(
)
,
desiredFolderName
.
size
(
)
)
;
}
}
}

А ниче, что если имя папки будет больше оригинального - ты перезапишешь следующую строку? В моем методе эта проблема решена. На счет протекта памяти - это был всего лишь пример.
 
Ответить с цитированием
Ответ





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


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




ANTICHAT ™ © 2001- Antichat Kft.