PDA

Просмотр полной версии : Говно аирбрейк.


otherwise
15.12.2019, 20:42
Код аирбрейка:






#include "pch.h"
float
*
coordinates
=
(
*
(
DWORD
*
)
0xB6F5F0
)
?
(
float
*
)
(
*
(
DWORD
*
)
(
*
(
DWORD
*
)
0xB6F5F0
+
0x14
)
+
0x30
)
:
NULL
;
DWORD Gravity
=
*
(
DWORD
*
)
0x863984
;
void
airbrake
(
)
{
bool
CheatOn
=
false
;
while
(
1
)
{
if
(
GetAsyncKeyState
(
VK_RSHIFT
)
&&
CheatOn
==
false
)
{
CheatOn
=
true
;
*
(
DWORD
*
)
0x863984
=
0.013
;
}
if
(
CheatOn
==
true
)
{
if
(
GetAsyncKeyState
(
VK_DELETE
)
)
{
CheatOn
=
false
;
}
GetAsyncKeyState
(
VK_UP
)
?
coordinates
[
2
]
+=
0.0002f
:
NULL
;
GetAsyncKeyState
(
VK_DOWN
)
?
coordinates
[
2
]
-=
0.0002f
:
NULL
;
GetAsyncKeyState
(
VK_RIGHT
)
?
coordinates
[
0
]
+=
0.0002f
:
NULL
;
GetAsyncKeyState
(
VK_LEFT
)
?
coordinates
[
0
]
-=
0.0002f
:
NULL
;
GetAsyncKeyState
(
0x57
)
?
coordinates
[
1
]
+=
0.0002f
:
NULL
;
GetAsyncKeyState
(
0x53
)
?
coordinates
[
1
]
-=
0.0002f
:
NULL
;
}
if
(
CheatOn
==
false
)
{
*
(
DWORD
*
)
0x863984
=
Gravity
;
}
}
}
void
init
(
)
{
while
(
*
(
DWORD
*
)
0xC8D4C0
!=
9
)
Sleep
(
100
)
;
airbrake
(
)
;
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD ul_reason_for_call
,
LPVOID lpReserved
)
{
switch
(
ul_reason_for_call
)
{
case
DLL_PROCESS_ATTACH
:
{
CreateThread
(
NULL
,
NULL
,
(
LPTHREAD_START_ROUTINE
)
init
,
NULL
,
NULL
,
NULL
)
;
}
case
DLL_THREAD_ATTACH
:
case
DLL_THREAD_DETACH
:
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}




Написал хреновый аирбрейк, выложил дабы послушать мнение спецов в написании подобного, если не сложно, укажите на мои ошибки и дайте каких-нибудь рекомендаций)).

MrCreepTon
16.12.2019, 00:34
Я понял только что это написано на C++


Я продолжу твою цепочку размышлений: он на аси и работает с памятью 😱😱😱

otherwise
16.12.2019, 00:46
Я продолжу твою цепочку размышлений: он на аси и работает с памятью 😱😱😱


Ещё он работает с массивом 😱😱😱😱

iAmerican
16.12.2019, 01:34
Ещё он работает с массивом 😱😱😱😱


Если твоё сообщение не рофл , то смотри что такое массивы.

а лучше сразу

otherwise
16.12.2019, 01:41
Если твоё сообщение не рофл , то смотри что такое массивы.

а лучше сразу


Разве float* coordinates не массив?

iAmerican
16.12.2019, 01:49
Разве float* coordinates не массив?


Нет , не массив

Carrentine
16.12.2019, 09:31
Разве float* coordinates не массив?


Это указатель.



Код аирбрейка:






#include "pch.h"
float
*
coordinates
=
(
*
(
DWORD
*
)
0xB6F5F0
)
?
(
float
*
)
(
*
(
DWORD
*
)
(
*
(
DWORD
*
)
0xB6F5F0
+
0x14
)
+
0x30
)
:
NULL
;
DWORD Gravity
=
*
(
DWORD
*
)
0x863984
;
void
airbrake
(
)
{
bool
CheatOn
=
false
;
while
(
1
)
{
if
(
GetAsyncKeyState
(
VK_RSHIFT
)
&&
CheatOn
==
false
)
{
CheatOn
=
true
;
*
(
DWORD
*
)
0x863984
=
0.013
;
}
if
(
CheatOn
==
true
)
{
if
(
GetAsyncKeyState
(
VK_DELETE
)
)
{
CheatOn
=
false
;
}
GetAsyncKeyState
(
VK_UP
)
?
coordinates
[
2
]
+=
0.0002f
:
NULL
;
GetAsyncKeyState
(
VK_DOWN
)
?
coordinates
[
2
]
-=
0.0002f
:
NULL
;
GetAsyncKeyState
(
VK_RIGHT
)
?
coordinates
[
0
]
+=
0.0002f
:
NULL
;
GetAsyncKeyState
(
VK_LEFT
)
?
coordinates
[
0
]
-=
0.0002f
:
NULL
;
GetAsyncKeyState
(
0x57
)
?
coordinates
[
1
]
+=
0.0002f
:
NULL
;
GetAsyncKeyState
(
0x53
)
?
coordinates
[
1
]
-=
0.0002f
:
NULL
;
}
if
(
CheatOn
==
false
)
{
*
(
DWORD
*
)
0x863984
=
Gravity
;
}
}
}
void
init
(
)
{
while
(
*
(
DWORD
*
)
0xC8D4C0
!=
9
)
Sleep
(
100
)
;
airbrake
(
)
;
}
BOOL APIENTRY
DllMain
(
HMODULE hModule
,
DWORD ul_reason_for_call
,
LPVOID lpReserved
)
{
switch
(
ul_reason_for_call
)
{
case
DLL_PROCESS_ATTACH
:
{
CreateThread
(
NULL
,
NULL
,
(
LPTHREAD_START_ROUTINE
)
init
,
NULL
,
NULL
,
NULL
)
;
}
case
DLL_THREAD_ATTACH
:
case
DLL_THREAD_DETACH
:
case
DLL_PROCESS_DETACH
:
break
;
}
return
TRUE
;
}




Написал хреновый аирбрейк, выложил дабы послушать мнение спецов в написании подобного, если не сложно, укажите на мои ошибки и дайте каких-нибудь рекомендаций)).


Свойства проекта -> С++ -> Отключение предкомпилированных заголовков.

otherwise
16.12.2019, 16:40
Это указатель.

Свойства проекта -> С++ -> Отключение предкомпилированных заголовков.


Спасибо! Не подскажешь, для чего отключать предкомпилированные заголовки? Я так понял они не нужны?

DarkP1xel
16.12.2019, 17:00
Ужасный код. Такой код надо писать только когда тестируешь что то. Создавать поток в DllMain - это плохо. Так же использование Sleep и GetAsyncKeyState, получение данных в глобальной области видимости. Тебе тут надо хукать WndProc и он тебе будет давать все текущие "эвенты" окна и не придётся использовать создание потока, sleep и получение стейта клавиши.

loganhackerdff
16.12.2019, 17:56
Ужасный код. Такой код надо писать только когда тестируешь что то. Создавать поток в DllMain - это плохо. Так же использование Sleep и GetAsyncKeyState, получение данных в глобальной области видимости. Тебе тут надо хукать WndProc и он тебе будет давать все текущие "эвенты" окна и не придётся использовать создание потока, sleep и получение стейта клавиши.


Вот вот именно

otherwise
16.12.2019, 18:13
Ужасный код. Такой код надо писать только когда тестируешь что то. Создавать поток в DllMain - это плохо. Так же использование Sleep и GetAsyncKeyState, получение данных в глобальной области видимости. Тебе тут надо хукать WndProc и он тебе будет давать все текущие "эвенты" окна и не придётся использовать создание потока, sleep и получение стейта клавиши.


можешь скинуть пример хорошо написанного плагина? Просто где-то мне говорили создавать поток, ты говоришь не создавать)))

iAmerican
16.12.2019, 18:56
можешь скинуть пример хорошо написанного плагина? Просто где-то мне говорили создавать поток, ты говоришь не создавать)))


За место потока ты хукаешь WndProc и обрабатываешь там все действия.