Просмотр полной версии : С/С++ Вопрос - Ответ
traceattack
19.12.2019, 23:53
Типо, оно содержит инфу, но редачить нельзя?
Почитай хотя бы базовую информацию о языке , иначе ты каждый шаг продолжишь здесь спрашивать.🤦*♂️
ImmortalDev
20.12.2019, 14:19
Потому что ты глуп - вот почему. Ты уже данную ошибку делал и тебе рассказали как надо работать.
Да, я правда глуп и туп =). Постараюсь больше не задавать однотипные вопросы)
Почитай хотя бы базовую информацию о языке , иначе ты каждый шаг продолжишь здесь спрашивать.🤦*♂️
Да я просто думать не хотел и полез быстрей на форум. Больше такое не повториться, сам буду пытаться разбираться =)
как инжектить в процесс gta_sa.exe через exe file код на lua или же файл lua
Azller Lollison
21.12.2019, 23:25
как инжектить в процесс gta_sa.exe через exe file код на lua или же файл lua
luajit + luaxx.dll
ток хз что тебе даст голое луа в гташке, разве что подключить какие-то либы на работу с памятью и сделать свое крутое апи как у мунлоадера..
1) Вопрос:
Приветствую.
Возник вопрос касательно C++, очень желаю получить ответ с прикрепленными строчками кода и требуемыми инклудами. Смотрите.
Мне нужно сделать так, чтобы в игровой чат вместо меня писала программа. Я уже научился открывать и закрывать чат (имитация нажатия клавиши), так же у меня есть строка (string) с текстом. Надо, чтобы оно типо вводило этот текст, не смотря на текущий язык на моей клавиатуре. ЭТО НЕОБЯЗАТЕЛЬНО ДЛЯ САМПА, НЕ НАДО МНЕ КИДАТЬ ССЫЛКУ НА САМПФУНКС С УЖЕ ГОТОВОЙ ВСТРОЕННОЙ ФУНКЦИЕЙ ОТПРАВКИ СООБЩЕНИЯ.
otherwise
24.12.2019, 00:30
1) Вопрос:
Приветствую.
Возник вопрос касательно C++, очень желаю получить ответ с прикрепленными строчками кода и требуемыми инклудами. Смотрите.
Мне нужно сделать так, чтобы в игровой чат вместо меня писала программа. Я уже научился открывать и закрывать чат (имитация нажатия клавиши), так же у меня есть строка (string) с текстом. Надо, чтобы оно типо вводило этот текст, не смотря на текущий язык на моей клавиатуре. ЭТО НЕОБЯЗАТЕЛЬНО ДЛЯ САМПА, НЕ НАДО МНЕ КИДАТЬ ССЫЛКУ НА САМПФУНКС С УЖЕ ГОТОВОЙ ВСТРОЕННОЙ ФУНКЦИЕЙ ОТПРАВКИ СООБЩЕНИЯ.
Если ты открываешь чат с помощью имитации нажатия клавиши, в чем проблема с помощью имитаций напечатать текст?
_=Gigant=_
24.12.2019, 01:45
What is the best & safest way to clean std::string from memory ?
std::string example;
1. example.clear();
2. example.resize(0);
3. std::fill(example.begin(), example.end(), 0);
Dark_Knight
24.12.2019, 12:51
example.clear(), example.shrink_to_fit();
Rolly666
24.12.2019, 23:43
fQuaternion Hello i need help i want to know how to get my vehicle(vehicledata) on raknet to turn to the xyz i set to it, and also the code i send speed to the xyz i set to it and also the speed setting
And also forging my direction(aimdata)
What is the best & safest way to clean std::string from memory ?
std::string example;
1. example.clear();
2. example.resize(0);
3. std::fill(example.begin(), example.end(), 0);
Hi there, such a cool question. Basically, have to distinguish what does "best & safest" mean in that context
By the rules of RTTI, standard definition of an object constructed in some arbitrary block (let's not include here some special cases like overloaded form of operator new()) will be destructed at the end of that block
C++:
{
std
::
string my_string
{
"String!"
}
;
// ...
// std::basic_string::~basic_string will be called
}
So you ain't gotta do that by yourself, no such need for neither .resize, nor free(), delete(), std::fill and others
In case 'safest method' stands for making sure data you operate within act must be zeroed / cleared, especially in cases when std::string will be used for storing sensitive data (passwords and others), well, there's no portable and unambiguous answer.
Doing manual .clear call does not give any guarantee that this call won't be optimized
Proof: https://godbolt.org/z/rdCQyQ (https://www.blast.hk/redirect/aHR0cHM6Ly9nb2Rib2x0Lm9yZy96L3JkQ1F5UQ)
Same goes for the std::basic_string::~basic_string, it might or mightn't clear used memory
libc++, for example, does this
libcxx/include/string at master · llvm-mirror/libcxx (https://github.com/llvm-mirror/libcxx/blob/master/include/string#L2124)
Project moved to: https://github.com/llvm/llvm-project - llvm-mirror/libcxx
github.com
For a kick-off, there's has to be some function to do zeroing above some memory block with confidentially that this call/expression won't be optimized away by the compiler.
You might take a look at the following:
1) memset_s from C11. Even though it must be portable, there are some problems with C11 in, for instance, Visual Studio. Moreover, __STDC_WANT_LIB_EXT1__ and __STDC_WANT_LIB_EXT1__ must be used in any platform and there's another possible issue - MacOS might not work with those macroeses.
Код:
#define __STDC_WANT_LIB_EXT1__ 1
#include
// available to use function
// errno_t memset_s(void * restrict s, rsize_t smax, int c, rsize_t n)
2) write memset_s by yourself, don't miss volatile modifier
Код:
void zerofill(void *data, size_t size) {
for (auto p = reinterpret_cast(data); size; size--) {
*(p + size) = 0;
}
}
3) User platform-provided solutions
bzero on macOS doesn't have any rule for compiler optimizations, so skip that
SecureZeroMemory on Windows does exactly what needed
SecureZeroMemory function (Windows) (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvcHJldm lvdXMtdmVyc2lvbnMvd2luZG93cy9kZXNrdG9wL2xlZ2FjeS9h YTM2Njg3Nyh2JTNEdnMuODUp)
docs.microsoft.com
Secondly, there's a need to know what is the way zeroing might be perfomed
1) direct data access
Before c++17, you could give a try to &str[0], but it has undefined behavior when pos == size()
Since c++17, std::basic_string::data will return non const pointer if target string was not const
2) might try std::allocator by calling std::string::get_allocator, but it's sort of deprecated
To implement this like it should be in modern c++, you can try usual class inheritance, but i'd like to recommend do this with std::unique_ptr, since it has support for the disposal function
Of course, this doesn't cover cases you're dealing with classical OOP model and can do cleaning at your class destructor
Here are the tests i've done
C++:
#include
#include
#include
#include
#include
#include
#include
char
*
get_string_data
(
std
::
string
&
str
)
{
if
constexpr
(
!
std
::
is_const
(
)
.
data
(
)
)
>
(
)
)
return
str
.
data
(
)
;
else
return
&
str
[
0
]
;
}
namespace
secure
{
static
void
safe_clear
(
void
*
data
,
size_t size
)
{
for
(
auto
p
=
reinterpret_cast
(
data
)
;
size
;
size
--
)
{
*
(
p
+
size
)
=
0
;
}
}
static
void
string_clear
(
std
::
string
*
str
)
{
safe_clear
(
reinterpret_cast
(
get_string_data
(
*
str
)
)
,
str
->
capacity
(
)
)
;
str
->
~
basic_string
(
)
;
::
operator
delete
(
str
)
;
}
}
struct
dump
{
std
::
unique_ptr
buf
;
char
*
block
;
size_t block_size
;
dump
(
std
::
string
&
str
)
{
block
=
get_string_data
(
str
)
;
block_size
=
str
.
capacity
(
)
;
buf
=
std
::
make_unique
(
block_size
)
;
std
::
copy
(
block
,
block
+
block_size
,
buf
.
get
(
)
)
;
}
static
void
print_block
(
const
char
*
dd
,
size_t size
)
{
for
(
const
char
*
p
=
dd
-
size
;
p
!=
dd
;
p
++
)
{
const
auto
c
=
*
(
p
+
size
)
;
std
::
cout
(
static_cast
(
c
)
)
using
str_seq
=
std
::
integer_sequence
;
template
constexpr
str_seq
operator
""
_s
(
)
{
return
{
}
;
}
template
struct
dump_var
;
template
struct
dump_var
>
{
static
constexpr
char
name
[
sizeof
.
.
.
(
name_c
)
+
1
]
=
{
name_c
.
.
.
,
'\0'
}
;
dump_var
(
std
::
function
f
)
{
auto
dumper
=
f
(
name
)
;
if
(
std
::
all_of
(
dumper
.
block
,
dumper
.
block
+
dumper
.
block_size
,
[
]
(
auto
v
)
{
return
v
==
0
;
}
)
)
std
::
cout
(
dumper
.
buf
.
get
(
)
)
,
dumper
.
block_size
)
;
std
::
cout
int
{
dump_var
(
[
]
(
auto
str
)
{
std
::
string
usual_way
(
str
)
;
usual_way
.
clear
(
)
;
//
(
[
]
(
auto
str
)
{
std
::
unique_ptr
>
custom_deleter
(
new
std
::
string
(
str
)
,
secure
::
string_clear
)
;
return
dump
(
*
custom_deleter
)
;
}
)
;
}
Код:
Test {Normal std::string usage blah blah blah} NOT passed!
Memory block before
0() 111(o) 114(r) 109(m) 97(a) 108(l) 32( ) 115(s) 116(t) 100(d) 58(:) 58(:) 115(s) 116(t) 114(r) 105(i) 110(n) 103(g) 32( ) 117(u) 115(s) 97(a) 103(g) 101(e) 32( ) 98(b) 108(l) 97(a) 104(h) 32( ) 98(b) 108(l) 97(a) 104(h) 32( ) 98(b) 108(l) 97(a) 104(h)
Memory block after
152(�) 43(+) 220(�) 249(�) 211(�) 127() 0() 0() 152(�) 43(+) 220(�) 249(�) 211(�) 127() 0() 0() 110(n) 103(g) 32( ) 117(u) 115(s) 97(a) 103(g) 101(e) 32( ) 98(b) 108(l) 97(a) 104(h) 32( ) 98(b) 108(l) 48(0) 0() 0() 0() 0() 0() 0()
Test {Custom deleter blah blah blah} passed!
Live: http://coliru.stacked-crooked.com/a/a08b5ab2257acbab (https://www.blast.hk/redirect/aHR0cDovL2NvbGlydS5zdGFja2VkLWNyb29rZWQuY29tL2EvYT A4YjVhYjIyNTdhY2JhYg)
Think I described it in the way you needed, I mean I correctly represented a word "safest"
By the way, take a look how it's implemented in, for instance, chromium project
chromium/third_party/unrar/src/secpassword.cpp at 6efa1184771ace08f3e2162b0255c93526d1750d · chromium/chromium (https://github.com/chromium/chromium/blob/6efa1184771ace08f3e2162b0255c93526d1750d/third_party/unrar/src/secpassword.cpp#L77)
The official GitHub mirror of the Chromium source. Contribute to chromium/chromium development by creating an account on GitHub.
github.com
Rolly666
26.12.2019, 10:39
fQuaternion Hello i need help i want to know how to get my vehicle(vehicledata) on raknet to turn to the xyz i set to it, and also the code i send speed to the xyz i set to it and also the speed setting
And also forging my direction(aimdata)
Up
mrdiimax
28.12.2019, 17:05
Как узнать ID аттач процесса ?
Carrentine
28.12.2019, 17:46
Как узнать ID аттач процесса ?
C++:
DWORD
GetProcId
(
const
char
*
procname
)
{
PROCESSENTRY32 pe
;
HANDLE hSnap
;
pe
.
dwSize
=
sizeof
(
PROCESSENTRY32
)
;
hSnap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPPROCESS
,
NULL
)
;
if
(
Process32First
(
hSnap
,
&
pe
)
)
{
do
{
if
(
strcmp
(
pe
.
szExeFile
,
procname
)
==
0
)
break
;
}
while
(
Process32Next
(
hSnap
,
&
pe
)
)
;
}
return
pe
.
th32ProcessID
;
}
/* By CleanLegend */
mrdiimax
28.12.2019, 22:21
C++:
DWORD
GetProcId
(
const
char
*
procname
)
{
PROCESSENTRY32 pe
;
HANDLE hSnap
;
pe
.
dwSize
=
sizeof
(
PROCESSENTRY32
)
;
hSnap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPPROCESS
,
NULL
)
;
if
(
Process32First
(
hSnap
,
&
pe
)
)
{
do
{
if
(
strcmp
(
pe
.
szExeFile
,
procname
)
==
0
)
break
;
}
while
(
Process32Next
(
hSnap
,
&
pe
)
)
;
}
return
pe
.
th32ProcessID
;
}
/* By CleanLegend */
46390mrdiimax · 28 Дек 2019 в 21:21' data-fancybox="lb-post-440577" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/46390/" style="cursor: pointer;" title="46390">
https://forum.antichat.xyz/attachments/27440577/
iAmerican
28.12.2019, 22:27
преобразуй в const char либо смени кодировку на многобайтовую
mrdiimax
28.12.2019, 22:32
преобразуй в const char либо смени кодировку на многобайтовую
Смена кодировки на многобайтовую ничего не дало
iAmerican
28.12.2019, 22:36
Смена кодировки на многобайтовую ничего не дало
Тебе написано что надо делать в ошибках. Берешь и преобразовываешь в нужный тебе формат данных
Если ты открываешь чат с помощью имитации нажатия клавиши, в чем проблема с помощью имитаций напечатать текст?
проблема в том, что у меня может не быть нужной раскладки на пк (например, нету русской, а текст русскими буквами)
otherwise
29.12.2019, 17:08
проблема в том, что у меня может не быть нужной раскладки на пк (например, нету русской, а текст русскими буквами)
Разве раскладку нельзя русскую поставить?)
Разве раскладку нельзя русскую поставить?)
Я задал другой вопрос, я понимаю, что можно извращаться как угодно.
Мой вопрос звучит так: можно ли имитировать ввод символа (даже если на твоей раскладке нету такого)? если да, то как это сделать.
AM0R3M1O
30.12.2019, 19:03
Есть у кого нибудь курс по реверсу ARM приложений?
Бубликов И.И
30.12.2019, 19:52
Есть у кого нибудь курс по реверсу ARM приложений?
https://beginners.re/RE4B-RU.pdf (https://www.blast.hk/redirect/aHR0cHM6Ly9iZWdpbm5lcnMucmUvUkU0Qi1SVS5wZGY)
Хотел спросить, как сделан собейстовский аирбрэйк? Он явно не сделал стандартным методом просчёта координат для тп каждых, там, 200 миллисекунд.
Там в собейте есть функция, типо можно стрелять под водой (когда опускаешься под воду, то все равно твой перс вроде бы стоит на земле и можно целиться, стрелять, приседать, вставать, пр.). Как такое сделать? Желательно прикреплять код, спасибо)
Musaigen
31.12.2019, 02:04
Хотел спросить, как сделан собейстовский аирбрэйк? Он явно не сделал стандартным методом просчёта координат для тп каждых, там, 200 миллисекунд.
Там в собейте есть функция, типо можно стрелять под водой (когда опускаешься под воду, то все равно твой перс вроде бы стоит на земле и можно целиться, стрелять, приседать, вставать, пр.). Как такое сделать? Желательно прикреплять код, спасибо)
mod_sa/src/cheat_actor.cpp at dc9b3b13599a8b6325e566f567b5391b0b2a6dc8 · BlastHackNet/mod_sa (https://github.com/BlastHackNet/mod_s0beit_sa-1/blob/dc9b3b13599a8b6325e566f567b5391b0b2a6dc8/src/cheat_actor.cpp#L206)
Multi-purpose cheat tool for GTA San Andreas and SA-MP - BlastHackNet/mod_sa
github.com
man1festDCS
31.12.2019, 18:14
как на c++ в сампе R-3 отправить ответ диалогу?
Появляется табличка(диалог), её надо закрыть там 2 клавиши, * Закончить работу* * Продолжить*, нажатием клавиши пробовал не закрывается, короче там 2 клавиши есть по 1 ещё
DARKSAMP
03.01.2020, 20:51
В чем проблема?
C#:
using
System
;
using
System
.
Collections
.
Generic
;
using
System
.
Linq
;
using
System
.
Text
;
using
System
.
Threading
.
Tasks
;
using
VkNet
.
Enums
.
SafetyEnums
;
using
ApiAiSDK
;
using
ApiAiSDK
.
Model
;
using
System
.
Data
.
Entity
;
using
VkNet
.
Model
;
using
VkNet
.
Model
.
RequestParams
;
using
VkNet
;
namespace
VKBOT
{
class
Program
{
public
int
GroupID
=
24132412
;
}
static
void
Main
(
string
[
]
args
)
{
}
}
}
Dark_Knight
03.01.2020, 21:12
Посмотри внимательней, если, конечно, знаешь основы. Так же не забывай показывать ошибку компилятора.
В чем проблема?
C#:
using
System
;
using
System
.
Collections
.
Generic
;
using
System
.
Linq
;
using
System
.
Text
;
using
System
.
Threading
.
Tasks
;
using
VkNet
.
Enums
.
SafetyEnums
;
using
ApiAiSDK
;
using
ApiAiSDK
.
Model
;
using
System
.
Data
.
Entity
;
using
VkNet
.
Model
;
using
VkNet
.
Model
.
RequestParams
;
using
VkNet
;
namespace
VKBOT
{
class
Program
{
public
int
GroupID
=
24132412
;
}
static
void
Main
(
string
[
]
args
)
{
}
}
}
скобка лишняя на 24 строке
DARKSAMP
04.01.2020, 01:27
Смотрите, надо объявить перменную,
public int GroupID = 45124123;
Как это правильно сделать? Не понимаю, в каком месте и как
C#:
using
VkNet
.
Enums
.
SafetyEnums
;
using
ApiAiSDK
;
using
ApiAiSDK
.
Model
;
using
System
.
Data
.
Entity
;
using
VkNet
.
Model
;
using
VkNet
.
Model
.
RequestParams
;
using
VkNet
;
using
System
;
using
System
.
Collections
.
Generic
;
using
System
.
Linq
;
namespace
BOTVK3
.
_0
{
class
Program
{
static
void
Main
(
string
[
]
args
)
{
}
}
}
Смотрите, надо объявить перменную,
public int GroupID = 45124123;
Как это правильно сделать? Не понимаю, в каком месте и как
C#:
using
VkNet
.
Enums
.
SafetyEnums
;
using
ApiAiSDK
;
using
ApiAiSDK
.
Model
;
using
System
.
Data
.
Entity
;
using
VkNet
.
Model
;
using
VkNet
.
Model
.
RequestParams
;
using
VkNet
;
using
System
;
using
System
.
Collections
.
Generic
;
using
System
.
Linq
;
namespace
BOTVK3
.
_0
{
class
Program
{
static
void
Main
(
string
[
]
args
)
{
}
}
}
В клас Program запихни
C#:
public
static
readonly
int
GroupID
=
45124123
;
DARKSAMP
04.01.2020, 02:42
Пацаны, вопрос. Сделал бота на ВК, Запускаю консоль, он выполняет одну команду, которую я напишу. После ничего не делает, а работает только после перезапуска консоли, вот код.
C#:
[CODE]
using
System
;
using
System
.
Collections
.
Generic
;
using
System
.
Linq
;
using
System
.
Net
;
using
System
.
Text
;
using
System
.
Threading
.
Tasks
;
using
Newtonsoft
.
Json
.
Linq
;
using
static
System
.
Console
;
namespace
BOTVK3
.
_0
{
class
Program
{
static
void
Main
(
string
[
]
args
)
{
string
requesturl1
=
"https://api.vk.com/method/messages.getDialogs?v=5.85&access_token=02f70b54b27f&count=100&offset=0"
;
WebClient
wc
=
new
WebClient
(
)
;
string
str
=
wc
.
DownloadString
(
requesturl1
)
;
dynamic
json
=
JObject
.
Parse
(
str
)
;
for
(
int
i
=
0
;
i
Dark_Knight
04.01.2020, 02:45
Цикла же нет.
DARKSAMP
04.01.2020, 02:46
Цикла же нет.
Что добавить нужно, подскажи. А то я новичок)
Carrentine
04.01.2020, 02:52
Что добавить нужно, подскажи. А то я новичок)
C#:
[CODE]
using
System
;
using
System
.
Collections
.
Generic
;
using
System
.
Linq
;
using
System
.
Net
;
using
System
.
Text
;
using
System
.
Threading
.
Tasks
;
using
Newtonsoft
.
Json
.
Linq
;
using
static
System
.
Console
;
namespace
BOTVK3
.
_0
{
class
Program
{
static
void
Main
(
string
[
]
args
)
{
while
(
true
)
{
string
requesturl1
=
"https://api.vk.com/method/messages.getDialogs?v=5.85&access_token=02f70b54b27f&count=100&offset=0"
;
WebClient
wc
=
new
WebClient
(
)
;
string
str
=
wc
.
DownloadString
(
requesturl1
)
;
dynamic
json
=
JObject
.
Parse
(
str
)
;
for
(
int
i
=
0
;
i
DARKSAMP
04.01.2020, 21:05
Смотрите, меню бота:
Тут должно быть ниже описание по строчкам, как это сделать?)
C#:
case
"меню"
:
message
=
"Полное меню бота:"
;
break
;
Dark_Knight
04.01.2020, 21:11
Разве case поддерживает в шарпах стринги?
Musaigen
04.01.2020, 22:11
Смотрите, меню бота:
Тут должно быть ниже описание по строчкам, как это сделать?)
C#:
case
"меню"
:
message
=
"Полное меню бота:"
;
break
;
Используй String.Equals
ребята, привет, можете объяснить почему оно работает не так как должен? и что вообще возвращает clock()?
я сделал эту проверку
C++:
[CODE]
int
Delay
=
2
;
int
main
(
)
{
int
timed
=
clock
(
)
;
int
rawtimed
=
clock
(
)
;
if
(
rawtimed
>
(
timed
+
Delay
)
)
{
cout
но работает через раз, либо вообще не работает. может ли кто-то предложить замену или фикс?
4el0ve4ik
07.01.2020, 01:29
[QUOTE="social enemy"]
ребята, привет, можете объяснить почему оно работает не так как должен? и что вообще возвращает clock()?
я сделал эту проверку
C++:
[CODE]
int
Delay
=
2
;
int
main
(
)
{
int
timed
=
clock
(
)
;
int
rawtimed
=
clock
(
)
;
if
(
rawtimed
>
(
timed
+
Delay
)
)
{
cout
Dark_Knight
07.01.2020, 01:48
DWORD time = GetTickCount(); в мс возвращает время с начала запуска ос.
chrono юзайте. В разы удобней чем гет тик коунт
ещё раз привет), ребят, нужно хукнуть wndproc, но как? хукнуть нужно чтобы функции меню нажимались с 1 раза, а не с 30
Musaigen
07.01.2020, 03:21
ещё раз привет), ребят, нужно хукнуть wndproc, но как? хукнуть нужно чтобы функции меню нажимались с 1 раза, а не с 30
Помогите разобраться с WndProc hook. (https://blast.hk/threads/46359/)
В прошлой теме мне посоветовали вместо создания потока хукать гташку, ну прочитал я про хук ииии, нихрена не понял как это использовать для написания того же аирбрейка на самп. Может кто скинуть пример плагина ASI с WndProc hook? p.s предыдущая тема - https://blast.hk/threads/46211/
blast.hk
DWORD time = GetTickCount(); в мс возвращает время с начала запуска ос.
нет, не работает, использовал только вместо DWORD int
chrono юзайте. В разы удобней чем гет тик коунт
попробовал, тоже огорчило. пытаюсь прибавить к нему значение он даёт мне в ответ 100 ошибок почему мне не нужно ему прибавлять значение
нет, не работает, использовать только вместо DWORD int
попробовал, тоже огорчило. пытаюсь прибавить к нему значение он даёт мне в ответ 100 ошибок почему мне не нужно ему прибавлять значение
write in english please
write in english please
да блин, русский я! просто мисскликаю, потому что из-за этой функции успел поспать 6 часов
да блин, русский я! просто мисскликаю, потому что из-за этой функции успел поспать 6 часов
Хз куда ты мисскликнул, может по словам в своей голове? Потому что у тебя в принципе не понятно что ты написал
нет, не работает, использовал только вместо DWORD int
попробовал, тоже огорчило. пытаюсь прибавить к нему значение он даёт мне в ответ 100 ошибок почему мне не нужно ему прибавлять значение
C++:
[CODE]
// https://ru.cppreference.com/w/cpp/chrono
#include
#include
int
delay
=
2
;
int
main
(
)
{
for
(
int
i
=
0
;
i
(
end
-
start
)
.
count
(
)
Всем привет, вопрос по поводу хука эндсцены. При альт табе чёрный экран, кто-нибудь знает как это лечить?
CleanLegend
08.01.2020, 01:10
Всем привет, вопрос по поводу хука эндсцены. При альт табе чёрный экран, кто-нибудь знает как это лечить?
добавить хук reset
добавить хук reset
иного выхода без ресета нет?
Dark_Knight
08.01.2020, 13:37
иного выхода без ресета нет?
Нет
Нет
есть.
в хуке энд сцены после рендера обновлять все фонты
Dark_Knight
08.01.2020, 15:51
Обычно фонты обновляют в событиях, когда это нужно.
Какой интерфейс юзать для читов на DLL (пишу на С++)?
Какой интерфейс юзать для читов на DLL (пишу на С++)?
imgui
Какой интерфейс юзать для читов на DLL (пишу на С++)?
d3d, писать меню самому
imgui
если нет античита. многие античиты уже спалили имгуи
На UC много готовых интерфейсов
nosofttipa
10.01.2020, 11:44
как добавить команду через пробел, например
test и test test2
waparabka
10.01.2020, 16:58
d3d, писать меню самому
если нет античита. многие античиты уже спалили имгуи
imgui + sampcac
47282waparabka · 10 Янв 2020 в 15:58' data-fancybox="lb-post-446542" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/47282/" style="cursor: pointer;" title="47282">
https://forum.antichat.xyz/attachments/27446542/
neYarik.
10.01.2020, 17:56
Как рисовать CSprite2d поверх текстдравов? plugin-sdk от dk22pac
imgui + sampcac
с новым годом. я говорил про игры в общем, а не про сампкак.
попробуй неделю прожить в расте с имгуи, тебя на 12-24 часов хватит и ты улетишь
сильно не выпендривайся =)
Как интегрировать с++ в скрипты по сампу? Я чайник чайником, но хочу свои минимальные знания увеличить и практиковать тут
Dark_Knight
11.01.2020, 02:05
За скрипты на с++ у нас тут дают по ебалу.
За скрипты на с++ у нас тут дают по ебалу.
мб он имел ввиду вроперы?
waparabka
12.01.2020, 12:35
Как корректно получить координаты костей персонажа, откуда можно взять нужные структуры и какие адреса нужны для этого? Хелп.
-------
How to correctly get the coordinates of the character’s bones, where can I get the necessary structures from and what addresses are needed for this? Help.
DarkP1xel
12.01.2020, 18:16
Как корректно получить координаты костей персонажа, откуда можно взять нужные структуры и какие адреса нужны для этого? Хелп.
-------
How to correctly get the coordinates of the character’s bones, where can I get the necessary structures from and what addresses are needed for this? Help.
C++:
auto
cPed
::
getBonePosition
(
class
cVector3D
*
vecResult
,
const
unsigned
__int32 ui32BoneID
,
const
bool
bDynamic
)
->
void
{
reinterpret_cast
(
0x5E4280
)
(
this
,
vecResult
,
ui32BoneID
,
bDynamic
)
;
return
;
}
Не совсем по играм, но-таки нужна помощь ясных голов:
имеется код следующего вида:
C++:
wscanf
(
L
"%[\":a-zA-Zа-яА-Я\\' '][l]s"
,
filepath
.
c_str
(
)
)
;
, задача которого по перетаскиваю файла в окно консоли, получить его путь и открыть файл. Вчера была проблема, что обычной cin обрезал строку по пробелам, потому пришлось перейти на scanf.
Теперь проблема следующая, которую очевидным способом решить не удалось: пути обрываются на кириллице, то-есть a-zA-Z работает с латиницей, а а-яА-Я не работает с кириллицей вообще никак, что есть - что нет. Гуглил, для того же питона это решение подошло. У меня оно не работает. Как исправить?
добавлено спустя секунду размышлений: вторые скобки, 'l' и 's' добавлены были после проверки, так что хотя они тут и не нужны, без них всё точно так же не работает
Dark_Knight
12.01.2020, 19:16
C++:
std
::
string str
;
getline
(
cin
,
str
)
;
Receiver
18.01.2020, 13:07
https://forum.antichat.xyz/attachments/27449845/
блять я уже затрахался, то туда, то сюда include суют, не работает никак.
есть 4 файла: main.cpp/.h и menu.cpp/.h
menu.h:
https://forum.antichat.xyz/attachments/27449845/
menu.cpp:
https://forum.antichat.xyz/attachments/27449845/
main.h:
https://forum.antichat.xyz/attachments/27449845/
main.cpp:
https://forum.antichat.xyz/attachments/27449845/
мне нужен variables.h и в main.cpp и в menu.cpp
помогите пж
imgui + sampcac
Haha there's not bypass. It's only a shitty D3D Hook from github and some pasted functions. SAMPCAC was already bypassed in 2017.
Lmao https://github.com/Garret22/DX9Hook-SAMP
Carrentine
18.01.2020, 13:29
Haha there's not bypass. It's only a shitty D3D Hook from github and some pasted functions. SAMPCAC was already bypassed in 2017.
Lmao https://github.com/Garret22/DX9Hook-SAMP
ha-ha close your small mouth, this is anticheat doesn't put any protection on the render, this is what the person showed.
raymondique
18.01.2020, 14:40
в чем разница GetBonePosition и GetTransformedBonePosition
mdCbN3sVkZs.jpgraymondique · 18 Янв 2020 в 13:40' data-fancybox="lb-post-449886" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="/proxy.php?image=https%3A%2F%2Fsun9-58.userapi.com%2Fc856524%2Fv856524966%2Fb7977%2Fmd CbN3sVkZs.jpg&hash=a494bff11643befaeb3e5702d774a6fa" style="cursor: pointer;" title="mdCbN3sVkZs.jpg">
https://sun9-58.userapi.com/c856524/v856524966/b7977/mdCbN3sVkZs.jpg
появляется такое небо при рисовании линий
Код:
void CRender::drawLine(float x1, float y1, float x2, float y2, float width, D3DCOLOR color)
{
DX_VERTEX Vertices[2] =
{
DX_VERTEX(x1, y1, 0.f, color),
DX_VERTEX(x2, y2, 0.f, color)
};
this->renderDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
this->renderDevice->SetFVF(DX_VERTEX::FVF);
this->renderDevice->SetTexture(0, NULL);
this->renderDevice->DrawPrimitiveUP(D3DPT_LINELIST, 1, Vertices, sizeof(DX_VERTEX));
}
Здравствуйте, можете дать пример ImGui::RadioButton?
Здравствуйте, можете дать пример ImGui::RadioButton?
https://github.com/ocornut/imgui/blob/8bcac7d95caa7e3b960b7bf7c3bcda4ecfe4541f/imgui_demo.cpp#L461
По какой причине используя рендер в SAMPFUNCS, рисует текст размытым? Всё дефолтное, лишь динамически изменяется текст и координаты.
edik06041
25.01.2020, 20:54
Помогите сделать аси для крмп на ввод команд с задержкой, если это платно то сколько будет стоить
Dark_Knight
25.01.2020, 22:39
По какой причине используя рендер в SAMPFUNCS, рисует текст размытым? Всё дефолтное, лишь динамически изменяется текст и координаты.
Потому что еще надо применять сглаживание.
Каким образом порекомендуете создавать фастконнект для КРМП (мне НЕ нужны исходники)?
Потому что еще надо применять сглаживание.
Каким образом?
Код:
SF->getRender()->getD3DDevice()->SetRenderState(D3DRS_MULTISAMPLEANTIALIAS, 1);
^ не помогает
Dark_Knight
26.01.2020, 18:09
Я не помню какой тип нужно.
loganhackerdff
29.01.2020, 19:14
парни, написал прграмму чтоб открывать дисковод (подсмотрел у DarkP1xel`я) но на других компьютерах не запускается, и пишет что нет vcruntime140d.dll
ИМенно 140Dа не просто 140
скорее всего я чо то не так накодил. Помогите исправить
C:
#include "stdafx.h"
#include "windows.h"
typedef
DWORD
(
WINAPI
*
PGNSI
)
(
LPCTSTR
,
LPTSTR
,
UINT
,
HANDLE
)
;
PGNSI Binput
;
int
main
(
)
{
DWORD uReturnVal
;
HMODULE hdll
=
LoadLibrary
(
L
"Winmm.DLL"
)
;
Binput
=
(
PGNSI
)
GetProcAddress
(
hdll
,
"mciSendStringA"
)
;
//0 0 0 "Set cdaudio door closed wait" 27@
uReturnVal
=
Binput
(
L
"Set cdaudio door closed wait"
,
0
,
0
,
0
)
;
//FreeLibrary(hdll);
return
0
;
}
Dark_Knight
29.01.2020, 19:38
С чего ты взял что ты не правильно накодил? Эта ошибка говорит, что у них нет vcruntime140d.dll, а не что твой код кривой. Вот держи. Пусть себе поставят.
Система - [addon] Microsoft Visual C++ 05-08-10-12-13-19-22 Redistributable Package x86 & x64 (https://www.blast.hk/redirect/aHR0cDovL2ZvcnVtLm9zem9uZS5uZXQvdGhyZWFkLTE0NTc2Ni 5odG1s)
Система - [addon] Microsoft Visual C++ 05-08-10-12-13-19-22 Redistributable Package x86 & x64
forum.oszone.net
Эта ошибка говорит, что у них нет vcruntime140d.dll, а не что твой код кривой
А буква d в названии библиотеки говорит, что он скомпилировал бинарь в debug-режиме, и не факт, что в MSVCPPRP поставляются debug-бинари, так что, прежде, чем пихать MSVCPPRP надо перекомпилить в release
Dark_Knight
29.01.2020, 20:05
А буква d в названии библиотеки говорит, что он скомпилировал бинарь в debug-режиме, и не факт, что в MSVCPPRP поставляются debug-бинари, так что, прежде, чем пихать MSVCPPRP надо перекомпилить в release
Че проебался с буквой D :D
loganhackerdff
29.01.2020, 20:19
А буква d в названии библиотеки говорит, что он скомпилировал бинарь в debug-режиме, и не факт, что в MSVCPPRP поставляются debug-бинари, так что, прежде, чем пихать MSVCPPRP надо перекомпилить в release
теперь программа работает, но свою функцию не выполняет, всё таки я чо то не то, сделал, помогите починить пж
ссылка на описание функции - https://docs.microsoft.com/en-us/previous-versions/dd757161(v=vs.85) (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvcHJldm lvdXMtdmVyc2lvbnMvZGQ3NTcxNjEodj12cy44NSk)
Описание:Открывает дисковод ;D.
Использование:0AB1: call_scm_func @mciSendString 0
CLEO:
:mciSendString
0AA2:
25@
= load_library
"Winmm.DLL"
0AA4:
26@
= get_proc_address
"mciSendStringA"
library
25@
0AA7:
call_function
26@
num_params
4
pop
0
0
0
0
"Set cdaudio door open wait"
27@
0AA3:
free_library
25@
0AB2:
ret
0
Описание:Закрывает дисковод .
Использование:0AB1: call_scm_func @mciSendString 0
CLEO:
:mciSendString
0AA2:
25@
= load_library
"Winmm.DLL"
0AA4:
26@
= get_proc_address
"mciSendStringA"
library
25@
0AA7:
call_function
26@
num_params
4
pop
0
0
0
0
"Set cdaudio door closed wait"
27@
0AA3:
free_library
25@
0AB2:
ret
0
C:
#include "stdafx.h"
#include "windows.h"
#include "iostream"
using namespace std
;
typedef
MCIERROR
(
WINAPI
*
PGNSI
)
(
LPCTSTR
,
LPTSTR
,
UINT
,
HANDLE
)
;
PGNSI Binput
;
int
main
(
)
{
MCIERROR uReturnVal
;
HMODULE hdll
=
LoadLibrary
(
L
"Winmm.DLL"
)
;
Binput
=
(
PGNSI
)
GetProcAddress
(
hdll
,
"mciSendStringA"
)
;
//0 0 0 "Set cdaudio door open wait" 27@
uReturnVal
=
Binput
(
L
"Set cdaudio door open wait"
,
0
,
0
,
0
)
;
//FreeLibrary(hdll);
return
0
;
}
Receiver
30.01.2020, 19:53
как отправить синхру нажатия клавиши N через bitstream
как отправить синхру нажатия клавиши N через bitstream
с сампфунксом, как я понимаю
C++:
void
SendCustomOnfootSync
(
)
{
stOnFootData sync
;
memset
(
&
sync
,
0
,
sizeof
(
stOnFootData
)
)
;
sync
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
;
sync
.
byteCurrentWeapon
+=
128
;
BitStream bsActorSync
;
bsActorSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsActorSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsActorSync
)
;
}
Receiver
30.01.2020, 22:43
с сампфунксом, как я понимаю
C++:
void
SendCustomOnfootSync
(
)
{
stOnFootData sync
;
memset
(
&
sync
,
0
,
sizeof
(
stOnFootData
)
)
;
sync
=
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
pLocalPlayer
->
onFootData
;
sync
.
byteCurrentWeapon
+=
128
;
BitStream bsActorSync
;
bsActorSync
.
Write
(
(
BYTE
)
ID_PLAYER_SYNC
)
;
bsActorSync
.
Write
(
(
PCHAR
)
&
sync
,
sizeof
(
stOnFootData
)
)
;
SF
->
getRakNet
(
)
->
SendPacket
(
&
bsActorSync
)
;
}
это зажатие получается или просто одноразовое нажатие?
Dark_Knight
30.01.2020, 22:50
это зажатие получается или просто одноразовое нажатие?
Одноразовое нажатие.
Receiver
01.02.2020, 15:13
Я использую поток с циклом. Выгружаю значит скрипт, сворачиваю игру. Затем разворачиваю её и у меня чёрный экран. Цикл останавливаю через EVENT
Помогите сделать нормальный поток с остановкой цикла и завершением самого потока при отгрузке скрипта)
C++:
HANDLE event
;
void
ThreadProc
(
void
*
pParam
)
{
while
(
WaitForSingleObject
(
event
,
100
)
!=
WAIT_OBJECT_0
)
{
// Anything actions in while
}
_endthread
(
)
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
event
=
CreateEvent
(
NULL
,
FALSE
,
FALSE
,
NULL
)
;
_beginthread
(
ThreadProc
,
0
,
NULL
)
;
init
=
true
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
switch
(
dwReasonForCall
)
{
case
DLL_PROCESS_ATTACH
:
{
SF
->
initPlugin
(
mainloop
,
hModule
)
;
}
break
;
case
DLL_PROCESS_DETACH
:
{
SetEvent
(
event
)
;
}
break
;
}
return
TRUE
;
}
Receiver
01.02.2020, 15:15
Oid na 11 stroke
Соре, я криво скопировал
Приветствую. Есть несколько вопросов, желаю по всем получить ответ, конечно =)
1) Как найти оффсеты на самп-античит (который фризит)? Мне нужно для КРМП, но оффсеты я желаю найти сам, хочу получить лишь пошаговый алгоритм действий (это тебе не хп или координаты искать, не от чего оттолкнуться).
2) Я сделал хук функции [посл. введённая команда], но там есть несколько багов. Помогите, плиз (всё описал в посту): клик (https://blast.hk/threads/48621/post-453577)
3) Как на чистом С++ заспавнить машину? Тоже интересно узнать, желательно опять таки, не скидывать функцию из собейта, а расписать пошаговый алгоритм (хотя бы примерный), чтобы я смог повторить его в других играх (не только самп).
Пока что всё =) Еще раз спасибки
pretlant
02.02.2020, 06:00
Мне в GTA:SA нужно получить список объетов (их координаты и т.п), которые расположены от меня на определенном радиусе. Есть идеи? Кто-нибудь пробовал?
Больше упор на то, как получить этим объекты?
loganhackerdff
03.02.2020, 23:12
C++
как создать поток в CLR / CLR poor проекте???
(в проекте с UI а.к.а Windows::Form)
Я использую поток с циклом. Выгружаю значит скрипт, сворачиваю игру. Затем разворачиваю её и у меня чёрный экран. Цикл останавливаю через EVENT
Помогите сделать нормальный поток с остановкой цикла и завершением самого потока при отгрузке скрипта)
C++:
HANDLE event
;
void
ThreadProc
(
void
*
pParam
)
{
while
(
WaitForSingleObject
(
event
,
100
)
!=
WAIT_OBJECT_0
)
{
// Anything actions in while
}
_endthread
(
)
;
}
void
CALLBACK
mainloop
(
)
{
static
bool
init
=
false
;
if
(
!
init
)
{
if
(
GAME
==
nullptr
)
return
;
if
(
GAME
->
GetSystemState
(
)
!=
eSystemState
::
GS_PLAYING_GAME
)
return
;
if
(
!
SF
->
getSAMP
(
)
->
IsInitialized
(
)
)
return
;
event
=
CreateEvent
(
NULL
,
FALSE
,
FALSE
,
NULL
)
;
_beginthread
(
ThreadProc
,
0
,
NULL
)
;
init
=
true
;
}
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD dwReasonForCall
,
LPVOID lpReserved
)
{
switch
(
dwReasonForCall
)
{
case
DLL_PROCESS_ATTACH
:
{
SF
->
initPlugin
(
mainloop
,
hModule
)
;
}
break
;
case
DLL_PROCESS_DETACH
:
{
SetEvent
(
event
)
;
}
break
;
}
return
TRUE
;
}
Зачем тебе поток?
Приветствую. Есть несколько вопросов, желаю по всем получить ответ, конечно =)
1) Как найти оффсеты на самп-античит (который фризит)? Мне нужно для КРМП, но оффсеты я желаю найти сам, хочу получить лишь пошаговый алгоритм действий (это тебе не хп или координаты искать, не от чего оттолкнуться).
2) Я сделал хук функции [посл. введённая команда], но там есть несколько багов. Помогите, плиз (всё описал в посту): клик (https://blast.hk/threads/48621/post-453577)
3) Как на чистом С++ заспавнить машину? Тоже интересно узнать, желательно опять таки, не скидывать функцию из собейта, а расписать пошаговый алгоритм (хотя бы примерный), чтобы я смог повторить его в других играх (не только самп).
Пока что всё =) Еще раз спасибки
@SR_team (https://www.blast.hk/members/11231/) @DarkP1xel (https://www.blast.hk/members/3658/) помогите
@SR_team (https://www.blast.hk/members/11231/) @DarkP1xel (https://www.blast.hk/members/3658/) помогите
удачи тебе со спавном инфернуса в варкрафте, используя метод из гта. А ач ищется так же как и хп с координатами
удачи тебе со спавном инфернуса в варкрафте, используя метод из гта. А ач ищется так же как и хп с координатами
А можешь более конкретно ответить? Ты по сути нифига не сказал, а все 3 вопроса остаются в силе (кста, не играю в варкрафт, сравнить машины в одинухе гта 5)
Как ач ищется? От чего оттолкнуться
От чего оттолкнуться
от фриза. Ты можешь быть заморожен или нет, как найдешь 3-10 значений, чекни нет ли кого из них в сампе, и если есть, то далее работай только с ними, а если нет, то со всеми. Далее вешаешь бп на запись и смотришь откуда пишет, если записи из сампа нет, то находи начала функций и смотри откуда они вызываются. Уходя вглубь по функциям рано или поздно точно выйдешь в самп, но не обязательно в ач. Далее иди вглубь по функциям в сампе, смотри условия вызова, и так придешь в ач.
В общем, как я и сказал, алгоритм идентичен поиску хп/коорд
от фриза. Ты можешь быть заморожен или нет, как найдешь 3-10 значений, чекни нет ли кого из них в сампе, и если есть, то далее работай только с ними, а если нет, то со всеми. Далее вешаешь бп на запись и смотришь откуда пишет, если записи из сампа нет, то находи начала функций и смотри откуда они вызываются. Уходя вглубь по функциям рано или поздно точно выйдешь в самп, но не обязательно в ач. Далее иди вглубь по функциям в сампе, смотри условия вызова, и так придешь в ач.
В общем, как я и сказал, алгоритм идентичен поиску хп/коорд
Спасибо, сделаю, все понял)
А по поводу спавна все же как?)
Спасибо, сделаю, все понял)
А по поводу спавна все же как?)
так же. Это универсальный метод поиска нужного кода
так же. Это универсальный метод поиска нужного кода
А потом просто его вызывать? А аргументы как искать? И еще в первом посту я скинул ссылку на то, где я пытался сделать хук, но по непонятным мне причинам тщетно.
А аргументы как искать?
Чекай регистры и запушивание в стек непосредственно перед вызовом функции, и обращения к [ebp+...] в самой функции
Receiver
05.02.2020, 20:46
как можно получить разрешение экрана (игры) без SFAPI
Carrentine
05.02.2020, 20:53
как можно получить разрешение экрана (игры) без SFAPI
C++:
/* Глобально в системе. */
POINT globalScreenResolution
=
{
GetSystemMetrics
(
SM_CXSCREEN
)
,
GetSystemMetrics
(
SM_CYSCREEN
)
)
}
/* Установленное игрой. */
POINT gameScreenResolution
=
{
*
reinterpret_cast
(
0xC9C040
)
,
*
reinterpret_cast
(
0xC9C044
)
}
testuser
09.02.2020, 13:37
Приветствую.
Как, используя sampfuncs, при получении RPC_ScrGangZoneStopFlash прочесть новый цвет гангзоны (если она была захвачена)?
В Lua работает просто используя
Код:
local pool = ffi.cast('struct stGangzonePool*', sampGetGangzonePoolPtr())
local color = pool.pGangzone[id].dwColor
, а вот sampfuncs'е через
Код:
stGangzonePool* pool = SF->getSAMP()->getInfo()->pPools->pGangzone;
pool->pGangzone[id]->dwColor;
отображает старый цвет гангзоны.
Musaigen
09.02.2020, 21:21
Приветствую.
Как, используя sampfuncs, при получении RPC_ScrGangZoneStopFlash прочесть новый цвет гангзоны (если она была захвачена)?
В Lua работает просто используя
Код:
local pool = ffi.cast('struct stGangzonePool*', sampGetGangzonePoolPtr())
local color = pool.pGangzone[id].dwColor
, а вот sampfuncs'е через
Код:
stGangzonePool* pool = SF->getSAMP()->getInfo()->pPools->pGangzone;
pool->pGangzone[id]->dwColor;
отображает старый цвет гангзоны.
Через хук.
testuser
09.02.2020, 23:24
Через хук.
Каким образом?
loganhackerdff
10.02.2020, 20:04
как отправлять http запросы? желательно просто в консольном приложении с++
как отправлять http запросы? желательно просто в консольном приложении с++
Держи простенький класс, думаю на первое время тебе его хватит.
Исходник - SendGet (https://blast.hk/threads/24280/)
Класс для отправки get запроса и получения ответа. CleanLegend/SendGet(https://github.com/CleanLegend/SendGet) Пример использования: MyGet MyGetGet; std::string myotvet; MyGetGet.Init("mysite.com"); MyGetGet.SendGet("test.php?user=test", myotvet); MyGetGet.DeInit();
blast.hk
Каким образом?
RPC List (https://github.com/BrunoBM16/samp-packet-list/wiki/RPC-List#gang-zones)
A list with SA-MP's packets documented. Contribute to Brunoo16/samp-packet-list development by creating an account on GitHub.
github.com
C++:
bool
CALLBACK
incomingRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrGangZoneCreate
)
{
WORD wGangZoneID
;
float
minmax
[
4
]
;
DWORD color
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
wGangZoneID
)
;
params
->
bitStream
->
Read
(
minmax
)
;
params
->
bitStream
->
Read
(
color
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"GangZoneCreate: %d / %0.2f, %0.2f, %0.2f, %0.2f / %d"
,
wGangZoneID
,
minmax
[
0
]
,
minmax
[
1
]
,
minmax
[
2
]
,
minmax
[
3
]
,
color
)
;
}
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrGangZoneDestroy
)
{
WORD wGangZoneID
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
wGangZoneID
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"GangZoneDestroy: %d"
,
wGangZoneID
)
;
}
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrGangZoneFlash
)
{
WORD wGangZoneID
;
DWORD color
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
wGangZoneID
)
;
params
->
bitStream
->
Read
(
color
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"GangZoneFlash: %d / %d"
,
wGangZoneID
,
color
)
;
}
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrGangZoneStopFlash
)
{
WORD wGangZoneID
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
wGangZoneID
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"GangZoneStopFlash: %d"
,
wGangZoneID
)
;
}
return
true
;
}
//Init, Register hook RPC's
SF
->
getRakNet
(
)
->
registerRakNetCallback
(
RakNetScriptHookType
::
RAKHOOK_TYPE_INCOMING_RPC
,
incomingRPC
)
;
Dark_Knight
10.02.2020, 23:31
как отправлять http запросы? желательно просто в консольном приложении с++
Кури curlpp
loganhackerdff
11.02.2020, 17:51
конечно тупой вопрос, но как добавлять в свой проект доп. библиотеки? или как та это называется
чтоб в проекте пистать
C++:
#include
#include
#include
вот библиотека https://github.com/jpbarrette/curlpp/releases/tag/v0.8.1
Dark_Knight
11.02.2020, 20:36
Глобальные инклуды. Можешь просто закинуть в проект либу и подключать через обычные скобки "
Как соединить между собой void ... [Name]? Я знаю, что можно сделать в один void, но нужно в несколько. Не понимаю, как их между собой совместить. Подскажите пооооожалуйста, буду оочень признателен :3
C++:
[CODE]
#include
#include
#include
using
namespace
std
;
void
D
(
)
{
int
a
,
b
,
c
,
D
;
D
=
pow
(
b
,
2
)
-
4
*
a
*
c
;
return
;
}
void
D_M
(
)
{
int
D
;
if
(
D
0
)
{
x1
=
(
-
b
-
sqrt
(
D
)
)
/
(
2
*
a
)
;
x2
=
(
-
b
+
sqrt
(
D
)
)
/
(
2
*
a
)
;
}
return
;
}
void
main
(
)
{
int
a
,
b
,
c
,
x1
,
x2
;
cin
>>
a
>>
b
>>
c
;
cout
traceattack
12.02.2020, 03:33
[QUOTE="bet.io"]
Как соединить между собой void ... [Name]? Я знаю, что можно сделать в один void, но нужно в несколько. Не понимаю, как их между собой совместить. Подскажите пооооожалуйста, буду оочень признателен :3
C++:
#include
#include
#include
using
namespace
std
;
void
D
(
)
{
int
a
,
b
,
c
,
D
;
D
=
pow
(
b
,
2
)
-
4
*
a
*
c
;
return
;
}
void
D_M
(
)
{
int
D
;
if
(
D
0
)
{
x1
=
(
-
b
-
sqrt
(
D
)
)
/
(
2
*
a
)
;
x2
=
(
-
b
+
sqrt
(
D
)
)
/
(
2
*
a
)
;
}
return
;
}
void
main
(
)
{
int
a
,
b
,
c
,
x1
,
x2
;
cin
>>
a
>>
b
>>
c
;
cout
C++:
[CODE]
#include
#include
using
namespace
std
;
void
func
(
int
a
,
int
b
,
int
c
)
{
int
D
=
b
*
b
-
4
*
a
*
c
;
if
(
D
>
0
)
cout
>
a
>>
b
>>
c
;
func
(
a
,
b
,
c
)
;
return
0
;
}
Твой код (если это можно так назвать) за гранью человеческого понимания 🤪 (Если тебе надо несколько функций, надеюсь, сам как-нибудь справишься *Вздох*)
C++:
#include
#include
using
namespace
std
;
void
func
(
int
a
,
int
b
,
int
c
)
{
int
D
=
b
*
b
-
4
*
a
*
c
;
if
(
D
>
0
)
cout
>
a
>>
b
>>
c
;
func
(
a
,
b
,
c
)
;
return
0
;
}
Твой код (если это можно так назвать) за гранью человеческого понимания 🤪 (Если тебе надо несколько функций, надеюсь, сам как-нибудь справишься *Вздох*)
А какая разница, где вводить переменные a b c, в скобках либо внутри void?
traceattack
12.02.2020, 12:39
А какая разница, где вводить переменные a b c, в скобках либо внутри void?
Почитай хотя бы про основы языка , чтобы не задавать такие глупые вопросы
как сделать активацию по чит-коду sf samp
Parameters->bitStream->IgnoreBits(1337);
добавляет и присваивает (+=)
Parameters->bitStream->SetReadOffset(1337);
присваивает (=)
Evgeniy_Pavuk
29.02.2020, 20:33
При использовании GetOpenFileName появляются две ошибки. Не пойму как решить. Проект https://yadi.sk/d/PDpm7uK5Y-T4KQ (https://www.blast.hk/redirect/aHR0cHM6Ly95YWRpLnNrL2QvUERwbTd1SzVZLVQ0S1E) (не смог залить на бх из-за размера файла)
При использовании GetOpenFileName появляются две ошибки. Не пойму как решить. Проект https://yadi.sk/d/PDpm7uK5Y-T4KQ (https://www.blast.hk/redirect/aHR0cHM6Ly95YWRpLnNrL2QvUERwbTd1SzVZLVQ0S1E) (не смог залить на бх из-за размера файла)
а нельзя было просто ошибки написать?
masskill
03.03.2020, 23:05
как сделать чтоб плагин только на определенном сервере работал?
Как из строки
Администратор Nick_Name добавил 50000 материалов на склад фракции Grove Gang. Текущее состояние склада: 100000
Достать Nick_Name, 50000, Grove Gang, 100000?
C++:
bool
CALLBACK
incomingRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrClientMessage
)
{
DWORD color
;
DWORD strlen
;
char
msg
[
144
]
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
color
)
;
params
->
bitStream
->
Read
(
strlen
)
;
params
->
bitStream
->
Read
(
msg
,
strlen
)
;
msg
[
strlen
]
=
'\0'
;
std
::
cmatch res
;
if
(
std
::
regex_search
(
msg
,
res
,
std
::
regex
(
"Администратор (.+) добавил (\\d+) материалов на склад фракции (.+). Текущее состояние склада: (\\d+)"
)
)
)
{
for
(
auto
element
:
res
)
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
"%s"
,
element
)
;
}
SF
->
LogConsole
(
msg
)
;
return
true
;
}
}
;
masskill
04.03.2020, 17:31
Сверять IP или название сервера.
В клео для того чтобы работал ток на одном сервере используется опкод 0b39.
В луа — sampGetCurrentServerAddress()
А вот в sf/asi плагинах я даж не знаю, как реализовать это.
raymondique
05.03.2020, 18:49
мне нужно открыть карту гта через память, не открывая главного меню на escape
https://forum.antichat.xyz/attachments/27466791/
такой код не работает должным образом
брал адреса отсюда:
https://forum.antichat.xyz/attachments/27466791/
Адреса Памяти (SA) — GTAModding.ru (https://www.blast.hk/redirect/aHR0cDovL2d0YW1vZGRpbmcucnUvd2lraS8lRDAlOTAlRDAlQj QlRDElODAlRDAlQjUlRDElODElRDAlQjBfJUQwJTlGJUQwJUIw JUQwJUJDJUQxJThGJUQxJTgyJUQwJUI4XyhTQSk)
gtamodding.ru
masskill
10.03.2020, 23:04
Почему анимация не производится?
C++:
bool
CALLBACK
inRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrApplyAnimation
)
{
ushort uPlayerID
;
byte byteNameLenAnimLib
;
char
cAnimLib
[
50
]
;
byte byteNameLenAnimName
;
char
cAnimName
[
50
]
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
uPlayerID
)
;
params
->
bitStream
->
Read
(
byteNameLenAnimLib
)
;
params
->
bitStream
->
Read
(
cAnimLib
,
byteNameLenAnimLib
)
;
cAnimLib
[
byteNameLenAnimLib
]
=
NULL
;
params
->
bitStream
->
Read
(
byteNameLenAnimName
)
;
params
->
bitStream
->
Read
(
cAnimName
,
byteNameLenAnimName
)
;
cAnimName
[
byteNameLenAnimName
]
=
NULL
;
if
(
uPlayerID
==
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
sLocalPlayerID
)
{
if
(
strstr
(
cAnimLib
,
"PED"
)
&&
strstr
(
cAnimName
,
"WALK_DRUNK"
)
&&
TEST
==
true
)
{
return
false
;
}
}
}
return
true
;
}
loganhackerdff
17.03.2020, 15:31
как сказать что-то ? (say) SF->getSAMP()->
raymondique
20.03.2020, 07:05
В настройках игры, а именно в разделе настроек дисплея есть настройка разрешения, мне нужно изменить разрешение игры не открывая меню через DLL. Изменяя адрес разрешение остается таким же потому что не нажимается кнопка ENTER которая применяет настройки
AM0R3M1O
22.03.2020, 16:36
Как отобразить нужный мне объект на экране , либо вывести его координаты в чат?
void:
[CODE]
void
Render_Flowers
(
)
{
for
(
int
i
=
0
;
i
Receiver
29.03.2020, 19:15
C++:
if
(
std
::
regex_match
(
string
,
result
,
std
::
regex
(
"^Администратор (\\w+) ответил вам: (.+)"
)
)
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
">> Nick: %s"
,
result
[
1
]
)
;
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
-
1
,
">> Answer: %s"
,
result
[
2
]
)
;
}
как это работает, я пытаюсь получить ник и ответ администратора
ну и вот что получается:
https://forum.antichat.xyz/attachments/27473631/
поправьте мою регулярку плиз 😘
Receiver
29.03.2020, 21:30
Да, я тоже строил регулярку через этот сайт, но что-то не катит вообще
https://forum.antichat.xyz/attachments/27473697/
loganhackerdff
29.03.2020, 22:47
дай сайт
Receiver
29.03.2020, 22:54
дай сайт
regex101: build, test, and debug regex (https://www.blast.hk/redirect/aHR0cHM6Ly9yZWdleDEwMS5jb20)
Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust.
regex101.com
H0wDareY0u
30.03.2020, 08:17
Почему анимация не производится?
C++:
bool
CALLBACK
inRPC
(
stRakNetHookParams
*
params
)
{
if
(
params
->
packetId
==
ScriptRPCEnumeration
::
RPC_ScrApplyAnimation
)
{
ushort uPlayerID
;
byte byteNameLenAnimLib
;
char
cAnimLib
[
50
]
;
byte byteNameLenAnimName
;
char
cAnimName
[
50
]
;
params
->
bitStream
->
ResetReadPointer
(
)
;
params
->
bitStream
->
Read
(
uPlayerID
)
;
params
->
bitStream
->
Read
(
byteNameLenAnimLib
)
;
params
->
bitStream
->
Read
(
cAnimLib
,
byteNameLenAnimLib
)
;
cAnimLib
[
byteNameLenAnimLib
]
=
NULL
;
params
->
bitStream
->
Read
(
byteNameLenAnimName
)
;
params
->
bitStream
->
Read
(
cAnimName
,
byteNameLenAnimName
)
;
cAnimName
[
byteNameLenAnimName
]
=
NULL
;
if
(
uPlayerID
==
SF
->
getSAMP
(
)
->
getPlayers
(
)
->
sLocalPlayerID
)
{
if
(
strstr
(
cAnimLib
,
"PED"
)
&&
strstr
(
cAnimName
,
"WALK_DRUNK"
)
&&
TEST
==
true
)
{
return
false
;
}
}
}
return
true
;
}
return false; убери
loganhackerdff
01.04.2020, 17:19
как рисовать текст или линии всякие не используя SF? (в asi)
как рисовать текст или линии всякие не используя SF? (в asi)
Гайд - [ASI] Хукаем d3d9 (https://www.blast.hk/threads/32712/)
Привет. Сегодня разберем как хукать d3d9 для рисования квадратов или своего меню. Что нам нужно хукануть для полноценного рисования? - Present/EndScene (Вывод на экран информации) - Reset (Перезагрузка интерфейса) Подключаем заголовки: #include #include #include #pragma comment(lib...
www.blast.hk
loganhackerdff
01.04.2020, 21:18
Это не работает без MoonLoader'a!
а как оно зависит?
Подскажите пожалуйста почему при вводе десятичного числа программа сразу завершает работу?
C++:
[CODE]
#include
using
namespace
std
;
void
main
(
)
{
int
N
,
a
[
10000
]
,
min
=
INT_MAX
,
c
=
0
;
cin
>>
N
;
for
(
int
i
=
0
;
i
>
a
[
i
]
;
for
(
int
i
=
0
;
i
1
)
c
++
;
if
(
a
[
i
]
1
)
min
=
a
[
i
]
;
}
cout
1. How to display text at relative given coords?
2. How to detect if CTRL key is pressed?
This doesn't work. It works for non-modifiers key (isKeyPressed same):
Код:
if (SF->getGame()->isKeyDown(0x11)) {
AddChatMsg(d3d_white, "CTRL IS PRESSED");
}
loganhackerdff
05.04.2020, 16:57
нашёл видос, с получением указателя на девайс чтоб рисовать -
скажите, я смогу такое на visual studio 2019 написать?
и есть ли способ легче?
Deprecation
05.04.2020, 18:33
скажите, я смогу такое на visual studio 2019 написать?
https://forum.antichat.xyz/attachments/27476184/
loganhackerdff
05.04.2020, 18:46
GetDevice9Methods();
функция не обнаружна хотя все либы я подкличил что и на видосе
DarkP1xel
05.04.2020, 18:47
GetDevice9Methods();
функция не обнаружна хотя все либы я подкличил что и на видосе
Боже это пользовательская функция.
loganhackerdff
05.04.2020, 20:13
ладно, я нашёд какую то херню, скажите, это хоть похоже на получение указателя на девайс
C++:
uintptr_t
get_return_address
(
const
HMODULE d3d_module
)
{
constexpr
auto
return_addr_pattern
=
"8B CF FF D6 8B 4D 08 8B 41 3C FF 40 08 83 4D FC FF"
;
MODULEINFO moduleinfo
=
{
nullptr
}
;
if
(
GetModuleInformation
(
GetCurrentProcess
(
)
,
d3d_module
,
&
moduleinfo
,
sizeof
(
moduleinfo
)
)
==
FALSE
)
return
0
;
return
uintptr_t
(
FindPattern
(
PBYTE
(
moduleinfo
.
lpBaseOfDll
)
,
moduleinfo
.
SizeOfImage
,
return_addr_pattern
)
)
;
}
loganhackerdff
05.04.2020, 22:48
Даже если и похоже, как ты будешь этим пользоваться, если ты даже отличить не можешь?
другим дам
Что мешает использовать directx sdk?
loganhackerdff
05.04.2020, 22:50
я его и использую, хукаю Present, а для этого нужен указатель на девайс, я не могу его найти
Ребят, не думайте что я тупенький в этом, так и есть
ucciModd
06.04.2020, 20:09
emulateGTAKey из сампфункса это функция игры? Если да, то какой её адрес?
Deprecation
06.04.2020, 20:31
emulateGTAKey из сампфункса это функция игры? Если да, то какой её адрес?
Не нашел ничего по этому поводу, но держи несколько ссылок - может помогут для достижения твоей цели.
keybd_event function (winuser.h) - Win32 apps (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLWtleWJk X2V2ZW50)
Synthesizes a keystroke.
docs.microsoft.com
Documenting GTA-SA memory addresses (https://www.blast.hk/redirect/aHR0cHM6Ly9ndGFmb3J1bXMuY29tL3RvcGljLzE5NDE5OS1kb2 N1bWVudGluZy1ndGEtc2EtbWVtb3J5LWFkZHJlc3Nlcy9wYWdl LzM2Lz90YWI9Y29tbWVudHMjY29tbWVudC0xMDU5Njc0NjMw)
gtaforums.com
loganhackerdff
06.04.2020, 22:25
как можно сделать активацию на команду в asi?
Deprecation
06.04.2020, 22:38
как можно сделать активацию на команду в asi?
C++:
#define SAMP_INPUT_INFO 0x21A0E8
#define SAMP_FUNC_REGISTERCMD 0x65AD0
BOOL
RegisterChatCommand
(
LPCSTR sName
,
LPVOID lpvFunction
)
{
DWORD dwSAMPAddress
=
reinterpret_cast
(
GetModuleHandleA
(
"SAMP.DLL"
)
)
;
if
(
dwSAMPAddress
)
{
LPVOID lpvInputInfo
=
*
reinterpret_cast
(
dwSAMPAddress
+
SAMP_INPUT_INFO
)
;
if
(
lpvInputInfo
)
{
reinterpret_cast
(
dwSAMPAddress
+
SAMP_FUNC_REGISTERCMD
)
(
lpvInputInfo
,
sName
,
lpvFunction
)
;
return
TRUE
;
}
}
return
FALSE
;
}
/*
Example:
LPVOID CommandHandler(LPCSTR sParams)
{
// sParams - command parameters.
}
RegisterChatCommand("CommandName", CommandHandler);
*/
ucciModd
07.04.2020, 00:36
Сообщением ранее искал адрес памяти для клавиш гта и получил ответ. Выполнил следующий код:
C++:
while
(
bThread
)
{
*
(
int
*
)
(
0xB73458
+
0x3
)
=
255
;
}
Все работает, но довольно часто останавливается, будто на микросекунду отжал клавишу
Deprecation
07.04.2020, 00:41
Сообщением ранее искал адрес памяти для клавиш гта и получил ответ. Выполнил следующий код:
C++:
while
(
bThread
)
{
*
(
int
*
)
(
0xB73458
+
0x3
)
=
255
;
}
Все работает, но довольно часто останавливается, будто на микросекунду отжал клавишу
Все из за цикла while, возникают несостыковки с основным циклом игры. Как я понял, ты для этих дел создаешь поток, но в твоем случае нужно хукнуть основной цикл игры, и там уже ставить статус клавише. Пример хука можно поглядеть вот тут:
cEntry.cpp · master · Konstantin Poletaev / API for GTA San Andreas with SAMP (https://gitlab.com/konstantin.poletaev/api-for-gta-san-andreas-with-samp/-/blob/master/cEntry.cpp)
GitLab.com
gitlab.com
cAPI/cHooker/cHooker.cpp · master · Konstantin Poletaev / API for GTA San Andreas with SAMP (https://gitlab.com/konstantin.poletaev/api-for-gta-san-andreas-with-samp/-/blob/master/cAPI/cHooker/cHooker.cpp)
GitLab.com
gitlab.com
cAPI/cHooks/cHooks.cpp · master · Konstantin Poletaev / API for GTA San Andreas with SAMP (https://gitlab.com/konstantin.poletaev/api-for-gta-san-andreas-with-samp/-/blob/master/cAPI/cHooks/cHooks.cpp)
GitLab.com
gitlab.com
ucciModd
07.04.2020, 01:57
Все из за цикла while, возникают несостыковки с основным циклом игры. Как я понял, ты для этих дел создаешь поток, но в твоем случае нужно хукнуть основной цикл игры, и там уже ставить статус клавише. Пример хука можно поглядеть вот тут:
cEntry.cpp · master · Konstantin Poletaev / API for GTA San Andreas with SAMP (https://gitlab.com/konstantin.poletaev/api-for-gta-san-andreas-with-samp/-/blob/master/cEntry.cpp)
GitLab.com
gitlab.com
cAPI/cHooker/cHooker.cpp · master · Konstantin Poletaev / API for GTA San Andreas with SAMP (https://gitlab.com/konstantin.poletaev/api-for-gta-san-andreas-with-samp/-/blob/master/cAPI/cHooker/cHooker.cpp)
GitLab.com
gitlab.com
cAPI/cHooks/cHooks.cpp · master · Konstantin Poletaev / API for GTA San Andreas with SAMP (https://gitlab.com/konstantin.poletaev/api-for-gta-san-andreas-with-samp/-/blob/master/cAPI/cHooks/cHooks.cpp)
GitLab.com
gitlab.com
Теперь перестал воспроизводить нажатие, хотя любой другой код исполняется
C++:
SA
->
getSignals
(
)
->
onLoop
+=
[
&
]
(
)
{
if
(
bTest
)
*
(
int
*
)
(
0xB73458
+
0x3
)
=
255
;
}
;
ucciModd
07.04.2020, 02:05
C++:
*
reinterpret_cast
(
0xB73458
+
0x3
)
=
255
;
// Если не сработает, присвой 128.
Что 255, что 128 - не работает
ucciModd
07.04.2020, 02:22
Нет возможности сейчас проверить, по крайней мере такой код работает идеально:
C++:
CreateThread
(
nullptr
,
0
,
[
]
(
LPVOID lpvThreadParameters
)
->
DWORD
{
while
(
true
)
*
reinterpret_cast
(
0xB73458
+
0x3
)
=
255
;
return
0U
;
}
,
nullptr
,
0
,
nullptr
)
;
Это тоже останавливает
ucciModd
07.04.2020, 02:27
Попробуй именно технику отжатия/зажатия, т.е присвоить 0/128.
Ну если так сделать, то оно повторяет это. Персонаж по шагу двигается
ucciModd
07.04.2020, 02:31
Ты на время зажимай, а не в каждой итерации зажимай/отжимай.
Ну теперь он это делает по заданному таймеру
ucciModd
07.04.2020, 02:38
Смотри, когда ты присваиваешь 128 - ты зажимаешь клавишу, когда 0 - отжимаешь.
Можешь просто присвоить 128 и он у тебя вечно бежать будет.
Ну я понимаю, что 128 - воспроизведение клавиши, а 0 - отжатие. Если просто поставить 128, то он все равно на микросекунду остановится. А если делать 0/128, то он просто это делает по заданному времени
Ну я понимаю, что 128 - воспроизведение клавиши, а 0 - отжатие. Если просто поставить 128, то он все равно на микросекунду остановится. А если делать 0/128, то он просто это делает по заданному времени
Попробуй писать еще и по этому адресу: 0x00B7358C
ucciModd
07.04.2020, 19:36
Попробуй писать еще и по этому адресу: 0x00B7358C
Так вообще ничего не происходит
https://forum.antichat.xyz/attachments/27477791/
1. Ваш вопрос. Решил на самоизоляции попробовать написать на C++ простой код. Раньше этого не делал, поэтому возможны костыли и небрежность. Суть в чем - выводится не то, что нужно, а именно:
https://forum.antichat.xyz/attachments/27477941/
Может кто показать ошибку?
C++:
[CODE]
#include
#include
#include
#include
#include
using
namespace
std
;
DWORD
GetProcId
(
const
wchar_t
*
procname
)
{
PROCESSENTRY32 pe
;
HANDLE hSnap
;
pe
.
dwSize
=
sizeof
(
PROCESSENTRY32
)
;
hSnap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPPROCESS
,
NULL
)
;
if
(
Process32First
(
hSnap
,
&
pe
)
)
{
do
{
if
(
wcscmp
(
pe
.
szExeFile
,
procname
)
==
0
)
break
;
}
while
(
Process32Next
(
hSnap
,
&
pe
)
)
;
}
return
pe
.
th32ProcessID
;
}
DWORD
get_module
(
HANDLE hProcess
,
const
wchar_t
*
name
)
{
HMODULE hMods
[
1024
]
;
DWORD cbNeeded
;
unsigned
int
i
;
if
(
EnumProcessModules
(
hProcess
,
hMods
,
sizeof
(
hMods
)
,
&
cbNeeded
)
)
{
for
(
i
=
0
;
i
Зачем тебе тут самп, если получить можно с помощью указателя локального CPed'a
Можно узнать, как это сделать? Я нашёл исходник один и решил попробовать это сделать, поэтому особо не знаю, как найти CPed
checkdasound
13.04.2020, 22:37
Как строку перевести в utf-8? Есть ли штука типа u8, но чтобы работала еще и с переменными?
DolgorukovGTA
14.04.2020, 19:55
Как строку перевести в utf-8? Есть ли штука типа u8, но чтобы работала еще и с переменными?
Сработало? (https://www.blast.hk/redirect/aHR0cHM6Ly9ydS5zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbn MvNzgzOTQ2LyVEMCU5QSVEMCVCRSVEMCVCRCVEMCVCMiVEMCVC NSVEMSU4MCVEMSU4MiVEMCVCOCVEMSU4MCVEMCVCRSVEMCVCMi VEMCVCMCVEMSU4MiVEMSU4Qy0lRDAlQjItJUQwJUJBJUQwJUJF JUQwJUI0JUQwJUI4JUQxJTgwJUQwJUJFJUQwJUIyJUQwJUJBJU QxJTgzLXV0Zjg)
-raymond-
16.04.2020, 11:14
если у меня в длл будет использоваться имгуи, и при условии что я запротекчу ее VMProtect, возможно ли будет по сигнатуре файла распознать что там есть имгуи?
если у меня в длл будет использоваться имгуи, и при условии что я запротекчу ее VMProtect, возможно ли будет по сигнатуре файла распознать что там есть имгуи?
VMProtect снимается на изи, и очень сильно нагружает процесс gta, все другие распаковщики так же снимаются, и вообще обязательно найдётся человек, который снимет твой протект за плату. Смысл тогда защищать его? И да, с VMProtect при правильных настройках не будет видно что там ImGui.
---------------------------------------------------
Кто знает как можно сделать поиск hex строк или просто строк в памяти процесса gta? Искал долго оч, так и не нашел, вроде пробывал чекать в исходниках Process Hacker там где функция Memory -> Strings но тоже не нашел. буду оч благодарен если подскажите КОДОМ
очень сильно нагружает процесс gta
нагружает защита памяти
Как подключить imgui для gta sa в ASI? если вопрос слишком банальный, скажите что хоть изучить чтобы понять как подключить.
Papercut
18.04.2020, 01:59
я задолбался искать решение, тыкать наугад и так далее. Может тут кто-то сталкивался с таким.. Делю SF плагин, котоырй по команде в чат просто тупо берет цвет указанного пиксела.
Проблемная функция:
void
CALLBACK
getp
(
std
::
string param
)
{
DWORD color
=
GetPixel
(
GetDC
(
GetActiveWindow
(
)
)
,
380
,
770
)
;
char
c
[
4
]
;
sprintf
(
c
,
"%d"
,
color
)
;
sampAddChatMessage
(
D3DCOLOR_XRGB
(
0xAA
,
0xAA
,
0xAA
)
,
c
)
;
}
При попытке сборки получаю:
https://i.ibb.co/8zgmHLc/image.png
(https://ibb.co/k32Gts1 (https://www.blast.hk/redirect/aHR0cHM6Ly9pYmIuY28vazMyR3RzMQ))
я задолбался
Желательно поставить для всех конфигураций
https://forum.antichat.xyz/attachments/27481432/
И добавить
https://forum.antichat.xyz/attachments/27481432/
По поводу кода, как-то так хоть, правда еще желательно больше проверок разных на валидность GetDC, например, и т.д.
C++:
#include
#include
// ...
void
__stdcall
getp
(
std
::
string param
)
{
std
::
smatch match
;
const
auto
regex_result
=
std
::
regex_search
(
param
,
match
,
std
::
regex
(
R"eof((\d+)\s+(\d+))eof"
)
)
;
struct
DCResource
{
HWND hwnd
;
HDC hdc
;
DCResource
(
const
HWND hwnd
=
::
GetActiveWindow
(
)
)
:
hwnd
(
hwnd
)
,
hdc
(
::
GetDC
(
this
->
hwnd
)
)
{
}
~
DCResource
(
)
{
::
ReleaseDC
(
hwnd
,
hdc
)
;
}
inline
HDC
operator
*
(
)
{
return
hdc
;
}
}
;
int
numbers
[
2
]
;
for
(
unsigned
int
i
=
0
;
i
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_RGBA
(
255
,
255
,
0
,
0
)
,
": Defaulting %s to 0"
,
!
i
?
"X"
:
"Y"
)
;
numbers
[
i
]
=
0
;
}
}
union
{
struct
{
unsigned
red
:
8
;
unsigned
green
:
8
;
unsigned
blue
:
8
;
unsigned
alpha
:
8
;
}
;
COLORREF as_int
;
}
color
{
.
as_int
=
::
GetPixel
(
*
DCResource
{
}
,
numbers
[
0
]
,
numbers
[
1
]
)
}
;
if
(
color
.
as_int
==
CLR_INVALID
)
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
D3DCOLOR_XRGB
(
255
,
255
,
0
)
,
": Color cannot be retrieved"
)
;
}
else
{
SF
->
getSAMP
(
)
->
getChat
(
)
->
AddChatMessage
(
color
.
as_int
|
0xFF000000
,
"Color of the point %d %d is the following: %u (0x%x) (R: %u, G: %u, B: %u)"
,
numbers
[
0
]
,
numbers
[
1
]
,
color
.
as_int
,
color
.
as_int
,
color
.
red
,
color
.
green
,
color
.
blue
)
;
}
}
-raymond-
18.04.2020, 17:34
VMProtect снимается на изи, и очень сильно нагружает процесс gta, все другие распаковщики так же снимаются, и вообще обязательно найдётся человек, который снимет твой протект за плату. Смысл тогда защищать его? И да, с VMProtect при правильных настройках не будет видно что там ImGui.
---------------------------------------------------
Кто знает как можно сделать поиск hex строк или просто строк в памяти процесса gta? Искал долго оч, так и не нашел, вроде пробывал чекать в исходниках Process Hacker там где функция Memory -> Strings но тоже не нашел. буду оч благодарен если подскажите КОДОМ
знаешь как правильно настроить вмпротект чтобы не было видно имгуи?
знаешь как правильно настроить вмпротект чтобы не было видно имгуи?
Давно его не юзал, но вообще это я фигню сказал, ибо VMProtect кроет норм, и никаких imgui видно не будет (я не тестировал, но не должно)
neYarik.
18.04.2020, 22:39
как менять стандартные сообщения? Joining the game и такое.
как менять стандартные сообщения? Joining the game и такое.
в IDA (или в другой дизассемблере) найти ссылку на эту строку и изменить значение.
4el0ve4ik
18.04.2020, 22:45
как менять стандартные сообщения? Joining the game и такое.
в IDA (или в другой дизассемблере) найти ссылку на эту строку и изменить значение.
Hex editor)) 0)
как менять стандартные сообщения? Joining the game и такое.
в IDA (или в другой дизассемблере) найти ссылку на эту строку и изменить значение.
Hex editor)) 0)
https://forum.antichat.xyz/attachments/27481692/ (https://www.blast.hk/threads/18616/)
Startracker983274
19.04.2020, 01:24
1. Ваш вопрос: как сделать активацию через команду в чат в .asi плагине?
loganhackerdff
19.04.2020, 16:29
Я хочу сделать свой рендер без емуляции опкодов, мне надо проверять что что то на экране, но функция из собеита жрёт какой то interface, я не понял, а функция srteam получает pGTAEntity. вопрос:
как получить pGTAEntity пикапа и3d текста
manukhov
20.04.2020, 19:56
Как получать позиции игроков, которые находятся в радиусе стрима, ну или на определенном расстоянии?
1. Как включить системный курсор?
1. Почему при чтении адреса памяти при дебаге в студии если чекнуть какое значение там лежит то пишет что , а если продолжить выполнять код и когда код дойдет до момента изменения этого адреса ну к примеру +1 то будет исключение нарушение прав доступа при чтении по адресу 0xадерс . Шо это не понятное ?
loganhackerdff
23.04.2020, 21:37
я пытаюсь заполнить структура stTrailerData, там есть fQuanterion[4], как мне получить квантерион автомобиля
я пытался из матрицы, по чёто не получилось (float и float *)
checkdasound
25.04.2020, 05:31
Как реализован опкод 0ADE (функция getGxtText)?
loganhackerdff
25.04.2020, 13:37
как узнать что я плаваю
как узнать что я плаваю
DHT11 и DHT22 - подключение к ардуино датчиков температуры и влажности (https://www.blast.hk/redirect/aHR0cHM6Ly9hcmR1aW5vbWFzdGVyLnJ1L2RhdGNoaWtpLWFyZH Vpbm8vZGF0Y2hpa2ktdGVtcGVyYXR1cnktaS12bGF6aG5vc3Rp LWRodDExLWRodDIyLw)
Датчики температуры и влажности DHT11 и DHT22. Подключение к Arduino Uno, Mega, Nano. Пример скетча, библиотека для подключения датичков.
arduinomaster.ru
4el0ve4ik
25.04.2020, 14:50
как узнать что я плаваю
CPed +0x46C = [dword] Проверка игрока:
0 = в воздухе/воде
1 = в машине
2 = входит в интерьер
3 = пешком
18 = истекает кровью
checkdasound
25.04.2020, 14:52
как узнать что я плаваю
Адреса Памяти (SA) — GTAModding.ru (https://www.blast.hk/redirect/aHR0cDovL2d0YW1vZGRpbmcucnUvd2lraS8lRDAlOTAlRDAlQj QlRDElODAlRDAlQjUlRDElODElRDAlQjBfJUQwJTlGJUQwJUIw JUQwJUJDJUQxJThGJUQxJTgyJUQwJUI4XyhTQSkjQ1BlZF8uMj guRDAuOUYuRDAuQjUuRDEuODguRDAuQjUuRDEuODUuRDAuQkUu RDAuQjQuRDEuOEIuMjk)
gtamodding.ru
loganhackerdff
25.04.2020, 16:10
как в imgui сделать чтоб камера не крутилась когда курсором двигаю
курсор вывожу через ImGui::GetIO().MouseDrawCursor = 1
loganhackerdff
26.04.2020, 22:51
[QUOTE="Warflex"]
Изучаю тут с++, столкнулся с проблемой обычного калькулятора
C++:
[CODE]
int
main
(
)
{
int
num1
,
num2
,
num3
;
cin
>>
num1
;
cout
>
num2
;
num3
=
sum1
+
sum2
;
cout
C++:
[CODE]
int
main
(
)
{
int
num1
,
num2
,
sum
;
int
simb
;
cin
>>
num1
;
cin
>>
simb
;
cin
>>
num2
;
sum
=
num1
simb - знак переменная, как его правильно выразить?
loganhackerdff
27.04.2020, 15:50
поставил простой хук на RPC Create3d text label, чтоб он перезаписывал дистанцию видимости, но почемуто крашит
C++:
bool
CALLBACK
incRPC
(
stRakNetHookParams
*
p
)
{
if
(
bDistUp
)
{
if
(
p
->
packetId
==
RPC_ScrCreate3DTextLabel
)
{
float
dist
;
p
->
bitStream
->
SetReadOffset
(
144
)
;
p
->
bitStream
->
Read
(
dist
)
;
p
->
bitStream
->
ResetReadPointer
(
)
;
if
(
dist
==
5.0
)
{
p
->
bitStream
->
SetWriteOffset
(
144
)
;
dist
=
15.0
;
p
->
bitStream
->
Write
(
dist
)
;
p
->
bitStream
->
ResetWritePointer
(
)
;
}
}
}
return
true
;
}
почему то затирает всё после дистанции, ну чо за приколы
C++:
bool
CALLBACK
rpchook
(
stRakNetHookParams
*
p
)
{
if
(
p
->
packetId
==
RPC_ScrCreate3DTextLabel
)
{
p
->
bitStream
->
SetWriteOffset
(
144
)
;
p
->
bitStream
->
Write
(
(
float
)
15.0
)
;
}
return
true
;
}
ucciModd
29.04.2020, 17:51
1. Как выгрузить asi/dll?
2. Почему геймстейт выводит неправильно?
https://forum.antichat.xyz/attachments/27487305/
Структуру (R3) взял с самп апи (https://github.com/BlastHackNet/SAMP-API)
loganhackerdff
30.04.2020, 20:45
возможно ли сделать невидимый на фрапсе вх на SF, рисуя через методы SF.getRender?
я пытался через vmthookmanager хукать девайс который создавал для созданного окна, но крашило
по тупому я делал както
if (params->packetId == 151) 151 incoming rpc, можно его полное название?
if (params->packetId == 151) 151 incoming rpc, можно его полное название?
RPC_151= RPC_ScrDestroyPickups
manukhov
03.05.2020, 00:49
Ошибка LNK2019 ссылка на неразрешенный внешний символ "extern "C" struct HDC__ * __stdcall GetDC(struct HWND__ *)" (?GetDC@@$$J14YGPAUHDC__@@PAUHWND__@@@Z) в функции "void __clrcall `dynamic initializer for 'hdc''(void)" (???__Ehdc@@YMXXZ@?A0xa98138a8@@$$FYMXXZ)
Юникод на многобайтовую кодировку менял, не помогло. На странице ошибки слишком размыто и инфы конкретной я не нашел
Memory.h:
#include
#include
#include
#include
#include
DWORD
GetProcId
(
const
char
*
procName
)
{
DWORD procId
=
0
;
HANDLE hSnap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPPROCESS
,
0
)
;
if
(
hSnap
!=
INVALID_HANDLE_VALUE
)
{
PROCESSENTRY32 procEntry
;
procEntry
.
dwSize
=
sizeof
(
procEntry
)
;
if
(
Process32First
(
hSnap
,
&
procEntry
)
)
{
do
{
if
(
!
strcmp
(
procEntry
.
szExeFile
,
procName
)
)
{
procId
=
procEntry
.
th32ProcessID
;
break
;
}
}
while
(
Process32Next
(
hSnap
,
&
procEntry
)
)
;
}
}
CloseHandle
(
hSnap
)
;
return
procId
;
}
uintptr_t
GetModuleBaseAddress
(
DWORD procId
,
const
char
*
modName
)
{
uintptr_t modBaseAddr
=
0
;
HANDLE hSnap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPMODULE
|
TH32CS_SNAPMODULE32
,
procId
)
;
if
(
hSnap
!=
INVALID_HANDLE_VALUE
)
{
MODULEENTRY32 modEntry
;
modEntry
.
dwSize
=
sizeof
(
modEntry
)
;
if
(
Module32First
(
hSnap
,
&
modEntry
)
)
{
do
{
if
(
!
strcmp
(
modEntry
.
szModule
,
modName
)
)
{
modBaseAddr
=
(
uintptr_t
)
modEntry
.
modBaseAddr
;
break
;
}
}
while
(
Module32Next
(
hSnap
,
&
modEntry
)
)
;
}
}
CloseHandle
(
hSnap
)
;
return
modBaseAddr
;
}
uintptr_t moduleBase
=
GetModuleBaseAddress
(
GetProcId
(
"gta_sa.exe"
)
,
"samp.dll"
)
;
HANDLE hProcess
=
OpenProcess
(
PROCESS_ALL_ACCESS
,
NULL
,
GetProcId
(
"gta_sa.exe"
)
)
;
HDC hdc
=
GetDC
(
FindWindowA
(
NULL
,
"GTA:SA:MP"
)
)
;
template
T
RPM
(
SIZE_T address
)
{
T buffer
;
ReadProcessMemory
(
hProcess
,
(
LPCVOID
)
address
,
&
buffer
,
sizeof
(
T
)
,
NULL
)
;
return
buffer
;
}
Ошибка LNK2019 ссылка на неразрешенный внешний символ "extern "C" struct HDC__ * __stdcall GetDC(struct HWND__ *)" (?GetDC@@$$J14YGPAUHDC__@@PAUHWND__@@@Z) в функции "void __clrcall `dynamic initializer for 'hdc''(void)" (???__Ehdc@@YMXXZ@?A0xa98138a8@@$$FYMXXZ)
Юникод на многобайтовую кодировку менял, не помогло. На странице ошибки слишком размыто и инфы конкретной я не нашел
Memory.h:
#include
#include
#include
#include
#include
DWORD
GetProcId
(
const
char
*
procName
)
{
DWORD procId
=
0
;
HANDLE hSnap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPPROCESS
,
0
)
;
if
(
hSnap
!=
INVALID_HANDLE_VALUE
)
{
PROCESSENTRY32 procEntry
;
procEntry
.
dwSize
=
sizeof
(
procEntry
)
;
if
(
Process32First
(
hSnap
,
&
procEntry
)
)
{
do
{
if
(
!
strcmp
(
procEntry
.
szExeFile
,
procName
)
)
{
procId
=
procEntry
.
th32ProcessID
;
break
;
}
}
while
(
Process32Next
(
hSnap
,
&
procEntry
)
)
;
}
}
CloseHandle
(
hSnap
)
;
return
procId
;
}
uintptr_t
GetModuleBaseAddress
(
DWORD procId
,
const
char
*
modName
)
{
uintptr_t modBaseAddr
=
0
;
HANDLE hSnap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPMODULE
|
TH32CS_SNAPMODULE32
,
procId
)
;
if
(
hSnap
!=
INVALID_HANDLE_VALUE
)
{
MODULEENTRY32 modEntry
;
modEntry
.
dwSize
=
sizeof
(
modEntry
)
;
if
(
Module32First
(
hSnap
,
&
modEntry
)
)
{
do
{
if
(
!
strcmp
(
modEntry
.
szModule
,
modName
)
)
{
modBaseAddr
=
(
uintptr_t
)
modEntry
.
modBaseAddr
;
break
;
}
}
while
(
Module32Next
(
hSnap
,
&
modEntry
)
)
;
}
}
CloseHandle
(
hSnap
)
;
return
modBaseAddr
;
}
uintptr_t moduleBase
=
GetModuleBaseAddress
(
GetProcId
(
"gta_sa.exe"
)
,
"samp.dll"
)
;
HANDLE hProcess
=
OpenProcess
(
PROCESS_ALL_ACCESS
,
NULL
,
GetProcId
(
"gta_sa.exe"
)
)
;
HDC hdc
=
GetDC
(
FindWindowA
(
NULL
,
"GTA:SA:MP"
)
)
;
template
T
RPM
(
SIZE_T address
)
{
T buffer
;
ReadProcessMemory
(
hProcess
,
(
LPCVOID
)
address
,
&
buffer
,
sizeof
(
T
)
,
NULL
)
;
return
buffer
;
}
dbghelp и gdi32 в линкере подключи
GetDC function (winuser.h) - Win32 apps (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi9hcGkvd2ludXNlci9uZi13aW51c2VyLWdldGRj I3JlcXVpcmVtZW50cw)
The GetDC function retrieves a handle to a device context (DC) for the client area of a specified window or for the entire screen.
docs.microsoft.com
C++:
#pragma comment(lib, "User32.lib")
loganhackerdff
03.05.2020, 16:10
Как сделать активацию по читкоду в sf?
Dark_Knight
03.05.2020, 17:01
Я делал, но способ крайне тупой. Записывать из события окна WM_CHAR значения в строку и после каждой записи производить поиск подстроки нужной и если результат истинный, то активировал нужный кусок кода и очищал строку. Так же делал фильтрацию на длинную строки в 32 символа, чтобы не забивать память.
Если строка была длинее 32 символов, то удалял первый символ из неё.
Как в asi можно получить указатель на cchat. Тот, что передается первым аргументом в AddMessage.
Как сделать активацию по читкоду в sf?
C++:
// https://github.com/cleolibrary/CLEO4/blob/master/source/CTextManager.cpp#L67
bool
TestCheat
(
const
char
*
cheat
)
{
char
*
c
=
reinterpret_cast
(
0x00969110
)
;
char
buf
[
30
]
;
strcpy
(
buf
,
cheat
)
;
char
*
s
=
_strrev
(
buf
)
;
if
(
_strnicmp
(
s
,
c
,
strlen
(
s
)
)
)
return
false
;
*
reinterpret_cast
(
0x00969110
)
=
0
;
return
true
;
}
if
(
TestCheat
(
"cheat"
)
)
{
// ...
}
I need stealth renderer for not captured on video, anyone?
Dark_Knight
04.05.2020, 22:35
Такой вопрос. Он В самповских тексдравах есть возможность рендерить модель обьекта(педов, машин и т.д). Собственно, у меня такой вопрос. Как это можно реализовать самому и оттуда вытянуть(создать) текстуру в виде LPDIRECT3DTEXTURE9?
как заставить sscanf работать с русскими символами?
DolgorukovGTA
05.05.2020, 10:42
как заставить sscanf работать с русскими символами?
Попробуй использовать Wide-аналог этой функции - swscanf_s. В проекте используй набор символов Юникода (Unicode Character Set). Отпиши, помогло или нет.
Ошибка LNK2019 ссылка на неразрешенный внешний символ "extern "C" struct HDC__ * __stdcall GetDC(struct HWND__ *)" (?GetDC@@$$J14YGPAUHDC__@@PAUHWND__@@@Z) в функции "void __clrcall `dynamic initializer for 'hdc''(void)" (???__Ehdc@@YMXXZ@?A0xa98138a8@@$$FYMXXZ)
Юникод на многобайтовую кодировку менял, не помогло. На странице ошибки слишком размыто и инфы конкретной я не нашел
Memory.h:
#include
#include
#include
#include
#include
DWORD
GetProcId
(
const
char
*
procName
)
{
DWORD procId
=
0
;
HANDLE hSnap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPPROCESS
,
0
)
;
if
(
hSnap
!=
INVALID_HANDLE_VALUE
)
{
PROCESSENTRY32 procEntry
;
procEntry
.
dwSize
=
sizeof
(
procEntry
)
;
if
(
Process32First
(
hSnap
,
&
procEntry
)
)
{
do
{
if
(
!
strcmp
(
procEntry
.
szExeFile
,
procName
)
)
{
procId
=
procEntry
.
th32ProcessID
;
break
;
}
}
while
(
Process32Next
(
hSnap
,
&
procEntry
)
)
;
}
}
CloseHandle
(
hSnap
)
;
return
procId
;
}
uintptr_t
GetModuleBaseAddress
(
DWORD procId
,
const
char
*
modName
)
{
uintptr_t modBaseAddr
=
0
;
HANDLE hSnap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPMODULE
|
TH32CS_SNAPMODULE32
,
procId
)
;
if
(
hSnap
!=
INVALID_HANDLE_VALUE
)
{
MODULEENTRY32 modEntry
;
modEntry
.
dwSize
=
sizeof
(
modEntry
)
;
if
(
Module32First
(
hSnap
,
&
modEntry
)
)
{
do
{
if
(
!
strcmp
(
modEntry
.
szModule
,
modName
)
)
{
modBaseAddr
=
(
uintptr_t
)
modEntry
.
modBaseAddr
;
break
;
}
}
while
(
Module32Next
(
hSnap
,
&
modEntry
)
)
;
}
}
CloseHandle
(
hSnap
)
;
return
modBaseAddr
;
}
uintptr_t moduleBase
=
GetModuleBaseAddress
(
GetProcId
(
"gta_sa.exe"
)
,
"samp.dll"
)
;
HANDLE hProcess
=
OpenProcess
(
PROCESS_ALL_ACCESS
,
NULL
,
GetProcId
(
"gta_sa.exe"
)
)
;
HDC hdc
=
GetDC
(
FindWindowA
(
NULL
,
"GTA:SA:MP"
)
)
;
template
T
RPM
(
SIZE_T address
)
{
T buffer
;
ReadProcessMemory
(
hProcess
,
(
LPCVOID
)
address
,
&
buffer
,
sizeof
(
T
)
,
NULL
)
;
return
buffer
;
}
Странно, ведь у меня работает GetDC и при простом подключении Windows.h. Не забывай отрисовочный контекст (DC) чистить, когда ты им воспользовался, и он тебе не нужен. Т.к используется ф-я GetDC, то чистим при помощи ReleaseDC. Рекомендую ознакомиться с этой страницей - http://www.vsokovikov.narod.ru/New_MSDN_API/D_context/fn_releasedc.htm (https://www.blast.hk/redirect/aHR0cDovL3d3dy52c29rb3Zpa292Lm5hcm9kLnJ1L05ld19NU0 ROX0FQSS9EX2NvbnRleHQvZm5fcmVsZWFzZWRjLmh0bQ). В частности, нам интересен текст под заголовком "Замечания". Если ты скинул код неполностью и ты используешь эту функцию где-то у себя дальше, то прошу прощения за наезд.
Спасибо большое, но уже
#pragma comment(lib, "User32.lib")
#include
всё решило. Теперь у меня проблема с чтением памяти, или что-то вроде, не могу решить уже второй день. Выше мой вопрос.
написано же. попытка чтения защищенного участка памяти. снимай virtual protect
DolgorukovGTA
05.05.2020, 16:27
Спасибо большое, но уже
#pragma comment(lib, "User32.lib")
#include
всё решило. Теперь у меня проблема с чтением памяти, или что-то вроде, не могу решить уже второй день. Выше мой вопрос.
Нужно снять защиту с памяти, записать туда необходимое значение и вернуть защиту.
CleanLegend
05.05.2020, 21:03
Чет там все для шарпа, я не понимаю. Понял, что память не может читаться, но почему?
вот это вообще непонятно куда и зачем
Исключение при чтении адреса памяти или записи в неё. (https://www.blast.hk/threads/53204/#post-483762)
Драсте , такая проблема у меня . Решил стикать с гта са и решил начать с самого простого для левой программы но столкнулся с такой проблемой я не разу не писал консольные типо читы ну длл я писал и мне збс была а щас мне надо мониторить и тд и консолька это самый лучший вариант ( консольное...
www.blast.hk
ты пытаешься читать адрес своей же программы, а не игры
CleanLegend
05.05.2020, 21:56
Неа(
так ты тоже самое делаешь
barspinoff
05.05.2020, 22:20
Ничего не понимаю, разве я таким образом не читаю память gta_sa.exe? Как тогда адрес игры читать? Раньше только так делал и все нормально было.
C++:
#pragma once
#include
#include
#include
#include
#pragma comment(lib, "User32.lib")
DWORD
GetProcId
(
const
char
*
procName
)
{
DWORD procId
=
0
;
HANDLE hSnap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPPROCESS
,
0
)
;
if
(
hSnap
!=
INVALID_HANDLE_VALUE
)
{
PROCESSENTRY32 procEntry
;
procEntry
.
dwSize
=
sizeof
(
procEntry
)
;
if
(
Process32First
(
hSnap
,
&
procEntry
)
)
{
do
{
if
(
!
strcmp
(
procEntry
.
szExeFile
,
procName
)
)
{
procId
=
procEntry
.
th32ProcessID
;
break
;
}
}
while
(
Process32Next
(
hSnap
,
&
procEntry
)
)
;
}
}
CloseHandle
(
hSnap
)
;
return
procId
;
}
uintptr_t
GetModuleBaseAddress
(
DWORD procId
,
const
char
*
modName
)
{
uintptr_t modBaseAddr
=
0
;
HANDLE hSnap
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPMODULE
|
TH32CS_SNAPMODULE32
,
procId
)
;
if
(
hSnap
!=
INVALID_HANDLE_VALUE
)
{
MODULEENTRY32 modEntry
;
modEntry
.
dwSize
=
sizeof
(
modEntry
)
;
if
(
Module32First
(
hSnap
,
&
modEntry
)
)
{
do
{
if
(
!
strcmp
(
modEntry
.
szModule
,
modName
)
)
{
modBaseAddr
=
(
uintptr_t
)
modEntry
.
modBaseAddr
;
break
;
}
}
while
(
Module32Next
(
hSnap
,
&
modEntry
)
)
;
}
}
CloseHandle
(
hSnap
)
;
return
modBaseAddr
;
}
uintptr_t moduleBase
=
GetModuleBaseAddress
(
GetProcId
(
"gta_sa.exe"
)
,
"samp.dll"
)
;
HANDLE hProcess
=
OpenProcess
(
PROCESS_ALL_ACCESS
,
NULL
,
GetProcId
(
"gta_sa.exe"
)
)
;
HDC hdc
=
GetDC
(
FindWindowA
(
NULL
,
"GTA:SA:MP"
)
)
;
template
T
RPM
(
SIZE_T address
)
{
//The buffer for data that is going to be read from memory
T buffer
;
//The actual RPM
ReadProcessMemory
(
hProcess
,
(
LPCVOID
)
address
,
&
buffer
,
sizeof
(
T
)
,
NULL
)
;
//Return our buffer
return
buffer
;
}
удали 615-620 строки
поиск по хэндлу тебе тоже не нужен, когда есть PID
Ты пытаешься прочитать данные из текущего процесса.
Из других процессов ты должен читать и записывать через ReadProcessMemory / WriteProcessMemory.
barspinoff
05.05.2020, 22:50
C:
WORD wID
;
DWORD pActor
,
pPed
,
pMtrx1
,
pMtrx2
;
float
fPlayerHP
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0xBAA410
,
&
wID
,
sizeof
(
wID
)
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0xBAA410
,
&
pActor
,
sizeof
(
pActor
)
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pActor
+
0x79C
)
,
&
pPed
,
sizeof
(
pPed
)
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pPed
+
0x14
)
,
&
pMtrx2
,
sizeof
(
pMtrx2
)
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pPed
+
0x540
)
,
&
fPlayerHP
,
sizeof
(
fPlayerHP
)
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pActor
+
0x14
)
,
&
pMtrx1
,
sizeof
(
pMtrx1
)
)
;
barspinoff
05.05.2020, 23:25
Это то, о чем сейчас Алфёров написал? Ошибка пропала, но работать не хочет.
тебе стоит проделать такую же работу на 630-639 строках
а на 640-462 уже WriteProcessMemory
barspinoff
06.05.2020, 00:11
Ну вот, как-то так, но с 37 по 43 нельзя преобразовать float в LPVOID
C++:
private
:
System
::
Void
TEST_Click
(
System
::
Object
^
sender
,
System
::
EventArgs
^
e
)
{
WORD wID
;
DWORD pActor
,
pPed
,
pMtrx1
,
pMtrx2
;
float
fPlayerHP
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0xBAA410
,
&
wID
,
sizeof
(
wID
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0xBAA410
,
&
pActor
,
sizeof
(
pActor
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pActor
+
0x79C
)
,
&
pPed
,
sizeof
(
pPed
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pPed
+
0x14
)
,
&
pMtrx2
,
sizeof
(
pMtrx2
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pPed
+
0x540
)
,
&
fPlayerHP
,
sizeof
(
fPlayerHP
)
,
0
)
;
if
(
&
pPed
>
0
)
{
float
*
x
=
(
float
*
)
(
(
&
pMtrx1
)
+
0x30
)
;
//X position Ped
float
*
y
=
(
float
*
)
(
(
&
pMtrx1
)
+
0x34
)
;
//Y position Ped
float
*
z
=
(
float
*
)
(
(
&
pMtrx1
)
+
0x38
)
;
//Z position Ped
float
*
x1
=
(
float
*
)
(
(
&
pMtrx2
)
+
0x30
)
;
//X position Target
float
*
y1
=
(
float
*
)
(
(
&
pMtrx2
)
+
0x34
)
;
//Y position Target
float
*
z1
=
(
float
*
)
(
(
&
pMtrx2
)
+
0x38
)
;
//Z position Target
float
*
RotAngle
=
(
float
*
)
(
(
&
pActor
)
+
0x558
)
;
//health of target player
float
Xwiping
=
(
float
)
*
x
+
2
*
(
float
)
cos
(
*
RotAngle
+
1.48353F
)
;
float
Ywiping
=
(
float
)
*
y
+
2
*
(
float
)
sin
(
*
RotAngle
+
1.48353F
)
;
float
Zwiping
=
(
float
)
*
z
+
0.5F
;
*
x1
=
(
float
)
Xwiping
;
*
y1
=
(
float
)
Ywiping
;
*
z1
=
(
float
)
Zwiping
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
float
*
)
(
(
&
pMtrx1
)
+
0x30
)
,
&
pMtrx1
,
sizeof
(
pMtrx1
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
float
*
)
(
(
&
pMtrx1
)
+
0x34
)
,
&
pMtrx1
,
sizeof
(
pMtrx1
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
float
*
)
(
(
&
pMtrx1
)
+
0x38
)
,
&
pMtrx1
,
sizeof
(
pMtrx1
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
float
*
)
(
(
&
pMtrx1
)
+
0x30
)
,
&
pMtrx2
,
sizeof
(
pMtrx2
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
float
*
)
(
(
&
pMtrx1
)
+
0x34
)
,
&
pMtrx2
,
sizeof
(
pMtrx2
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
float
*
)
(
(
&
pMtrx1
)
+
0x38
)
,
&
pMtrx2
,
sizeof
(
pMtrx2
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
float
*
)
(
(
&
pActor
)
+
0x558
)
,
&
pActor
,
sizeof
(
pActor
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
float
)
*
x
+
2
*
(
float
)
cos
(
*
RotAngle
+
1.48353F
)
,
&
RotAngle
,
sizeof
(
RotAngle
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
float
)
*
y
+
2
*
(
float
)
sin
(
*
RotAngle
+
1.48353F
)
,
&
RotAngle
,
sizeof
(
RotAngle
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
float
)
*
z
+
0.5F
,
&
RotAngle
,
sizeof
(
RotAngle
)
,
0
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
float
)
Xwiping
,
&
Xwiping
,
sizeof
(
Xwiping
)
,
0
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
float
)
Ywiping
,
&
Ywiping
,
sizeof
(
Ywiping
)
,
0
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
float
)
Zwiping
,
&
Zwiping
,
sizeof
(
Zwiping
)
,
0
)
;
}
}
видимо, ты совсем ничего не понял
C:
float
x
,
y
,
z
,
xt
,
yt
,
zt
,
angle
,
xw
,
yw
,
zw
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pMtrx1
+
0x30
)
,
&
x
,
sizeof
(
x
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pMtrx1
+
0x34
)
,
&
y
,
sizeof
(
y
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pMtrx1
+
0x38
)
,
&
z
,
sizeof
(
z
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pMtrx2
+
0x30
)
,
&
xt
,
sizeof
(
xt
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pMtrx2
+
0x34
)
,
&
yt
,
sizeof
(
yt
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pMtrx2
+
0x38
)
,
&
zt
,
sizeof
(
zt
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
(
pActor
+
0x558
)
,
&
angle
,
sizeof
(
angle
)
,
0
)
;
xw
=
(
float
)
x
+
2
*
(
float
)
cos
(
angle
+
1.48353F
)
;
yw
=
(
float
)
y
+
2
*
(
float
)
sin
(
angle
+
1.48353F
)
;
zw
=
(
float
)
z
+
0.5F
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pMtrx2
+
0x30
)
,
&
xw
,
sizeof
(
xw
)
,
0
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pMtrx2
+
0x34
)
,
&
yw
,
sizeof
(
yw
)
,
0
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pMtrx2
+
0x38
)
,
&
zw
,
sizeof
(
zw
)
,
0
)
;
barspinoff
06.05.2020, 00:28
попробуй тогда VirtualProtectEx применить
samp is meme
06.05.2020, 02:15
Я щас как ебучий абориген, которому показали зажигалку. Как этим пользоваться? Я что-то написал, исходя из инфы на странице этой функции msoft, но я ничего не понимаю. Подскажи, пожалуйста, как мне юзать это ?
Не знаю, хоть как-то тебе облегчить жизнь, класс для работы с памятью.
C++:
#pragma once
#include
#include
#include
struct
PModule
{
DWORD dwBase
;
DWORD dwSize
;
}
;
class
memory
{
public
:
inline
bool
Attach
(
const
char
*
pName
,
DWORD dwSize
)
{
HANDLE handle
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPPROCESS
,
NULL
)
;
PROCESSENTRY32 entry
;
entry
.
dwSize
=
sizeof
(
entry
)
;
do
if
(
!
strcmp
(
_bstr_t
(
entry
.
szExeFile
)
,
pName
)
)
{
_pId
=
entry
.
th32ProcessID
;
CloseHandle
(
handle
)
;
_process
=
OpenProcess
(
dwSize
,
false
,
_pId
)
;
return
true
;
}
while
(
Process32Next
(
handle
,
&
entry
)
)
;
return
false
;
}
inline
PModule
GetModule
(
const
char
*
pModule
)
{
HANDLE module
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPMODULE
,
_pId
)
;
MODULEENTRY32 entry
;
entry
.
dwSize
=
sizeof
(
entry
)
;
do
if
(
!
strcmp
(
_bstr_t
(
entry
.
szModule
)
,
pModule
)
)
{
CloseHandle
(
module
)
;
return
PModule
{
reinterpret_cast
(
entry
.
hModule
)
,
entry
.
modBaseSize
}
;
}
while
(
Module32Next
(
module
,
&
entry
)
)
;
return
PModule
{
0
,
0
}
;
}
template
T
Read
(
const
DWORD dwSize
)
{
T _read
;
ReadProcessMemory
(
_process
,
LPVOID
(
dwSize
)
,
&
_read
,
sizeof
(
T
)
,
NULL
)
;
return
_read
;
}
template
void
Write
(
const
DWORD dwSize
,
const
T value
)
{
WriteProcessMemory
(
_process
,
LPVOID
(
dwSize
)
,
&
value
,
sizeof
(
T
)
,
NULL
)
;
}
void
Exit
(
)
{
CloseHandle
(
_process
)
;
}
private
:
HANDLE _process
;
DWORD _pId
;
}
;
Как юзать на примере контры
C++:
memory mem
;
PModule bClient
;
while
(
!
mem
.
Attach
(
"csgo.exe"
,
PROCESS_ALL_ACCESS
)
)
{
}
bClient
=
mem
.
GetModule
(
"client_panorama.dll"
)
;
DWORD playerBase
=
mem
.
Read
(
bClient
.
dwBase
+
dwLocalPlayer
)
;
Я щас как ебучий абориген, которому показали зажигалку. Как этим пользоваться? Я что-то написал, исходя из инфы на странице этой функции msoft, но я ничего не понимаю. Подскажи, пожалуйста, как мне юзать это ?
Ну для начала я не вижу где ты получаешь hProcess
C++:
DWORD procId
=
GetProcId
(
L
"gta-sa.exe"
)
;
if
(
procId
==
NULL
)
return
;
HANDLE hProcess
=
OpenProcess
(
PROCESS_ALL_ACCESS
,
FALSE
,
procId
)
;
if
(
hProc
==
INVALID_HANDLE_VALUE
)
return
;
По поводу virtualprotectex, то используется обычно для записи, выглядит примерно так
C++:
xw
=
(
float
)
x
+
2
*
(
float
)
cos
(
angle
+
1.48353F
)
;
DWORD oldProt
;
VirtualProtectEx
(
hProcess
,
(
void
*
)
(
pMtrx2
+
0x30
)
,
sizeof
(
xw
)
,
PAGE_EXECUTE_READWRITE
,
&
oldProt
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
pMtrx2
+
0x30
)
,
&
xw
,
sizeof
(
xw
)
,
0
)
;
VirtualProtectEx
(
hProcess
,
(
void
*
)
(
pMtrx2
+
0x30
)
,
sizeof
(
xw
)
,
oldProt
,
NULL
)
;
В конце всех твоих манипуляций не забудь прописать
C++:
CloseHandle
(
hProcess
)
;
loganhackerdff
08.05.2020, 00:30
Как сделать чтоб русский текст из imgui::InputText в чат выводился нормальным а не каракулями
samp is meme
08.05.2020, 22:47
Протект снял - записал - вернул
Переделал AntiBikeFall (ремень) internal в external. В принципе, он работает. Однако при столкновении на большой скорости игра крашит.
В чем может быть проблема?
Ты не правильно перевел даже близко, оно не могло работать(если говоришь "В принципе, он работает", то ты не набрал достаточную скорость чтобы сработала функция падения), почитай что делает
C++:
*
(
BYTE
*
)
0x4BA3B9
=
0xE9
;
и что
C++:
memset
(
(
PVOID
)
0x4BA3BC
,
0x00
,
2
)
;
и параметры функции WriteProcessMemory
Я вижу что ты на рандоме пишешь - а вдруг сработает...
Есть такое)
memset использовать не могу:
BYTE использовать не могу:
Тебе и не нужно их использовать, ты должен знать что они делают, а ты не знаешь. Вот пример(с мемсет такой же код)
C++:
int
bufMoney
=
444
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
0xB7CE50
,
&
bufMoney
,
4
/*sizeof(DWORD)*/
,
nullptr
)
;
//*(*DWORD)0xB7CE50 = 444
Как сделать чтоб русский текст из imgui::InputText в чат выводился нормальным а не каракулями
#pragma execution_character_set("utf-8")
loganhackerdff
09.05.2020, 02:48
#pragma execution_character_set("utf-8")
Хз поможет ли это но я уже сделал
Переделал AntiBikeFall (ремень) internal в external. В принципе, он работает. Однако при столкновении на большой скорости игра крашит.
В чем может быть проблема?
C++:
VirtualProtect
(
(
PVOID
)
0x4BA3B9
,
6
,
PAGE_EXECUTE_READWRITE
,
NULL
)
;
VirtualProtect
(
(
PVOID
)
0x4B3296
,
3
,
PAGE_EXECUTE_READWRITE
,
NULL
)
;
DWORD one
=
0x4BA3B9
;
DWORD two
=
0x4BA3BA
;
DWORD three
=
0x4BA3BB
;
DWORD four
=
0x4BA3BF
;
DWORD five
=
0x4BA3BC
;
DWORD six
=
0x4B3296
;
one
=
0xE9
;
two
=
0xA7
;
three
=
0x03
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3B9
,
&
one
,
sizeof
(
one
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BA
,
&
two
,
sizeof
(
two
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BB
,
&
three
,
sizeof
(
three
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BF
,
&
four
,
sizeof
(
four
)
,
0
)
;
WriteProcessMemory
(
hProcess
,
(
PVOID
)
(
five
+
0x00
+
2
)
,
&
five
,
3
,
0
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
six
+
0x90
+
3
)
,
(
LPVOID
)
&
six
,
3
,
NULL
)
;
Вот такой был интернал:
C++:
VirtualProtect
(
(
PVOID
)
0x4BA3B9
,
6
,
PAGE_EXECUTE_READWRITE
,
NULL
)
;
VirtualProtect
(
(
PVOID
)
0x4B3296
,
3
,
PAGE_EXECUTE_READWRITE
,
NULL
)
;
*
(
BYTE
*
)
0x4BA3B9
=
0xE9
;
*
(
BYTE
*
)
0x4BA3BA
=
0xA7
;
*
(
BYTE
*
)
0x4BA3BB
=
0x03
;
memset
(
(
PVOID
)
0x4BA3BC
,
0x00
,
2
)
;
*
(
BYTE
*
)
0x4BA3BF
+
0x90
;
memset
(
(
PVOID
)
0x4B3296
,
0x90
,
3
)
;
Ты снимаешь протекты текущего процесса, а не в том где ты работаешь с памятью.
Используй экстендед функцию, в ней первый параметр это хендл процесса, остальное всё тоже самое.
Да и вообще снимать протекты тут не надо, так что можешь просто удалить VirtualProtect
Как здесь работать с *(BYTE*)?
Так же как и с дворд у меня в примере, только это 1 байт
typedef unsigned char BYTE;
Windows Data Types (BaseTsd.h) - Win32 apps (https://www.blast.hk/redirect/aHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG 93cy93aW4zMi93aW5wcm9nL3dpbmRvd3MtZGF0YS10eXBlcw)
The data types supported by Windows are used to define function return values, function and message parameters, and structure members.
docs.microsoft.com
DolgorukovGTA
09.05.2020, 18:22
а по поводу memset, разве так надо это записывать?
Он не позволяет туда значение типа int вставлять
А тут как раз int
LPCVOID - это const void*, кастуй.
WriteProcessMemory(hProcess, (LPVOID)0x4B3296, newi, 3, nullptr);
не правильно
@DolgorukovGTA (https://www.blast.hk/members/208121/) @RTD (https://www.blast.hk/members/126461/) оценку?
C++:
DWORD one
=
0x4BA3B9
;
DWORD two
=
0x4BA3BA
;
DWORD three
=
0x4BA3BB
;
DWORD four
=
0x4BA3BF
;
one
=
0xE9
;
two
=
0xA7
;
three
=
0x03
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3B9
,
&
one
,
sizeof
(
one
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BA
,
&
two
,
sizeof
(
two
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BB
,
&
three
,
sizeof
(
three
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BF
,
&
four
,
sizeof
(
four
)
,
0
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
*
(
BYTE
*
)
0x4BA3B9
,
&
one
,
1
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
*
(
BYTE
*
)
0x4BA3BA
,
&
two
,
1
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
*
(
BYTE
*
)
0x4BA3BB
,
&
three
,
1
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
*
(
BYTE
*
)
0x4BA3BF
,
&
four
,
1
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
*
(
BYTE
*
)
(
0x4BA3BF
+
0x90
)
,
&
four
,
1
,
nullptr
)
;
const
int
i
=
0x90
;
const
void
*
newi
=
&
i
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BC
,
0x00
,
2
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
0x4B3296
,
newi
,
3
,
nullptr
)
;
}
Мдаааа.... Ты опять даже близко не подошел. Все что тебе нужно в моих сообщениях, но ты их не понял и никак не применил(если ваще читал). Код за тебя никто писать не будет, я тебе подсказал все что нужно, а ты продолжаешь пихать отсебятину которая не будет работать даже в теории. Продолжай писать на рандоме и у тебя ничего не получится или попытайся понять что и как работает
DolgorukovGTA
10.05.2020, 17:51
@DolgorukovGTA (https://www.blast.hk/members/208121/) @RTD (https://www.blast.hk/members/126461/) оценку?
C++:
DWORD one
=
0x4BA3B9
;
DWORD two
=
0x4BA3BA
;
DWORD three
=
0x4BA3BB
;
DWORD four
=
0x4BA3BF
;
one
=
0xE9
;
two
=
0xA7
;
three
=
0x03
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3B9
,
&
one
,
sizeof
(
one
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BA
,
&
two
,
sizeof
(
two
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BB
,
&
three
,
sizeof
(
three
)
,
0
)
;
ReadProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BF
,
&
four
,
sizeof
(
four
)
,
0
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
*
(
BYTE
*
)
0x4BA3B9
,
&
one
,
1
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
*
(
BYTE
*
)
0x4BA3BA
,
&
two
,
1
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
*
(
BYTE
*
)
0x4BA3BB
,
&
three
,
1
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
*
(
BYTE
*
)
0x4BA3BF
,
&
four
,
1
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
*
(
BYTE
*
)
(
0x4BA3BF
+
0x90
)
,
&
four
,
1
,
nullptr
)
;
const
int
i
=
0x90
;
const
void
*
newi
=
&
i
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BC
,
0x00
,
2
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
0x4B3296
,
newi
,
3
,
nullptr
)
;
}
Ты же указатель передаёшь.
DolgorukovGTA
10.05.2020, 19:24
😭
C++:
const
int
i
=
0x90
;
const
void
*
i
=
&
i
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BC
,
0x00
,
2
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
0x4B3296
,
&
i
,
3
,
nullptr
)
;
Зачем многоуровневый указатель? И у тебя переменная имеет такой же идентификатор (имя), что и указатель на неё. Обычно к переменным-указателям добавляют "ptr" в конец или "p" в начало.
DolgorukovGTA
10.05.2020, 20:08
C++:
typedef
unsigned
char
BYTE
;
BYTE one
=
0xE9
;
BYTE two
=
0xA7
;
BYTE three
=
0x03
;
BYTE four
=
(
0x4BA3BF
+
0x90
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3B9
,
&
one
,
1
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BA
,
&
two
,
1
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BB
,
&
three
,
1
,
nullptr
)
;
const
int
i
=
0x90
;
const
void
*
iptr
=
&
i
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
0x4BA3BC
,
0x00
,
2
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
0x4B3296
,
&
i
,
3
,
nullptr
)
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
(
0x4BA3BF
+
0x90
)
,
&
four
,
1
,
nullptr
)
;
Что ты творишь? Я тебе такого не советовал. Передавай в функцию указатель, он берётся при помощи операнда &. Либо же создай переменную-указатель и передавай её.
upd: @T4yz1e (https://www.blast.hk/members/197982/), почувствуй разницу на этом примере:
C:
uint8_t number
=
8
;
uint8_t
*
pNumber
=
&
number
;
printf
(
"%p\n"
,
pNumber
)
;
// выведет адрес переменной, на которую ссылается указатель
printf
(
"%i\n"
,
number
)
;
// выведет значение переменной
printf
(
"%i\n"
,
*
pNumber
)
;
// разыменуем указатель, выведет значение
DolgorukovGTA
10.05.2020, 21:49
@T4yz1e (https://www.blast.hk/members/197982/), небольшой пример для тебя:
C:
#include
#include
void
f
(
void
*
param
)
{
uint8_t
*
pNumber
=
(
uint8_t
*
)
param
;
// типизируем указатель
uint8_t number
=
*
pNumber
;
// разыменовываем указатель
printf
(
"%i\n"
,
number
)
;
}
int
main
(
)
{
uint8_t number
=
88
;
void
*
pNumber
=
(
void
*
)
&
number
;
// типизируем указатель
f
(
pNumber
)
;
// вызываем функцию
return
0
;
}
Недавно задался вопросом возможно ли написать свой плагин Emergency Light'ов, как подобный модуль в ImVehFt. Просто у последнего ограничения давят (до 16 разных материалов+корон и только 1 конфигурация загораний, я искренне верю что можно больше 16 сделать собственно лайтов и больше одного конфига, но пока не знаю как это реализовать). И вопрос такой, возможно ли и вообще имеет смысл писать подобный плагин? Может это потолок возможностей пожилого сап идораса, а не самого дмитрия, прекрасного автора мода ImVehFt. Было бы хорошо если бы вышеупомянутый имел опенсурс, но его бл*ин нету, так что придется велосипед изобретать в случае положительном.
Данный код постоянно выбирает первый пункт диалога, почему?
Код:
void SendDialogResponse(WORD wDialogID, BYTE bButtonID, WORD wListBoxItem = 65535, char* szInputResp = "")
{
BitStream bs;
bs.ResetWritePointer();
bs.Write(wDialogID);
bs.Write(bButtonID);
bs.Write(wListBoxItem);
bs.Write((BYTE)strlen(szInputResp));
bs.Write(szInputResp, strlen(szInputResp));
SF->getRakNet()->SendRPC(RPCEnumeration::RPC_DialogResponse, &bs);
}
SendDialogResponse(dialogID, 1, 4);
samp is meme
15.05.2020, 00:43
Как выйти на адреса памяти позиции игрока?
WORD wListBoxItem = 65535
убери число
Dark_Knight
17.05.2020, 18:05
Вообще его не юзать лучше.
Dark_Knight
17.05.2020, 21:48
Юзай события окна.
ucciModd
19.05.2020, 17:53
Решил под себя подстроить ип ченжер от наруто, взяв его исходники, но в его исходниках отсутствовал urmem.h. Я нашел на гх urmem от urShadow, но там уже новая версия. Я адаптировал версию, но крашит при хуке.
C++:
bool
test
(
unsigned
short
maxConnections
,
unsigned
short
localPort
,
int
_threadSleepTimer
,
const
char
*
forceHostAddress
)
{
return
hook
.
call
(
maxConnections
,
localPort
,
_threadSleepTimer
,
forceHostAddress
)
;
}
void
SetHook
(
const
urmem
::
address_t addr
)
{
hook
.
install
(
addr
,
urmem
::
get_func_addr
(
&
test
)
)
;
}
1. пытаюсь написать скрипт который будет читать и изменять участок памяти, при компиляции вылазят две ошибки линкера, хз как исправить
код:
#include
#include
void
__cdecl
MainThread
(
void
*
pArg
)
{
DWORD dwSAMPBase
=
(
DWORD
)
GetModuleHandle
(
"samp.dll"
)
;
unsigned
char
settingsFpsLimitStatus
=
0
;
if
(
dwSAMPBase
)
{
while
(
true
)
{
Sleep
(
500
)
;
settingsFpsLimitStatus
=
*
reinterpret_cast
(
0xBA6794
)
;
if
(
settingsFpsLimitStatus
)
*
reinterpret_cast
(
dwSAMPBase
+
0x9D9D0
)
=
369054032
;
else
*
reinterpret_cast
(
dwSAMPBase
+
0x9D9D0
)
=
-
392431617
;
}
}
}
BOOL WINAPI
DllMain
(
_In_ HINSTANCE hinstDLL
,
_In_ DWORD fdwReason
,
_In_ PVOID lpvReserved
)
{
if
(
fdwReason
==
DLL_PROCESS_ATTACH
)
_beginthread
(
MainThread
,
NULL
,
nullptr
)
;
return
TRUE
;
}
в свойстах выбери динамическая библиотека
1590226110534.pngimring · 23 Май 2020 в 12:28' data-fancybox="lb-post-501092" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/57269/" style="cursor: pointer;" title="1590226110534.png">
https://forum.antichat.xyz/attachments/27501092/
спс большое. у меня получилось скомпилировать, но скрипт неработает. какой адресс памяти отвечает за анлок фпса? я слышал что samp.dll + 0x9D9D0, но не работает почимуто
unsigned char
ты в unsigned char пытаешься записать unsigned long
и вроде надо убрать защиту от перезаписи (virual protect)
loganhackerdff
23.05.2020, 15:43
Как зарегистрировать windproc handler без SF api
WriteMemory((void*)(dwSamp + SA_Mem::FPSLimit), (uint8_t*)"0x5051FF15", 4);
C++:
WriteMemory
(
(
void
*
)
(
dwSamp
+
SA_Mem
::
FPSLimit
)
,
(
uint8_t
*
)
"x50\x51\xFF\x15"
,
4
)
;
Соберите из этого чит в Visual Studio https://yadi.sk/d/FX-O72F-J98EjQ (https://www.blast.hk/redirect/aHR0cHMlM0ElMkYlMkZ2ay5jb20lMkZhd2F5LnBocCUzRnRvJT NEaHR0cHMlMjUzQSUyNTJGJTI1MkZ5YWRpLnNrJTI1MkZkJTI1 MkZGWC1PNzJGLUo5OEVqUSUyNmNjX2tleSUzRA==)
Dark_Knight
27.05.2020, 17:32
В СФ нет никаких встроенных функций для работы с ини. Можно юзать винапи(а он не удобен) или же поискать для себя удобную либу для работы с ини. В нете их навалом. Ищи так "C++ ini wrapper"
Соберите из этого чит в Visual Studio https://yadi.sk/d/FX-O72F-J98EjQ (https://www.blast.hk/redirect/aHR0cHMlM0ElMkYlMkZ2ay5jb20lMkZhd2F5LnBocCUzRnRvJT NEaHR0cHMlMjUzQSUyNTJGJTI1MkZ5YWRpLnNrJTI1MkZkJTI1 MkZGWC1PNzJGLUo5OEVqUSUyNmNjX2tleSUzRA==)
Это не стол заказов. Тебе в другой раздел под названием "Работа и услуги"
Receiver
02.06.2020, 17:12
ауе, почему при возврате оригинального wndproc крашит игру?)
C++:
if
(
reason
==
DLL_PROCESS_DETACH
)
{
SetWindowLongA
(
gl
.
gameWindow
,
GWL_WNDPROC
,
reinterpret_cast
(
gl
.
originalWndProc
)
)
;
}
вызывается в DllMain
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot