Начинающий
Начинающий
- Статус
- Оффлайн
- Регистрация
- 25 Ноя 2024
- Сообщения
- 94
- Реакции
- 0
Функция isFalling всегда возвращает true + Проверка на 179 строке
не когда не срабатывает, когда вроде даже isFalling возвращает true
Полный код dllmain.cpp (щиткод) Вызов функции находится на 179 строке
Лог с консоли
Код:
if (isFalling(env, LocalPlayer))
isFalling():
jboolean isFalling(JNIEnv* env, jobject LocalPlayer) {
jclass Class = env->FindClass("gwi");
cout << "Class at 0x" << Class << endl;
jfieldID IDisFalling = env->GetFieldID(Class, "dz", "Z");
env->DeleteLocalRef(Class);
cout << "IDisFalling at 0x" << IDisFalling << endl;
jboolean isFalling = env->GetBooleanField(LocalPlayer, IDisFalling);
return isFalling;
}
Полный код dllmain.cpp (щиткод) Вызов функции находится на 179 строке
dllmain:
#include "pch.h"
#include <jni/jni.hpp>
#include <iostream>
#include <Windows.h>
#include <cstdlib>
#include <ctime>
#include "Utils/RenderUtils.h"
#include "Util.h"
long long GetTimeCurrent() {
return GetTickCount64();
}
using namespace std;
typedef BOOL(WINAPI* tWglSwapBuffers)(HDC hDc);
tWglSwapBuffers oWglSwapBuffers = nullptr;
bool showMenu = false;
bool triggerBot = false;
HWND g_MinecraftWindow;
BOOL WINAPI HookRender(HDC hdc) {
return oWglSwapBuffers(hdc);
}
float getRandomFloat(float min, float max) {
float random_zero_to_one = static_cast<float>(rand()) / static_cast<float>(RAND_MAX);
return min + random_zero_to_one * (max - min);
}
void ClickLeftButtonMouse(HWND hwnd) {
POINT pt;
GetCursorPos(&pt);
ScreenToClient(hwnd, &pt);
LPARAM lParam = (pt.y << 16) | (pt.x & 0xFFFF);
PostMessage(hwnd, WM_LBUTTONDOWN, MK_LBUTTON, lParam);
Sleep(10);
PostMessage(hwnd, WM_LBUTTONUP, 0, lParam);
}
jfloat GetAttackCooldownProgress(JNIEnv* env, jobject LocalPlayer) {
jclass PlayerEntClass = env->FindClass("cut");
jmethodID IDProgress = env->GetMethodID(PlayerEntClass, "G", "(F)F");
env->DeleteLocalRef(PlayerEntClass);
jfloat Progress = env->CallFloatMethod(LocalPlayer, IDProgress);
return Progress;
}
void AttackPlayer(JNIEnv* env, jobject entity, jobject LocalPlayer) {
jclass PlayerEntClass = env->FindClass("cut");
jmethodID IDAttack = env->GetMethodID(PlayerEntClass, "e", "(Lbzm;)V");
env->DeleteLocalRef(PlayerEntClass);
env->CallVoidMethod(LocalPlayer, IDAttack, entity);
cout << "Attacked" << endl;
}
bool isPlayer(JNIEnv* env, jobject entity) {
if (entity == nullptr) {
cout << "!entity" << endl;
return false;
}
jclass entClass = env->GetObjectClass(entity);
jmethodID IDisPlayer = env->GetMethodID(entClass, "dY", "()Z");
env->DeleteLocalRef(entClass);
if (IDisPlayer == nullptr) {
cout << "!IDisPlayer" << endl;
return false;
}
jboolean result = env->CallBooleanMethod(entity, IDisPlayer);
return result == JNI_TRUE;
}
jboolean isFalling(JNIEnv* env, jobject LocalPlayer) {
jclass Class = env->FindClass("gwi");
cout << "Class at 0x" << Class << endl;
jfieldID IDisFalling = env->GetFieldID(Class, "dz", "Z");
env->DeleteLocalRef(Class);
cout << "IDisFalling at 0x" << IDisFalling << endl;
jboolean isFalling = env->GetBooleanField(LocalPlayer, IDisFalling);
return isFalling;
}
void Main(HMODULE hModule) {
AllocConsole();
FILE* f;
freopen_s(&f, "CONOUT$", "w", stdout);
JavaVM* rawjvm = nullptr;
jsize vmCount = 0;
JNI_GetCreatedJavaVMs(&rawjvm, 1, &vmCount);
if (rawjvm == nullptr) {
cout << "!rawjvm" << endl;
return;
}
cout << "JVM at: 0x" << rawjvm << endl;
JNIEnv* env = nullptr;
jint attachResult = rawjvm->AttachCurrentThread((void**)&env, nullptr);
if (attachResult != JNI_OK || env == nullptr) {
cout << "!JVM ERR: " << attachResult << endl;
return;
}
srand(static_cast<unsigned int>(time(nullptr)));
cout << "JVM connected" << endl;
cout << "env at 0x" << env << endl;
jclass MCClass = env->FindClass("fue");
cout << "MCClass at 0x" << MCClass << endl;
jmethodID IDGetInstance = env->GetStaticMethodID(MCClass, "R", "()Lfue;");
cout << "IDGetInstance at 0x" << IDGetInstance << endl;
jobject Instance = env->CallStaticObjectMethod(MCClass, IDGetInstance);
cout << "Instance at 0x" << Instance << endl;
jfieldID IDCurrentScreen = env->GetFieldID(MCClass, "z", "Lget;");
cout << "IDCurrentScreen at 0x" << IDCurrentScreen << endl;
void* targetAddress = GetProcAddress(GetModuleHandleA("opengl32.dll"), "wglSwapBuffers");
cout << "targetAdress at 0x" << targetAddress << endl;
MH_Initialize();
MH_CreateHook(targetAddress, HookRender, reinterpret_cast<void**>(&oWglSwapBuffers));
MH_EnableHook(targetAddress);
//TriggerBot
jfieldID IDCrosshairTarget = env->GetFieldID(MCClass, "w", "Lfiq;");
cout << "IDCrosshairTarget is 0x" << IDCrosshairTarget << endl;
jmethodID IDgetTypeHR = env->GetMethodID(env->FindClass("fiq"), "d", "()Lfiq$a;");
cout << "IDgetTypeHR - HitResult at 0x" << IDgetTypeHR << endl;
jfieldID IDTypeEntity = env->GetStaticFieldID(env->FindClass("fiq$a"), "c", "Lfiq$a;");
cout << "IDTypeEntity at 0x" << IDTypeEntity << endl;
jobject rawTypeEntity = env->GetStaticObjectField(env->FindClass("fiq$a"), IDTypeEntity);
cout << "rawTypeEntity at 0x" << rawTypeEntity << endl;
jobject TypeEntity = env->NewGlobalRef(rawTypeEntity);
cout << "TypeEntity is " << TypeEntity << endl;
jfieldID IDplayer = env->GetFieldID(MCClass, "t", "Lgwi;");
cout << "IDplayer at 0x" << IDplayer << endl;
while (true) {
Sleep(10);
//LocalPlayer
jobject rawLocalPlayer = env->GetObjectField(Instance, IDplayer);
jobject LocalPlayer = env->NewGlobalRef(rawLocalPlayer);
env->DeleteLocalRef(rawLocalPlayer);
jobject CurrentScreen = env->GetObjectField(Instance, IDCurrentScreen);
if (GetAsyncKeyState(VK_RSHIFT) & 1 && CurrentScreen == nullptr) {
if (!showMenu) {
cout << "Gui Open" << endl;
showMenu = true;
}
else {
showMenu = false;
cout << "Gui Close" << endl;
}
}
env->DeleteLocalRef(CurrentScreen);
//triggerbot
jobject HitResult = env->GetObjectField(Instance, IDCrosshairTarget);
if (HitResult != nullptr) {
jobject HitResultType = env->CallObjectMethod(HitResult, IDgetTypeHR);
if (env->IsSameObject(HitResultType, TypeEntity)) {
jmethodID IDGetEnt = env->GetMethodID(env->FindClass("fip"), "a", "()Lbzm;");
jobject Entity = env->CallObjectMethod(HitResult, IDGetEnt);
if (isPlayer(env, Entity)) {
//cout << "Player" << endl;
jfloat progress = GetAttackCooldownProgress(env, LocalPlayer);
cout << progress << endl;
float RandomProgress = getRandomFloat(0.87f, 1.0f);
if (progress >= RandomProgress && CurrentScreen == nullptr) {
cout << isFalling(env, LocalPlayer) << endl; // <- вот эта функция возвращает 1 постоянно
if (isFalling(env, LocalPlayer)) {
cout << RandomProgress << endl;
HWND hwnd = GetForegroundWindow();
ClickLeftButtonMouse(hwnd);
}
Sleep(100);
}
env->DeleteLocalRef(Entity);
//AttackPlayer(env, Entity, LocalPlayer);
}
else {
cout << "notPlayer" << endl;
env->DeleteLocalRef(Entity);
}
}
env->DeleteLocalRef(HitResultType);
}
env->DeleteLocalRef(HitResult);
if (GetAsyncKeyState(VK_INSERT) & 1) {
MH_DisableHook(GetProcAddress(GetModuleHandleA("opengl32.dll"), "wglSwapBuffers"));
MH_Uninitialize();
env->DeleteGlobalRef(LocalPlayer);
rawjvm->DetachCurrentThread();
if (f) fclose(f);
FreeConsole();
FreeLibraryAndExitThread(hModule, 0);
}
}
}
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
CloseHandle(CreateThread(nullptr, 0, (LPTHREAD_START_ROUTINE(Main)), hModule, 0, 0));
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
Log:
JVM at: 0x00007FF9C84C17C0
JVM connected
env at 0x000002C7622A1F10
MCClass at 0x000002C72622B050
IDGetInstance at 0x000002C724271DE0
Instance at 0x000002C72622B058
IDCurrentScreen at 0x0000000000000692
targetAdress at 0x00007FFA480F7F70
IDCrosshairTarget is 0x0000000000000682
IDgetTypeHR - HitResult at 0x000002C724271DE8
IDTypeEntity at 0x000002C761EF7CF0
rawTypeEntity at 0x000002C72622B078
TypeEntity is 000002C765B5A02A
IDplayer at 0x0000000000000632
1
Class at 0x000002C72622B080
IDisFalling at 0x0000000000000C96
Class at 0x000002C72622B148
IDisFalling at 0x0000000000000C96
1