-
Постов
2 999 -
Зарегистрирован
-
Победитель дней
129
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент MasterGH
-
В подфоруме "Видео" есть видео о генерации трейнера - ты его смотрел, ты всё делаешь как делают авторы (может быть проверишь ещё раз)? Попробуй понять в чём ошибка сборки трейнера, может быть вообще не в коде, а из-за русских букв в путях или в словах в трейнере, или из-за каких-то других причин. Попробуй построить трейнер без твоего Lua-кода... получается? Попробуй построить трейнер с твоим Lua-кодом, но более простым чем в посте 3 ... получается? Если получается построить трейнер без твоего Lua-кода и или с твоим более простым кодом (который точно работает правильно), значит проблема в твоём коде (похожего на код опубликованный в посте 3) и тебе нужно проверить его сохранив как .*CETRAINER и посмотреть его содержимое текстовым редактором. Возможно там повторяющиеся функции генератора и твои или ещё что-то. Всё это необходимо проверять тебе самому
-
Первый адрес в цепочке указателей должен располагаться в области памяти Image файла exe или dll-ки по пути Image Base + смещение = статический адрес.. Где смещение не превышает размер модуля или exe. Все остальные смещения "внутри статического адреса", которых может быть много могут располагаться в памяти процесса с разными правами доступа - в динамической памяти. Хотя может быть и исключение - не только в динамической, но и в Image области могут находится адреса из цепочки указателей. Статическая память это область Image файла exe или dll-ки, подразумевается что адрес в этой памяти не поменяет своего места положения во время игры. Динамическая память - это память, в которой адреса могут менять своё место положение. Это касается памяти, которая выделяется во время работы процесса игры. Отсюда следует, что искать указатель через автоматический поиск нужно : 1) настроить области статической памяти для поиска первого адреса в цепочке указателей (это можно сделать в CE задавая промежуток поиска статического адреса и исключая указанные ранее модули, адресное виртуальное пространство которых не будет входит в поиск); 2) указать область сканирования для адресов цепочки вложенных в первый адрес. Эта область может захватить как динамическую память так и может затронуть области статической памяти; 3) указать размер структуры данных (обычно не более 1-2кб), в которой могут располагаться вложенные указатели из цепочки указателей. Ну а далее отсев, отсев, отсев... Короче совет тем у кого проблема с автоматическим поиском. У CE есть программа для тренировки. Там точно должно быть задание по поиску указателей. Так что можно потренироваться в поисках указателей как через отладку, отладку+сканер памяти так и через автоматический поиск указателей
-
Напоминаю, что существует плагин по созданию АА-скриптов с сигнатурами из меню дизассемблера или из дизассемблера по горячим клавишам.
-
>> нужно обязательно запустить СЕ 6.2 и он типа .СETRAINER Построй трейнер и сохрани его как *.CT файл. Открой его Notpad+ и отредактируй убрав всё лишнее. Сохрани изменения. Открой снова этот файл с помощью CE и сохрани уже как EXE. Должно помочь. Если не помогает, то целый файл сбрось в сообщении, я посмотрю.
-
Конечная цель, которую ты хочешь достигнуть требует некоторых знаний программирования под Windows. И если ты спрашиваешь как сделать WorldToScreen, то будь любезен написать базовый (остальной) код без WorldToScreen. А иначе это выглядит так "найдите или приведите свой рабочий пример всей программы рисования". Класс Player имеет мало пользы и только небольшой процент от всего кода. Так что, когда у тебя будет базовый код, тогда возможно я помогу.
-
Пардон ставить бряк скорее всего лучше после вызова функции. Если ставить перед, то можно получить не адрес дейваса, а указатель на него передаваемый в последний аргумент функции. Да быстрее, но только для Direct9. Другие версии DirectX функций я не видел. Если конечно их не дописать или не скачать откуда-нибудь.
-
>>1)Как найти координаты Через сканер памяти >> 2)Как в С++ (пишу хаки в длл именно на нем) привязать к координатам ники игроков. ...видел немало исходных кодов. Ну как пишут. Читают С++ (MSDN), DirectX SDK -мануалы. Ищут функции, которые необходимы для работы. Часто помогают примеры DirectX по различным тематикам. Если это рисование линий, то ищешь тему рисования, если это работа с координатами, то ищешь функции и примеры по работе с координатами.
-
>>В 64-ОС уже не поддерживаются короткие машинные инструкции dos программ Я имел ввиду что на Win7 64 разрядной не запускаются 16-разрядные приложения. И я почему-то решил что инструкции не поддерживаются для работы с 16-битными регистрами. Т.е. mov ax, bx и т.п. Видимо какие-то инструкции поддерживаются. Так что я ошибся с однозначным выводом, ссори. Тем не мене речь шла об экономии памяти. Так что ничего не меняется. Если в страннице памяти, есть свободное место, то об экономии можно не думать, а обычно в странице памяти всегда остаётся свободное место.
-
Актуально тогда, когда на бряке хотим видеть сразу все регистры без лишних телодвижения. Если нужен скриншот или обсуждение проблемы, то это всё было здесь. Для cheatengine-i386.exe (для другой версии сами сделаете если надо) GUI_FixHeightRegisterWindow.lua (скрипт короткий, не стал его паковать в архив, да и нагляднее) --GUI_FixHeightRegisterWindow.lua -- For CE 6.2 - cheatengine-i386.exe -- Andrey, 2012 (c) local autoAttachList = getAutoAttachList() stringlist_add(autoAttachList, 'cheatengine-i386.exe') function onOpenProcess(processid) local results = AOBScan('9D0003546F7003200105576964746803080105416C69676E0708616C426F74746F6D08526561644F6E6C79090A5363726F6C6C4261727307067373426F7468085461624F72646572020108576F726457726170080000095453706C69747465720953706C69747465723106437572736F72070863725653', '+W+C-X') if (results ~= nil) then if (strings_getCount(results)> 0) then local address = strings_getString(results, 0) --print(address) writeBytesLocal(address, 0xE6, 0x00) else print('Error. Plagin GUI_FixHeightRegisterWindow.lua. Not Find signatre. Check version plagin') end object_destroy(results) strings_clear(autoAttachList) end end Смысл такой. Ищем сигнатуру ресурсов высоты, я нашёл с помощью WinHex. Находим адрес сигнатуры и ставим высоту 230 пикселей или это будет 0xE6, 0x00 в байтах. Желаю удачи в работе с CE при снятии показаний регистров для 32-разрядной CE
-
Понятия не имею, что ты искал в поисковике и какая ссылка понадобилась. Если нужна тузла apimonitor, то её найти в поисковиках элементарно.
-
>>LINUX: Пытался найти значение по совету Andrey не получилось Можно попытаться воспользоваться тузлой Function Hacker чтобы найти call вызова грефы. Далее перейти к нему в отладчик и там колдовать. Ну это конечно если есть опыт. Если кому нужно, то информация по переходу в оконный режим для этой игры. Нужно перехватить функцию создания DirectX 9 девайса. Поставить Window Mode в true и поставить разрешение экрана в ноль.
-
>> 1. Если кто-то сталкивался с похожей ситуацией, то какими способами решается проблема? Я к сожалению не сталкивался >>неким способом "жёсткого" безусловного выхода из режима "debug" Выход из отладки 1) detachIfPossible() - вообще вырубить отладчик (функция должна работать в CE 6.2) 2) debug_removeBreakpoint(address) лишь удаляет брейкпоинты (можно постараться удалить все). Поэтому это не совсем выход из отладочного режима. Возможно функцию debug_removeBreakpoint(address) не стоит вызывать в недрах debugger_onBreakpoint(), когда debugger_onBreakpoint() работает очень часто, а вызывать из чего-то другого. Из функции таймера или потока. Да-да =), На Lua можно работать с потоками существует специальный класс Thread Class. К сожалению я не могу помочь примерами кода как работать с потоками или как с таймером. Мне лень. Я могу что-то подправить или подсказать.
-
1) Сделать идеальным оружие (т.е. чтобы то не приходило в негодность) 2) Обмануть расстояние действия грефы (т.е. чтобы та летала бесконечно долго пока не врезалась во что либо ) 3) Грефа электрическая, огненная, любое метание с силой (т.е. включение этих режимов) Пункты 1 и 2
-
Я так понял что происходит конфликт файлов из SDK Directx и Windows C:\Program Files (x86)\Microsoft DirectX SDK (June 2010) C:\Program Files (x86)\Microsoft SDKs по расположению путей, который выше и который ниже в настройках VS. Что делать по этому поводу написано ниже из цитаты
-
Прежде всего надо подразумевать, что эта ошибка была не только у тебя, но и других людей. А значит этот вопрос могли задать люди столкнувшиеся с этой проблемой и освещение его могло быть внесено в реестр поисковых систем. Короче можешь задать вопрос гуглу:
-
Я уже писал как - пост 5, пункт 3.
-
Да, наверно я ошибся. Может быть так GameWorld gameWorld = (GameWorld*)0x0041d090; Я постоянно путаю эти привидения. Да, и этот код нужно писать в dll-ке (на всякий случай напоминаю об этом).
-
1) "Класс" это описание, которое можно найти только в исходниках С++. Класс нельзя найти в памяти процесса игры, а можно найти только реализацию класса в виде структуры данных. 2) Считывать и записывать в класс нельзя. Это неправильное выражение. 3) Гайд о том, как найти класс не найдёшь, т.к. найти класс нельзя. см.пунтк 1. Можешь найти адрес позиции через сканер памяти. Поставить бряк и попытаться найти начало структуры (реализации класса); 4) "Ведь я же найду этот класс в статической части кода.... Если возможно без использования олли(ну через дизасму или CE)." - класс не найдёшь. Я так понимаю речь идёт о составлении описания игрового класса на С++. Если да, то описание класса подбирается только опытным путём. В машинном коде готового описания класса нет. >>Вот только как найти динамические данные в этом классе/структуре. Сканером памяти >>Как мне считать что-то из SetPosition? Если считывать данные методом привидения на С++, то приводишь твой класс составленный по наитию к адресу 0x41234. Как-то так: GameWorld gameWorld = (GameWorld)(DWORD* 0x41234); gameWorld.position = D3DVECTOR(0.0f, 0.0f, 0.0f); // начало структуры может соответствовать первым данным в нём. Но это не факт может быть и указатель на таблицу виртуальных методов(наследование виртуальных метдов в С++) или таблицу виртуальных классов(множественное наследование классов). Может быть и другая информация... Данные о классе подбираются или определяются опытным путем через сканер памяти, отладчик (работа инструкций с адресами определённого размера).
-
№18. Я не писал о решающем факторе как только о скорости выполнения. Я написал, что некоторые задачи VB.net быстрее и удобнее сделать и тогда его можно использовать. Вот это может быть решающим фактором. Речь в теме шла об обучении программированию от простого, а не от сложного. Асм и Си преподают в ВУЗ-ах. Ку-бейсик преподают в школах за его простоту. А то что один пользователь решил показать какой он продвинутый особенно в своём выборе это не значит, что остальные хоть на каплю должны бросить Small VB. Они должны подумать о том, что им даст это программа.
-
Извини, мне кажется ты просто написал лишь бы что написать как небрежное высказывание. Программа "Small Basic" имеет свой спектр задач и настолько проста, что учить её не требуется. Не нужно учить язык программирования - это не таблица умножения, это не цель, а средство выполнения задачи. Учить надо тогда, когда что-то делаешь медленно и чтобы не лазить по описаниям функций/операторов языка и т.п., то учишь их на зубок. ..просто пробежался по описаниям функций максимум 10-60 минут (последнее время уже для начинающих и не знающих языка). Посмотрел какие можно задачи решать. И если нужно эти задачи решить, то с успехом пользуешься. Документация по Си и Асм-у не позволит решить что-то так быстро как на "Small Basic". В свою очередь есть огромное количество задач, которые не удобно решать через "Small Basic" или не может решить "Small Basic".
-
Я с такими проблемами пока не сталкивался.
-
Я не искал в поисковике ответов. Я полез в MSDN по контролам. По информации из MSDN Я понял так. Пишешь функцию обработчика PreviewKeyDown Все контролы перебираешь и связываешь с этим обработчиком. private void Special_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { switch (e.KeyCode) { case Keys.Down: case Keys.Up: e.IsInputKey = true; break; } } После срабатывания Special_PreviewKeyDown фукус с элемента на элемент не должны перемещаться. Работает это или нет не знаю.