PDA

Просмотр полной версии : С/С++ Вопрос - Ответ


Страницы : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27 28 29 30 31

traceattack
19.12.2019, 23:53
Типо, оно содержит инфу, но редачить нельзя?


Почитай хотя бы базовую информацию о языке , иначе ты каждый шаг продолжишь здесь спрашивать.🤦*♂️

ImmortalDev
20.12.2019, 14:19
Потому что ты глуп - вот почему. Ты уже данную ошибку делал и тебе рассказали как надо работать.


Да, я правда глуп и туп =). Постараюсь больше не задавать однотипные вопросы)



Почитай хотя бы базовую информацию о языке , иначе ты каждый шаг продолжишь здесь спрашивать.🤦*♂️


Да я просто думать не хотел и полез быстрей на форум. Больше такое не повториться, сам буду пытаться разбираться =)

sanders
21.12.2019, 23:18
как инжектить в процесс gta_sa.exe через exe file код на lua или же файл lua

Azller Lollison
21.12.2019, 23:25
как инжектить в процесс gta_sa.exe через exe file код на lua или же файл lua


luajit + luaxx.dll

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

Vintik
22.12.2019, 18:18
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)

san0
25.12.2019, 10:28
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
Смена кодировки на многобайтовую ничего не дало


Тебе написано что надо делать в ошибках. Берешь и преобразовываешь в нужный тебе формат данных

Vintik
29.12.2019, 15:33
Если ты открываешь чат с помощью имитации нажатия клавиши, в чем проблема с помощью имитаций напечатать текст?


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

otherwise
29.12.2019, 17:08
проблема в том, что у меня может не быть нужной раскладки на пк (например, нету русской, а текст русскими буквами)


Разве раскладку нельзя русскую поставить?)

Vintik
29.12.2019, 17:27
Разве раскладку нельзя русскую поставить?)


Я задал другой вопрос, я понимаю, что можно извращаться как угодно.

Мой вопрос звучит так: можно ли имитировать ввод символа (даже если на твоей раскладке нету такого)? если да, то как это сделать.

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)

Vintik
31.12.2019, 01:19
Хотел спросить, как сделан собейстовский аирбрэйк? Он явно не сделал стандартным методом просчёта координат для тп каждых, там, 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
Посмотри внимательней, если, конечно, знаешь основы. Так же не забывай показывать ошибку компилятора.

ufdhbi
03.01.2020, 22:44
В чем проблема?

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
)
{
}
}
}

Stiopko
04.01.2020, 02:03
Смотрите, надо объявить перменную,
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

atizoff
07.01.2020, 01:20
ребята, привет, можете объяснить почему оно работает не так как должен? и что вообще возвращает 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 юзайте. В разы удобней чем гет тик коунт

atizoff
07.01.2020, 03:17
ещё раз привет), ребят, нужно хукнуть 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

atizoff
07.01.2020, 11:38
DWORD time = GetTickCount(); в мс возвращает время с начала запуска ос.


нет, не работает, использовал только вместо DWORD int



chrono юзайте. В разы удобней чем гет тик коунт


попробовал, тоже огорчило. пытаюсь прибавить к нему значение он даёт мне в ответ 100 ошибок почему мне не нужно ему прибавлять значение

SR_team
07.01.2020, 11:41
нет, не работает, использовать только вместо DWORD int

попробовал, тоже огорчило. пытаюсь прибавить к нему значение он даёт мне в ответ 100 ошибок почему мне не нужно ему прибавлять значение


write in english please

atizoff
07.01.2020, 11:42
write in english please


да блин, русский я! просто мисскликаю, потому что из-за этой функции успел поспать 6 часов

SR_team
07.01.2020, 11:44
да блин, русский я! просто мисскликаю, потому что из-за этой функции успел поспать 6 часов


Хз куда ты мисскликнул, может по словам в своей голове? Потому что у тебя в принципе не понятно что ты написал

imring
07.01.2020, 11:51
нет, не работает, использовал только вместо 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
(
)

atizoff
08.01.2020, 01:02
Всем привет, вопрос по поводу хука эндсцены. При альт табе чёрный экран, кто-нибудь знает как это лечить?

CleanLegend
08.01.2020, 01:10
Всем привет, вопрос по поводу хука эндсцены. При альт табе чёрный экран, кто-нибудь знает как это лечить?


