эксперт ебать спасибо выручилизучаешь плюсы.
эксперт ебать спасибо выручилизучаешь плюсы.
Байткод в первой строке это начало и конец сталкрафта? Или где его нашел, я просто в памяти сколько не рылся все время разное былоче за бред? аномалии через drawArraysIntanced, это первое, а второе в drawElements игроки рисуются это факт
а нахуя тебе искать эту функцию? можешь просто найти сигу на jvm, я так делал:
C++:auto main_vm = GetAbsoluteAddress< JavaVM* >( FindPattern( "jvm.dll", "48 8D 0D ?? ?? ?? ?? 45 33 C0 FF D0" ), 3 ); SCJniEnv* env = nullptr; printf( "virtual machine: %p\n", main_vm ); main_vm->AttachCurrentThread( reinterpret_cast<void**>( &env ), nullptr ); printf( "env: %p\n", env ); jclass _main = env->FindClass( "exbo/stalcraft/client/Main" ); //std::cout << _main << "\n";
glcolormaterialхукни дравелементс
Кстати, файл с объявлением функций можно?че за бред? аномалии через drawArraysIntanced, это первое, а второе в drawElements игроки рисуются это факт
а нахуя тебе искать эту функцию? можешь просто найти сигу на jvm, я так делал:
C++:auto main_vm = GetAbsoluteAddress< JavaVM* >( FindPattern( "jvm.dll", "48 8D 0D ?? ?? ?? ?? 45 33 C0 FF D0" ), 3 ); SCJniEnv* env = nullptr; printf( "virtual machine: %p\n", main_vm ); main_vm->AttachCurrentThread( reinterpret_cast<void**>( &env ), nullptr ); printf( "env: %p\n", env ); jclass _main = env->FindClass( "exbo/stalcraft/client/Main" ); //std::cout << _main << "\n";
Можно инфу по нахождению классов? Найти смог только дебаг при старте JVM, но со сталкрафтом такое не работает. Так же разбирал все jar файлы и некоторые dll, в jar классов не нашел, только классы лаунчера. А в dll там много всего, найти нужное будет сложноватоСурс Simple ESP тебе ничем не поможет от слова совсем. Хукать нужно DrawElements. Просто хукнуть его недостаточно, нужное ещё кое что сделать. А вообще, использовать хуки - прошлый век, нужно использовать классы.
какой еще байткод? не понимаю о чем ты. это паттерн на инструкцию в jvm, где юзается main_vm(я его получаю с инструкции просто)|Байткод в первой строке это начало и конец сталкрафта? Или где его нашел, я просто в памяти сколько не рылся все время разное было
каких функций? джиниишки? там они у ск оффсеты на них каждый апдейт меняются, можешь себе просто паттерны как я сделать на их оффсеты от таблицы методов и всеКстати, файл с объявлением функций можно?
Объявление функций GetAbsoluteAddress и FindPatternкакой еще байткод? не понимаю о чем ты. это паттерн на инструкцию в jvm, где юзается main_vm(я его получаю с инструкции просто)|
каких функций? джиниишки? там они у ск оффсеты на них каждый апдейт меняются, можешь себе просто паттерны как я сделать на их оффсеты от таблицы методов и все
чувак тебе не дадут код ctrl c + ctrl v, тут нужно думать самому, он тебе и так подсказал как это может быть реализованоОбъявление функций GetAbsoluteAddress и FindPattern
Ну и типы данных SCJniEnv* и jclass
Я просто поискал подобное, у них входные данные другие, хочется посмотреть как твое выглядит
Замену файлов не пробовал, но думаю либо в игру не пустит либо забанит быстро. Подсветка артефактов раньше была заменой файлов, банило быстроА надо обязательно dll файл делать для сталкрафта или заменять файлы? Сорри я новичок
можешь попробовать external сделать, просто рисовать вх поверх игры, как в кс сделано.Замену файлов не пробовал, но думаю либо в игру не пустит либо забанит быстро. Подсветка артефактов раньше была заменой файлов, банило быстро
А куда это должно вести?jclass _main = env->FindClass( "exbo/stalcraft/client/Main" );
А что еще сделать после хука?Сурс Simple ESP тебе ничем не поможет от слова совсем. Хукать нужно DrawElements. Просто хукнуть его недостаточно, нужное ещё кое что сделать. А вообще, использовать хуки - прошлый век, нужно использовать классы.
#include <Windows.h>
#include <string>
#include <iostream>
#include "GL/glew.h"
#include "options.h"
#pragma comment(lib, "glew32s.lib")
#include "hooks.h"
#include <GL/gl.h>
#pragma comment(lib, "OpenGL32.lib")
void WINAPI Hooks::hk_glDrawArrays(GLenum mode, GLint first, GLsizei count) {
static bool toggleSee2 = false;
static bool keyDown = false;
GLenum currMode = mode;
if (GetAsyncKeyState(menu::bToggleInsightOne) & 0x8000) {
if (!keyDown) {
toggleSee2 = !toggleSee2;
keyDown = true;
}
}
else {
keyDown = false;
}
if (toggleSee2 && menu::bInsightOne) {
mode = GL_POINTS;
}
fn_glDrawArrays(mode, first, count);
if (toggleSee2 && menu::bInsightOne) {
mode = currMode;
}
}
unsigned char color[4] = { options::chamsColor.x, options::chamsColor.y, options::chamsColor.z, options::chamsColor.w};
void WINAPI Hooks::hk_glDrawElements(GLenum mode, GLsizei count, GLenum type, const void* indices) {
static bool glewInitialized = false;
if (!glewInitialized) {
if (glewInit() != GLEW_OK) {
MessageBoxA(NULL, "Íå óäàëîñü èíèöèàëèçèðîâàòü GLEW", "Îøèáêà", MB_ICONERROR);
}
glewInitialized = true;
}
static bool toggleChams = false;
static bool keyDown = false;
if (GetAsyncKeyState(menu::bToggleChams) & 0x8000) {
if (!keyDown) {
toggleChams = !toggleChams;
keyDown = true;
}
}
else {
keyDown = false;
}
GLint currentTexture;
glGetIntegerv(GL_TEXTURE_BINDING_2D, ¤tTexture);
bool isReady = count > 5000 && count < 300000 && mode == 4;
bool canRet = false;
GLint currentProgram;
glGetIntegerv(GL_CURRENT_PROGRAM, ¤tProgram);
GLfloat emissionColor[4];
if (toggleChams && menu::bChamsEnabled) {
if (isReady) {
GLint location = glGetUniformLocation(currentProgram, "isAnimated");
GLint isAnimated;
if (location == -1) {
goto THE_END;
}
else {
glGetUniformiv(currentProgram, location, &isAnimated);
}
if (isAnimated != 1) goto THE_END;
location = glGetUniformLocation(currentProgram, "emissionColor");
if (location == -1) {
goto THE_END;
}
else {
glGetUniformfv(currentProgram, location, emissionColor);
glUniform3f(location, options::chamsColor.x, options::chamsColor.y, options::chamsColor.z);
}
GLint numTextures;
glGetProgramiv(currentProgram, GL_ACTIVE_UNIFORMS, &numTextures);
canRet = true;
static GLuint textureGreen = 0;
if (textureGreen == 0) {
glGenTextures(1, &textureGreen);
}
for (GLint i = 0; i < numTextures; ++i) {
location = glGetUniformLocation(currentProgram, ("usedTextures[" + std::to_string(i) + "]").c_str());
if (location != -1) {
GLint sampler;
glGetUniformiv(currentProgram, location, &sampler);
glActiveTexture(GL_TEXTURE0 + sampler);
glBindTexture(GL_TEXTURE_2D, textureGreen);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, color);
glDepthRange(0.0, 0.1);
}
}
}
}
THE_END:
fn_glDrawElements(mode, count, type, indices);
if (toggleChams && menu::bChamsEnabled) {
if (isReady && canRet) {
glDepthRange(0.0, 1.0);
GLint location = glGetUniformLocation(currentProgram, "emissionColor");
glUniform3f(location, emissionColor[0], emissionColor[1], emissionColor[2]);
glBindTexture(GL_TEXTURE_2D, currentTexture);
}
}
}
BOOL WINAPI Hooks::hk_SwapBuffers(HDC hDC) {
glPopAttrib();
glDepthFunc(GL_LEQUAL);
static bool toggleSee = false;
static bool keyDown = false;
if (GetAsyncKeyState(menu::bToggleInsightTwo) & 0x8000) {
if (!keyDown) {
toggleSee = !toggleSee;
keyDown = true;
}
}
else {
keyDown = false;
}
if (toggleSee && menu::bInsightTwo) {
glDepthFunc(GL_ALWAYS);
}
glPushAttrib(GL_DEPTH);
return fn_SwapBuffers(hDC);
}
Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz