-
Постов
1 635 -
Зарегистрирован
-
Посещение
-
Победитель дней
55
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент keng
-
Гугл так же говорит, что есть вот [такая] штука, которая когда-то даже входила в комплект дефолтной поставки PHP. В принципе, API-враппер можно написать и на brainfuck и на QBASIC. Выглядеть это будет во всех трёх случаях примерно вот так: Я предлагаю автору для начала определиться как следует с задачей и требованиями. Скажем, для меня до сих пор загадкой является то, что он имел ввиду под "я слыхал что можно создавать на С++ классы для пхп и писать трейнера", учитывая хотя бы то определение слова "класс", которое с программированием связывает моё воспалённое сознание. Нет, правда.
-
Нет, классы-то и прочую объектно-ориентированную фигню поддерживают и C++ и PHP, только вот тебе всё равно нужны функции, хотя бы для доступа к памяти другого процесса. Функции эти встроены в саму винду и лежат в dll-библиотеках, которые надо уметь вызывать. Грубо говоря, C++ умеет, PHP - не умеет. Т.е. до лампочки, ведёрко у тебя для куличиков есть или экскаватор - у тебя просто лепить не из чего.
-
Как бы, пхп на то и заточен. Сайты и трейнеры - малость разные вещи, а раз пхп нативно не поддерживает Win32API, то любое решение - костыльное и не стоит траты своих сил\времени. PS: Я сейчас попробовал завести связку com_dotnet + DynamicWrapperX, не завелось. Win8 x64, PHP 5.4.8.
-
Серьёзно, это очень костыльная затея. ПХП не предназначен для таких штук. Как вариант - или поискать COM-враппер, или же написать к пыхе нативное расширение. Я сейчас ради интереса попробую простое окно сделать, но я не знаю пхп, так что код вполне может быть ужасным и диким. PS: Чем не устраивают плюсы?
-
[Например]. Но сразу хотелось бы предупредить, что это будет набором костылей.
-
На картинке - Win8, под ней - Debian в VirtualBox. PS: Сама Win8 - тоже в VirtualBox, которая запущена уже под Debian на моём ноуте.
-
7 или 8 на чистый винт, ХР - в виртуалку. Чем не вариант? Если нет, то сначала ставим ХР на маленький раздел, потом 7 или 8 на основной - загрузчики совместимые.
-
Эээ, а в чём должна быть разница? Чтение статических адресов и чтение указателей?
-
№3, если не получается найти указатель вручную - попробуй автоматический поиск. ПКМ на адресе - "Pointer scan for this address". Сохраняешь файл с найденными указателями куда-нибудь (он будет большой), перезагружаешь игру, находишь новый адрес, открываешь старый файл с указателями - делаешь из меню "Rescan memory" - отсеиваешь те указатели, которые не работает. Повторяешь это пару раз, пока не останутся рабочие указатели - их и используешь. Да, рабочих может быть несколько.
-
Приветики! У меня сейчас полчетвёртого утра и в голове каша, но судя по твоему посту, ты сам слегка запутался (а может, я совсем не соображаю). Давай, для начала, определимся - тебе нужно найти указатель на адрес (количество закиси азота), чтобы потом из трейнера менять значение этого адреса (условно, 0 - нету, 1 - полный бак), или же тебе надо отключить ассемблерную инструкцию кода игры, которая отвечает за трату этой самой закиси и которая меняет значение адреса, пока закись используешь? Штука в том, что это разные вещи. Если оказалось так, что тебе надо найти указатель и менять в трейнере именно указатель, а не код игры, то погляди у меня в подписи видеоуроки - там есть и про чтение указателей из трейнера, правда, на C#, но алгоритм везде одинаковый. Задача у трейнера будет такая: 1. Находим процесс игры 2. Подключаемся к нему 3. Читаем указатель по заранее заданным смещениям - получаем текущий адрес закиси азота 4. Меняем значение этого адреса на нужное нам Если я просто что-нибудь не так понял - feel free пнуть меня в нужную сторону. =)
-
Увы, мы мультиплеером не занимаемся.
-
Привет! Я уже где-то тут отвечал на подобный вопрос, но повторюсь. Есть, по факту, пара способов: 1. У прицела есть координаты (ось оХ и оY), которые изменяются при стрельбе или при движении мыши. Постреляли - прицел задрался вверх - отсеяли в СЕ "Увеличилось". Перестали стрелять, прицел вернулся в центр экрана - отсеили "Уменьшилось". И так далее. Потом - отлаживаем, что происходит во время стрельбы. 2. Ищем функцию, отвечающую за стрельбу (отнимание патронов из обоймы, например), долго отлаживаем - обычно перед выстрелом идёт несколько call-ов, отвечающих за отдачу, звук выстрела, анимацию затвора и так далее. 3. Как правильно указал Квази, информация об отдаче конкретного оружия может быть коэффициентом, хранящимся в структуре оружия. Скажем, для пистолета это будет 0.7, а для автомата - 1.2. Ищем патроны, через патроны ищем структуру, роемся в ней. Вариантов - масса, надо просто представить, как это работает с точки зрения игры. Я в том видео показал ещё один, но он встречается довольно редко.
-
А ещё можно выделить регистр и в случае успешного условия делать типа inc, а потом сверять содержимое регистра с двойкой. Если двойка - значит оба условия выполнились.
-
№57, могут быть (и есть) разные указатели на разные адреса (здоровья и брони), но при этом с обеими может работать одна и та же функция. Т.е. ты написал скрипт для здоровья, но инструкция работала и с бронёй, а фильтр (враги-свои) ты сделал только для здоровья.
-
game.exe + 0x12345 Здесь адрес game.exe - не базовый адрес РЕ-файла (0х400000), а адрес его загрузки в ОЗУ. Лечится это в СЕ в меню отладчика View - Show module names.
-
Так я для этого и написал последний абзац. Код не надо никуда впихивать - его нужно писать, понимая при этом написанное и то, что оно сделает после выполнения.
-
По логике, тебе нужен такой псевдокод: void MyFunc(string text) { if(text != string.Empty()) { var wnd = new Window { Text = text }; wnd.Show(); } } Ну а потом вот так: var string1 = "Hello, Gamehacklab!"; var string2 = "I am a 1337 gamehacker!"; button1.Click += MyFunc(string1); button2.Click += MyFunc(string2); Поройся в документации к Lua, научись работать с функциями и аргументами, потом посмотри как сделать окно, ну и наконец - про то, как работать с обработчиками событий (например, нажатия на кнопку).
-
Не, ну я попробую, каэш. 1) я мог отследить что игра запустилась тобиш кто играет в warcraft 3 на айкапе знает что если игра свернута то когда игра стартанет он начнет тебе сигналезировать 2) Как найти и как вызвать функцию отвечающую за чат. Что бы я мог вызывать функцию и писать в чат. Эмуляция клавиатуры неподходит. Пункт №1: Самое банальное: 0 - игра не создалась, 1 - создалась. Или какое-нибудь игровое значение, скажем, золото, которое появляется только после создания карты. Создаётся таймер и пару раз в секунду читает значение адреса. Если изменилось - значит игра началась - играем звук и разворачиваем окно игры на весь экран. Пункт №2: Когда-то давно на [gamehacking.com] видел статью на эту тему. Подопытным был SC:BW. Алгоритм там был примерно такой - что-нибудь пишется в чат, игра ставится на паузу, сообщение с указанием типа string или text ищется в памяти игры. Дальше отдалчиком ищется код, который кладёт значение в эту область памяти - и где-то рядом будет функция такого вида: void PutStingToChat(string s) { if(s != NULL) chat[0] = s; } Т.е. чат - это, скорее всего, массив строк, но это не суть важно. В ассемблерном виде вызов функции выглядит примерно так: push offset s //Кладём в стек адрес текстовой строки, которую набрали call 0x456789 //Вызываем функцию написания этого в чат Это проиходит, когда набрали текст в окошке и продавили Enter. Вот, примерно так.
-
Что конкретно до трейнеров - подойдёт любой язык, который поддерживает WinAPI. Из популярных: C\C++, C#, Delphi, Basic, асм - по умолчанию. Берёшь любой, что понравится, берёшь по нему книжечку и сборник задач, садишься и все по-порядку решаешь. Как будут азы программирования под Windows - тогда и к трейнерам переходи.
-
1. Найти координаты игрока 2. Отлаживать инструкцию, работающую с определённой осью (oX\oY\oZ) или же в определённом случае (прыжок\ускорение). 3. Если присутствует какой-нибудь временный бонус к скорости бега\высоте прыжка - найти и отладить код, работающий с ним. Исходя из п. 2 и 3, в процессе отладки наткнёшься на множитель (для скорости) или таймер, циклично увеличивающий координату по нужной оси (для прыжка). Вот эти штуки и меняешь. Универсального решения для любой игры, увы, нет, но в общих чертах алгоритм взлома такой.