-
Постов
325 -
Зарегистрирован
-
Посещение
-
Победитель дней
9
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент uhx
-
В гугле забанили? https://google.gik-team.com/?q=how+to+get+window+parent+C%2B%2B https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms633510(v=vs.85).aspx https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms633584(v=vs.85).aspx + GWL_HWNDPARENT
-
Бред полный. Это если ты рисуешь на экране средствами WinAPI, то да, мерцать будет. Когда же делают D3D-хак в .exe, то это подразумевает, что будет создано прозрачное окно ( для d3d собсна ), которое будет поверх всех других окон ( TOPMOST ), а у D3D окна игры ставится оконный режим ( можно без рамки, как фуллскрин будет ). Минус такого чита - в скорости. Тот же ESP будет отставать, хотя тут уже зависит от реализации. Но так или иначе отставание будет, потому что обновление области будет происходить асинхронно. Вообще тяжело сказать что у тебя может быть не так. В любом случае это косяк твоего рендера, который ложится поверх всех окон, потому что в сам процесс игры ты не вмешиваешься, всего лишь читая структуры. Кинь код процедуры окна
-
А в чем проблема сказать название игры? Вряд ли там будет значение которое отображает хп выбранного моба. Как это вижу я: есть класс Entity, который как наследуется всем объектам. Значит базовые переменные, которые вполне могут там быть - это entity_id ( на который тебе надо выйти, он то и берется для смены таргета ), а так же hp и позиция +- шелуха. Если же получилось так, что смещение на HP твоего персонажа одно, а у моба - другое, значит ты делаешь что то не так ( вероятно ). Я уже делал подобную функцию в BSFG, и там много было путей выхода на entity_id. Ну, самое верное это выйти на общий список сущностей, раскрутив какую либо функцию которая работает со структурой. Просто найди ее базовый адрес, который кладется в стек до вызова самой функции ( либо кладется в регистр, который работает со структурой - разберешься ), и дальше уже реверсь структуры) Ну а как найдешь айдишники в структурах, то можно и поискать глобальную переменную ( она обычно просто к какому то интерфейсу относится ) в которой хранится айди текущего таргета, ну и через эту переменную ловишь нужную инструкцию
-
Небезопасно только при использовании общих данных, не более: когда один поток читает, а другой пишет в ту же ячейку, но тут это вроде как не грозит, потому что инструкции сразу меняют значения, даже не считывая их.
-
А, с отдачей кажется догнал: ты просто отследил инструкцию, которая поднимает экран ( отдача ) и уже с ней пошаманил ( я думаю занопить можно прост ), но как быть со скорострельностью? У каждого класса оружия свой обработчик, как я понял...
-
То есть все эти значения задаются примерно в одном месте? А то я тоже от выстрела магнума пошел, но раскопал только значение флоатовское ( 0.75 ) которое отвечает за его скорострельность, но рядом ничего больше толком не нашел)
-
Эй, ребята, в догонку к матрице: а есть чего почитать по этому поводу? Как ее понимать вообще, как преобразовывать? Можете посоветовать какую-нибудь статью годную?
-
Пытаюсь сделать сплошную заливку без ТЕНЕЙ. Если объект находится в тени, то толку от чамсов очень мало, приходится постоянно напрягатся и выискивать "затемненные" объекты, что конечно же никуда не годится. Я в общем уже пол гугла перерыл, чес слово, но так и не смог решить проблему. Вот текущий код, всю функцию копировать не стал: помимо чамсов еще куча мусора, который к ним самим не относится. Если надо будет - скину все
-
Угу, смотрел) Неп[CENSORED]ое видео, правда мне показалось, что ты там больше с реверсом структуры работаешь. А по началу ты на них выходил из инструкции, я собственно так и делал) Но мне нужен был список вообще всех объектов на карте, даже те которые вообще не двигаются) А шаг я не проходил, видимо надо бы) Всё какими-то случайными методами узнаю... там кусочек увидел, тут додумал, где-то вспомнил и применил
-
Да, но я через инструкцию так ничего и не откопал Там все очень запутано, в итоге вышел на какой-то интересный участок, но все таки не понял что с ним делать и забил. Сейчас в голову пришла идея, вон я уже выше писал, попробовать найти через сканер поинтеров и кое-что получилось, по моему то что нужно)
-
В общем, я подумал и сделал так: нашел одноуровневый указатель на свою структуру и на структуру рандомного врага) Получилось так, что я как раз нашел тот самый массив указателей. Конечно, он был не таким как я его представлял, но тоже неп[CENSORED]о... Покопавшись чуть, я заметил, что через каждые 0x10 байт (начиная с моей структуры) идет указатель на другую потенциальную структуру игрока. По быстрому нашел общее значение, чтобы фильтровать невалидные структуры и вывел все в консоль... Хо-хо, похоже я нашел то, что так долго искал По моему вышло неп[CENSORED]о. Правда некоторые объекты в этом списке режут глаз (типа тех, что с 1 хп), но вроде бы у всех валидные координаты) Правда я понятия не имею как их отличать по классу, надеюсь в структуре где то лежит названьице. Кстати, теперь вопрос... я в общем опирался на обычный оффсет при выводе всей этой байды, а как можно ли это на сигнатуры перевести? Я имею в виду поиск этого массива. Или не стоит такой "динамический" участок памяти искать через паттерн?
-
В общем я реверсил дальше от этой функции, и нихрена не нареверсил) Нашел момент, откуда берется адрес, но он туда помещается вообще на время. Что-то типа указателя на последнего "активатора" обработчиков... не знаю, в общем. Я так понимаю, что я хватанул че-то через край, взяв халфу. Структура тут абсолютна непонятная, еще и располагаются все объекты в памяти рандомно. Но даже на других примерах я не понимаю, как найти список всех объектов. Я хотел сделать не банальный трейнер, поставив какой-нибудь фильтр на инструкцию, а что-то типа ESP, да или хотя бы просто весь список найти, откуда информацию тащить.
-
Ну такое, конечно... Где 0x1C1 - это по моему комбайны, 0x2E57AD38 - мой персонаж, другие на 2E я так понимаю дружественные NPC. Еще другие адреса тоже за другие объекты отвечают)) Ладно, допустим, мне не надо выводить все объекты, так как я понимаю что размер структуры разный у них, дабы упростить задачу, хочется хотя бы иметь полный список вражеских комбайнов. Хотя если глянуть, то 0x1C1F3890 - 0x1C1F2488 = 1402, а если брать другие адреса, то 0x1C1F2488 - 0x1C1F1080 = 1408. То есть одна 1408, а другая 1402 байта) Видимо они все таки не друг за другжкой идут. Кстати, эти адреса постоянно находятся в обороте. То есть сейчас видно, что там полная абракадабра и память забита чем-то другим (обычно у них хп < 26), но если заспавнится новый комбайн, то он будет занимать свободную память, которая использовалась "бывшим" комбайном. Значит надо как-то иначе искать структуры... я что-то слышал про массив указателей, но я понятия не имею как его найти. Думаю, в нем и находится весь список живых существ, а так как в Half-Life вполне приятная (как по мне) иерархия классов, то у всех базовый класс один, то есть базовые вещи (тавтология, ага) типа координат и количества жизней, которые должны быть с одинаковыми оффсетами.
-
Всех приветствую! И так. Это больше будет смахивать на тему-рассуждение с некоторыми вопросами (если найдется тот, кто готов поддержать со мной разговор ) , чтобы я смог конкретно разобраться во всех вопросах. Я начал реверсить игру Half-Life 2. Ну, если так вообще можно назвать мои действия. И тем не менее. Я никогда раньше не находил структуры. Мой максимум - отдельные значения, да многоуровневые оффсеты к ним. Так, чтобы вы понимали мой уровень Я нашел инструкцию, которая изменяет количество жизней у игрока/NPC и прочих тварей. Кстати, вот она: Как не сложно догадаться, E0 - оффсет на нашу переменную с жизнями. То есть сразу становится понятно, что это и есть та самая структура, а начало ее лежит в регистре ESI. Что ж, начало положено. Открыв в анализаторе CE эту структуру я сразу нашел всякие разные поля: примерно в начале лежали координаты XYZ, а потом мое количество жизней. Хорошо, а что делать дальше? В моих планах было найти всех живых существ на карте, и, допустим, выводить их в консоль ( с выводом я уж справлюсь)) ). Я так понимаю, надо найти размер структуры, потому что предположительно за структурой моего игрока будет идти вражеская структура. Но и не факт. Она может так же располагаться и позади. То есть я не знаю где начинаются структуры, сколько их, какого они размера. Отлично) Есть конечно одна безумная идея - кинуть хук на инструкцию и записывать все адреса структур, но я думаю никто это не оценит xD
-
Если пишешь DLL - то еще проще В таком случае используй memset( void *dstAddress, int value, size_t size ); Но дело в том, что и твой код выглядит верно, соответственно вполне может быть, что ты NOP'ишь важный участок кода, который отвечает за дальнейшее выполнение. Попробуй сначала сделать это в отладчике.
-
Неожиданно) Спасибо за развернутый ответ. У меня с C++ проблем пока не возникает, все контачицца и трейнеры некоторые уже писал (очень примитивные). Но они были ужасны, потому что с CE работать не особо умею. Ну, вот эти вот оффсеты, сигнатурки "красиво" искать у меня не получается )) Только очень примитивные действия: нашел значение; нашел кучу указателей, перезапустил игру - пересканил, выбрал нужный. Хочу как раз понять и разбираться в реверсинге, искать те самые заветные массивы указателей на структуры объектов, которые так необходимы, ну и перехват функций, ибо умею только кустарным методом - первые пять байт с джампом на свою функцию и все А ведь есть еще парочка неплохих метод с их перехватом. Да и ассемблер в этом деле надо понимать, ибо как еще понять что принимает функция и что она вообще делает, чтобы ее заменить на свою) // upd Я так понял, в STL как раз и нужно разбираться, чтобы понять все то что я написал выше)) Потому что с WinAPI у меня проблем нет, хукануть функцию DirectX тоже не проблема: в тырнете примеров полно. Ну а с MSDN-то что?)) Там хоть пишут понятно, а то как зайдешь на какой нибудь форум, а там все слова коверкают и хрен че разберешь)) Кстати, первая книга была как раз от Шилдта (для начинающих), поэтому с него STL и начну Еще раз спасибо, буду разбираться.
-
Хм. Для этого и нужны сигнатуры, с которыми я ничерта не знаком? )) Знаю, они лучше, т.е. уникальные и после апдейта не слетят, как оффсеты, но вот... Эх... есть даже какой-то дампер, который находит все адреса за тебя. Понять бы, как это все работает
-
Что-то тема поутихла Кстати, может кто нибудь объяснить, как такое делается? Я так полагаю, что есть какая-то таблица или список указателей на структуры объектов (какие-то персонажи, будь то онлайн игроки или боты). Как мне его найти? В одной игре пытался сделать, но ничего не вышло. Нашел одноуровневые указатели, рядом все прошерстил - фигня полнейшая, следующий объект с похожей структурой на моего игрока не могу найти Может, есть какие-то способы, как быстро найти такой список? Ибо созерцать содержимое всех указателей желания нет, а смещение на другой указатель найти хочецца И да, пробовал это дело в CSGO. С ботами. С -insecure. Не для дальнейшего злоупотребления в онлайне) Список искал со смещением от модуля "client.dll", в одной статье нашел, что так и нужно. Но до конца ее разобрать не смог (статью)... трудности перевода.
-
Я уж думал это ответ на мое ЛС ;D Задал вроде как простой вопрос, но конкретно случай в его уроке непонятен)) А по поводу про-геймхакеров99, которые даже краем не знакомы с языком, полностью согласен. Не раз видел на других форумах))
-
Раз тема была все равно апнута: Тут скорее дело принципа. Хочется использовать что-то свое, а не готовый функционал СЕ, с помощью которого можно за пару минут сделать трейнер. Гораздо интереснее написать все с нуля (ну это мое имхо, ибо я СЕ если и юзаю, то ПОКА только для поиска оффсетов, т.к. начинающий в геймхакинге) и пользоваться этим. Ну, можно еще много чего написать... Но я лично, даже будучи новичком, сразу начал делать (как раз недавно ) все на С++ и ни разу в СЕ дальше поиска значений не лазил, мне это попросту не интересно. Вообщем, на вкус и цвет ... ЗЫ да и не будешь же всю жизнь писать трейнеры для одиночек? В какой-то момент тебе захочется сделать что-то посерьезнее, то, что на этом форуме не обсуждают (нувыпоняли ) и для этого уже функционала СЕ не хватит.
-
Ииии у меня остался один-единственный, последний вопрос. Далее в эту тему писать не буду... Вообщем, как мне зафризить какое-либо значение? Ну... просто у меня в голову приходит один вариант: while(1){ if(GetAsyncKeyState(VK_NUMPAD1)){ Money+=50000; mem->Write(&Money, moneyAddr, sizeof(unsigned long int)); cout<<"Current Money: "<<Money<<endl; Sleep(400); } if(GetAsyncKeyState(VK_NUMPAD2)){ FreezeStamina = mem->Read(staminaAddr, sizeof(unsigned long int)).toUINT32(); (FreezeSt == 1 ? FreezeSt = 0:FreezeSt = 1); } if(GetAsyncKeyState(VK_NUMPAD9)) exit(0); if(FreezeSt){ Stamina = mem->Read(staminaAddr, sizeof(unsigned long int)).toUINT32(); if(FreezeStamina != Stamina) mem->Write(&FreezeStamina, staminaAddr, sizeof(unsigned long int)); } Sleep(100); } Но я вот думаю, может можно как-то без постоянного Write обойтись? Допустим, создать свой указатель и через него уже сравнивать значения? Ну, а потом в этот указатель записывать нужное и он соотв. передаст его по адресу... Мне почему-то кажется, что из за постоянного использования Write, идет какая-то лишняя нагрузка. Поэтому хотелось бы немного это дело оптимизировать, если возможно.
-
Эти уроки - бесценны. Супер! Сразу их почему-то у тебя на канале (еще эдак с неделю назад, когда даже про форум этот не знал) не увидел их... Щас посмотрел три урока внимательно, все переписывая с экрана ииии вуаля! Все получилось. STALKER TRAINER plus 1 ($ MONEY $) Succesfully completed. Ха. И только одна проблема, кстати, возникла! Я нашел значение денег, вообщем... и такая беда, что если число шестизначное - то выводит лишь пять рандомных цифр. Как поправить? :\ Хм, кажется решил проблему.
-
My First CPP Trainer
-
Спасибо, буду разбираться, читать. Coder, единственная причина, почему я не смотрю твои уроки - это WinAPI Мне в ближайшее время не хочется переходить на оконные приложения, а у тебя в основном работа идет с ними и в некоторых уроках, которые интересны мне, я не могу просмотреть какие-то участки кода, которые писались в предыдущих уроках. Ибо смотреть все уроки и ждать, пока ты начнешь писать нужный мне участок кода нет Вот так вот все печально выходит)) Пока это писал, чуть не забыл основную цель данного сообщения - не мог бы ты выложить исходник проекта на данный форум, если он у тебя сохранился?