добавить хук reset

atizoff
08.01.2020, 01:57
добавить хук reset


иного выхода без ресета нет?

Dark_Knight
08.01.2020, 13:37
иного выхода без ресета нет?


Нет

atizoff
08.01.2020, 15:18
Нет


есть.

в хуке энд сцены после рендера обновлять все фонты

Dark_Knight
08.01.2020, 15:51
Обычно фонты обновляют в событиях, когда это нужно.

Vintik
09.01.2020, 13:44
Какой интерфейс юзать для читов на DLL (пишу на С++)?

ufdhbi
09.01.2020, 14:24
Какой интерфейс юзать для читов на DLL (пишу на С++)?


imgui

atizoff
09.01.2020, 17:07
Какой интерфейс юзать для читов на DLL (пишу на С++)?


d3d, писать меню самому



imgui


если нет античита. многие античиты уже спалили имгуи

SiTrak
09.01.2020, 17:10
На 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

atizoff
10.01.2020, 22:53
imgui + sampcac


с новым годом. я говорил про игры в общем, а не про сампкак.

попробуй неделю прожить в расте с имгуи, тебя на 12-24 часов хватит и ты улетишь

сильно не выпендривайся =)

dalesas
11.01.2020, 00:47
Как интегрировать с++ в скрипты по сампу? Я чайник чайником, но хочу свои минимальные знания увеличить и практиковать тут

Dark_Knight
11.01.2020, 02:05
За скрипты на с++ у нас тут дают по ебалу.

Cake_
11.01.2020, 02:11
За скрипты на с++ у нас тут дают по ебалу.


мб он имел ввиду вроперы?

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
;
}

ishi
12.01.2020, 18:17
Не совсем по играм, но-таки нужна помощь ясных голов:

имеется код следующего вида:







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

помогите пж

Stickey
18.01.2020, 13:19
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));
}

atizoff
19.01.2020, 01:40
Здравствуйте, можете дать пример ImGui::RadioButton?

Cake_
19.01.2020, 03:20
Здравствуйте, можете дать пример ImGui::RadioButton?



https://github.com/ocornut/imgui/blob/8bcac7d95caa7e3b960b7bf7c3bcda4ecfe4541f/imgui_demo.cpp#L461

2Shae
19.01.2020, 17:28
По какой причине используя рендер в SAMPFUNCS, рисует текст размытым? Всё дефолтное, лишь динамически изменяется текст и координаты.

edik06041
25.01.2020, 20:54
Помогите сделать аси для крмп на ввод команд с задержкой, если это платно то сколько будет стоить

Dark_Knight
25.01.2020, 22:39
По какой причине используя рендер в SAMPFUNCS, рисует текст размытым? Всё дефолтное, лишь динамически изменяется текст и координаты.


Потому что еще надо применять сглаживание.

Vintik
25.01.2020, 23:31
Каким образом порекомендуете создавать фастконнект для КРМП (мне НЕ нужны исходники)?

2Shae
26.01.2020, 02:34
Потому что еще надо применять сглаживание.


Каким образом?

Код:






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

SR_team
29.01.2020, 19:55
Эта ошибка говорит, что у них нет 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

astap_
30.01.2020, 20:08
как отправить синхру нажатия клавиши 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


Соре, я криво скопировал

Vintik
01.02.2020, 19:32
Приветствую. Есть несколько вопросов, желаю по всем получить ответ, конечно =)

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)

SR_team
03.02.2020, 23:23
Я использую поток с циклом. Выгружаю значит скрипт, сворачиваю игру. Затем разворачиваю её и у меня чёрный экран. Цикл останавливаю через 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
;
}





Зачем тебе поток?

Vintik
04.02.2020, 10:55
Приветствую. Есть несколько вопросов, желаю по всем получить ответ, конечно =)
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
04.02.2020, 14:28
@SR_team (https://www.blast.hk/members/11231/) @DarkP1xel (https://www.blast.hk/members/3658/) помогите


удачи тебе со спавном инфернуса в варкрафте, используя метод из гта. А ач ищется так же как и хп с координатами

Vintik
04.02.2020, 17:53
удачи тебе со спавном инфернуса в варкрафте, используя метод из гта. А ач ищется так же как и хп с координатами


А можешь более конкретно ответить? Ты по сути нифига не сказал, а все 3 вопроса остаются в силе (кста, не играю в варкрафт, сравнить машины в одинухе гта 5)

Как ач ищется? От чего оттолкнуться

SR_team
04.02.2020, 18:00
От чего оттолкнуться


от фриза. Ты можешь быть заморожен или нет, как найдешь 3-10 значений, чекни нет ли кого из них в сампе, и если есть, то далее работай только с ними, а если нет, то со всеми. Далее вешаешь бп на запись и смотришь откуда пишет, если записи из сампа нет, то находи начала функций и смотри откуда они вызываются. Уходя вглубь по функциям рано или поздно точно выйдешь в самп, но не обязательно в ач. Далее иди вглубь по функциям в сампе, смотри условия вызова, и так придешь в ач.

В общем, как я и сказал, алгоритм идентичен поиску хп/коорд

Vintik
04.02.2020, 18:38
от фриза. Ты можешь быть заморожен или нет, как найдешь 3-10 значений, чекни нет ли кого из них в сампе, и если есть, то далее работай только с ними, а если нет, то со всеми. Далее вешаешь бп на запись и смотришь откуда пишет, если записи из сампа нет, то находи начала функций и смотри откуда они вызываются. Уходя вглубь по функциям рано или поздно точно выйдешь в самп, но не обязательно в ач. Далее иди вглубь по функциям в сампе, смотри условия вызова, и так придешь в ач.

В общем, как я и сказал, алгоритм идентичен поиску хп/коорд


Спасибо, сделаю, все понял)

А по поводу спавна все же как?)

SR_team
04.02.2020, 18:54
Спасибо, сделаю, все понял)

А по поводу спавна все же как?)


так же. Это универсальный метод поиска нужного кода

Vintik
04.02.2020, 18:57
так же. Это универсальный метод поиска нужного кода


А потом просто его вызывать? А аргументы как искать? И еще в первом посту я скинул ссылку на то, где я пытался сделать хук, но по непонятным мне причинам тщетно.

p1cador
04.02.2020, 19:59
А аргументы как искать?


Чекай регистры и запушивание в стек непосредственно перед вызовом функции, и обращения к [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 запросы? желательно просто в консольном приложении с++

Romelo
10.02.2020, 22:58
как отправлять 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
Глобальные инклуды. Можешь просто закинуть в проект либу и подключать через обычные скобки "

bet.io
12.02.2020, 02:10
Как соединить между собой 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
;
}




Твой код (если это можно так назвать) за гранью человеческого понимания 🤪 (Если тебе надо несколько функций, надеюсь, сам как-нибудь справишься *Вздох*)

bet.io
12.02.2020, 12:10
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?


Почитай хотя бы про основы языка , чтобы не задавать такие глупые вопросы

sanders
24.02.2020, 23:05
как сделать активацию по чит-коду sf samp

ALF
28.02.2020, 18:40
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) (не смог залить на бх из-за размера файла)

ALF
29.02.2020, 22:37
При использовании GetOpenFileName появляются две ошибки. Не пойму как решить. Проект https://yadi.sk/d/PDpm7uK5Y-T4KQ (https://www.blast.hk/redirect/aHR0cHM6Ly95YWRpLnNrL2QvUERwbTd1SzVZLVQ0S1E) (не смог залить на бх из-за размера файла)


а нельзя было просто ошибки написать?

masskill
03.03.2020, 23:05
как сделать чтоб плагин только на определенном сервере работал?

tlwsn
04.03.2020, 00:13
Как из строки



Администратор 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)

imring
01.04.2020, 17:23
как рисовать текст или линии всякие не используя 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!


а как оно зависит?

bet.io
02.04.2020, 15:18
Подскажите пожалуйста почему при вводе десятичного числа программа сразу завершает работу?

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

Vesca
02.04.2020, 23:27
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
Даже если и похоже, как ты будешь этим пользоваться, если ты даже отличить не можешь?


другим дам

AnWu
05.04.2020, 22:49
Что мешает использовать 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, то он просто это делает по заданному времени

SR_team
07.04.2020, 15:21
Ну я понимаю, что 128 - воспроизведение клавиши, а 0 - отжатие. Если просто поставить 128, то он все равно на микросекунду остановится. А если делать 0/128, то он просто это делает по заданному времени


Попробуй писать еще и по этому адресу: 0x00B7358C

ucciModd
07.04.2020, 19:36
Попробуй писать еще и по этому адресу: 0x00B7358C


Так вообще ничего не происходит

Vesca
09.04.2020, 17:57
https://forum.antichat.xyz/attachments/27477791/

MrCold
09.04.2020, 22:22
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

MrCold
10.04.2020, 01:26
Зачем тебе тут самп, если получить можно с помощью указателя локального 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, возможно ли будет по сигнатуре файла распознать что там есть имгуи?

FormatC
17.04.2020, 10:07
если у меня в длл будет использоваться имгуи, и при условии что я запротекчу ее VMProtect, возможно ли будет по сигнатуре файла распознать что там есть имгуи?


VMProtect снимается на изи, и очень сильно нагружает процесс gta, все другие распаковщики так же снимаются, и вообще обязательно найдётся человек, который снимет твой протект за плату. Смысл тогда защищать его? И да, с VMProtect при правильных настройках не будет видно что там ImGui.

---------------------------------------------------

Кто знает как можно сделать поиск hex строк или просто строк в памяти процесса gta? Искал долго оч, так и не нашел, вроде пробывал чекать в исходниках Process Hacker там где функция Memory -> Strings но тоже не нашел. буду оч благодарен если подскажите КОДОМ

ALF
17.04.2020, 17:26
очень сильно нагружает процесс gta


нагружает защита памяти

SKIC
17.04.2020, 20:47
Как подключить 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))

san0
18.04.2020, 12:52
я задолбался





Желательно поставить для всех конфигураций

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 но тоже не нашел. буду оч благодарен если подскажите КОДОМ


знаешь как правильно настроить вмпротект чтобы не было видно имгуи?

FormatC
18.04.2020, 17:37
знаешь как правильно настроить вмпротект чтобы не было видно имгуи?


Давно его не юзал, но вообще это я фигню сказал, ибо VMProtect кроет норм, и никаких imgui видно не будет (я не тестировал, но не должно)

neYarik.
18.04.2020, 22:39
как менять стандартные сообщения? Joining the game и такое.

imring
18.04.2020, 22:40
как менять стандартные сообщения? Joining the game и такое.


в IDA (или в другой дизассемблере) найти ссылку на эту строку и изменить значение.

4el0ve4ik
18.04.2020, 22:45
как менять стандартные сообщения? Joining the game и такое.





в IDA (или в другой дизассемблере) найти ссылку на эту строку и изменить значение.


Hex editor)) 0)

SR_team
19.04.2020, 00:05
как менять стандартные сообщения? 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
Как получать позиции игроков, которые находятся в радиусе стрима, ну или на определенном расстоянии?

SKIC
21.04.2020, 03:24
1. Как включить системный курсор?

Gafask
22.04.2020, 20:29
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
как узнать что я плаваю

imring
25.04.2020, 14:48
как узнать что я плаваю



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

Warflex
26.04.2020, 23:25
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 хукать девайс который создавал для созданного окна, но крашило

по тупому я делал както

blood
01.05.2020, 08:12
if (params->packetId == 151) 151 incoming rpc, можно его полное название?

Romelo
01.05.2020, 08:16
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
;
}

SR_team
03.05.2020, 01:11
Ошибка 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 в линкере подключи

ALF
03.05.2020, 10:59
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 символов, то удалял первый символ из неё.

Merger
03.05.2020, 17:48
Как в asi можно получить указатель на cchat. Тот, что передается первым аргументом в AddMessage.

ALF
03.05.2020, 17:59
Как сделать активацию по читкоду в 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"
)
)
{
// ...
}

ph03nix
04.05.2020, 10:33
I need stealth renderer for not captured on video, anyone?

Dark_Knight
04.05.2020, 22:35
Такой вопрос. Он В самповских тексдравах есть возможность рендерить модель обьекта(педов, машин и т.д). Собственно, у меня такой вопрос. Как это можно реализовать самому и оттуда вытянуть(создать) текстуру в виде LPDIRECT3DTEXTURE9?

tlwsn
05.05.2020, 02:00
как заставить 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). В частности, нам интересен текст под заголовком "Замечания". Если ты скинул код неполностью и ты используешь эту функцию где-то у себя дальше, то прошу прощения за наезд.

AnWu
05.05.2020, 13:18
Спасибо большое, но уже


#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

ALF
05.05.2020, 21:54
ты пытаешься читать адрес своей же программы, а не игры

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

ALF
05.05.2020, 22:39
Ты пытаешься прочитать данные из текущего процесса.

Из других процессов ты должен читать и записывать через 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
)
;

RTD
06.05.2020, 14:01
Я щас как ебучий абориген, которому показали зажигалку. Как этим пользоваться? Я что-то написал, исходя из инфы на странице этой функции 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
Протект снял - записал - вернул

RTD
09.05.2020, 00:11
Переделал AntiBikeFall (ремень) internal в external. В принципе, он работает. Однако при столкновении на большой скорости игра крашит.
В чем может быть проблема?


Ты не правильно перевел даже близко, оно не могло работать(если говоришь "В принципе, он работает", то ты не набрал достаточную скорость чтобы сработала функция падения), почитай что делает

C++:






*
(
BYTE
*
)
0x4BA3B9
=
0xE9
;




и что

C++:






memset
(
(
PVOID
)
0x4BA3BC
,
0x00
,
2
)
;




и параметры функции WriteProcessMemory

Я вижу что ты на рандоме пишешь - а вдруг сработает...

RTD
09.05.2020, 02:02
Есть такое)
memset использовать не могу:

BYTE использовать не могу:


Тебе и не нужно их использовать, ты должен знать что они делают, а ты не знаешь. Вот пример(с мемсет такой же код)

C++:






int
bufMoney
=
444
;
WriteProcessMemory
(
hProcess
,
(
LPVOID
)
0xB7CE50
,
&
bufMoney
,
4
/*sizeof(DWORD)*/
,
nullptr
)
;
//*(*DWORD)0xB7CE50 = 444

SiTrak
09.05.2020, 02:38
Как сделать чтоб русский текст из imgui::InputText в чат выводился нормальным а не каракулями


#pragma execution_character_set("utf-8")

loganhackerdff
09.05.2020, 02:48
#pragma execution_character_set("utf-8")


Хз поможет ли это но я уже сделал

ALF
09.05.2020, 04:45
Переделал 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

RTD
09.05.2020, 17:30
Как здесь работать с *(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*, кастуй.

SR_team
09.05.2020, 18:39
WriteProcessMemory(hProcess, (LPVOID)0x4B3296, newi, 3, nullptr);


не правильно

RTD
09.05.2020, 19:44
@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
)
;
// разыменуем указатель, выведет значение

ALF
10.05.2020, 21:17
советую подучить основы

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
;
}

hxte
13.05.2020, 00:48
Недавно задался вопросом возможно ли написать свой плагин Emergency Light'ов, как подобный модуль в ImVehFt. Просто у последнего ограничения давят (до 16 разных материалов+корон и только 1 конфигурация загораний, я искренне верю что можно больше 16 сделать собственно лайтов и больше одного конфига, но пока не знаю как это реализовать). И вопрос такой, возможно ли и вообще имеет смысл писать подобный плагин? Может это потолок возможностей пожилого сап идораса, а не самого дмитрия, прекрасного автора мода ImVehFt. Было бы хорошо если бы вышеупомянутый имел опенсурс, но его бл*ин нету, так что придется велосипед изобретать в случае положительном.

2Shae
14.05.2020, 22:41
Данный код постоянно выбирает первый пункт диалога, почему?

Код:






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
)
)
;
}

imring
23.05.2020, 13:28
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/

imring
23.05.2020, 14:09
спс большое. у меня получилось скомпилировать, но скрипт неработает. какой адресс памяти отвечает за анлок фпса? я слышал что samp.dll + 0x9D9D0, но не работает почимуто





unsigned char


ты в unsigned char пытаешься записать unsigned long

и вроде надо убрать защиту от перезаписи (virual protect)

loganhackerdff
23.05.2020, 15:43
Как зарегистрировать windproc handler без SF api

ALF
24.05.2020, 16:59
WriteMemory((void*)(dwSamp + SA_Mem::FPSLimit), (uint8_t*)"0x5051FF15", 4);



C++:






WriteMemory
(
(
void
*
)
(
dwSamp
+
SA_Mem
::
FPSLimit
)
,
(
uint8_t
*
)
"x50\x51\xFF\x15"
,
4
)
;

Ilves
26.05.2020, 06:05
Соберите из этого чит в 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