Перейти к содержанию

MasterGH

Ветераны
  • Постов

    2 999
  • Зарегистрирован

  • Победитель дней

    129

Весь контент MasterGH

  1. В главном окне есть меню файла. В нем есть пункт генератора трейнеров.
  2. mylukov, установи CE 6.1 (уже не бета). Сделай таблицу и сгенерируй трейнер с кернел-дебагером. Трейнер получится не меньше 3 мб в *.exe-виде. В формате *..CETRAINER получится меньше, но пользователю нужно будет установить Cheat Engine.
  3. Попробуй в настройках указать другой отладчик. У тебя будет два варианта. Veh-дебагер и Кернел-дебагер.
  4. Учить вообще ничего не надо и стоит ли задаваться такими вопросами?. Надо сразу писать код по примерам и пытаться писать свой код. В это время голова будет запоминать то, что надо.
  5. >> Эм... да не, таблица по моему в файле есть, раз он спрашивает оставить ли её. Меня смущает сам факт этого вопроса, ведь если там нажать "No", то и изменений не будет. Раз вылазит такое сообщение, это странно. Наверняка, эту проблему можно решить. >>В общем, я решил, что для exe лучше в самом скрипте адреса считать, что бы не было этого вопроса. Как пожелаешь Главное, что работает. Могу только обратить твоё внимание, что в способе который я предложил уже встроена запись/заморозка значения по цепочке указателей с проверками можно ли прочитать адрес с каждого уровня указателя... И весь этот механизм уже готов. Надо узнать как его использовать из Lua вот и все. Но если это даётся с большими трудом, когда уже есть готовое решение, то может быть стоит этим и не заниматься. >> Про MHS я не в курсе(таких сокращений дико много, я не представляю о чём речь). MHS это программа аналогичная Cheat Engine, которая имеет приятные мелочи по исследованию Windows-процессов в частности по указателям... Только жаль не"понимает" инструкции процессора набора SIMD, а самое печальное почему-то давно не обновляется автором. Lua скрипт не может принимать параметры запуска. И зачем это надо? Можно сделать файл настроек и его Lua может читать и что-то делать. А лучше сделать не просто текстовый/бинарный файл настроек, а текстовый файл с .lua cо своими переменными, данными и кодом. По поводу реестра я более чем уверен, что можно читать ветки реестра, но только извратом используя автоассемблер и WinApi. << P.S Или может ну его на фиг, на каком-нить нормальном языке писать?.. Использовать ли тебе Lua для решения подобных задач я не знаю. Это твоё решение. Я Lua использую, потому что этот язык позволяет управлять Cheat Engine, создавать сценарии, формы, "трейнеры", читы и т.п. Всё это можно делать на любом другом языке программирования в Windows.
  6. Изменены правила публикации трейнеров. Пункты: 2.3 и 2.4
  7. <<А "return caFree" чего делает? Такой код генерирует генератор трейнеров. Поэтому я взял это на заметку. function CloseClick() closeCE() return caFree --onclick doesn't care, but onClose would like a result end Этот генератор сделал ДаркБайт и только он более точно знает, что делает этот код. Судя по комментариям вызов closeCE() видимо не всегда достаточно. Совершенно точно не скажу, но это вероятно завершение выполнение Lua кода с возвращением кода действия. --CloseAction types caNone=0; caHide=1; caFree=2; caMinimize=3; caFree, очевидно "точно высвобождает все ресурсы" в том числе и exe-трейнер, таймеры и т.п. Можно проверить на практике, но я этого пока не делал. Такой формат можно задать только в программе MHS. Этот формат довольно удобный и мне удобнее его писать. В CE надо задавать так как позволено. Я свой код не проверял. Я забыл, что при сохранении в exe запись в таблице не сохраняется. Её нужно добавить в генераторе трейнеров из главной таблицы CE и уже обращаться к ней. Попробуй сам разобраться... По-моему путь нужно задавать полный и уж точно через формат двойной косой черты. Попробуй поискать свой ответ здесь.
  8. Незарегистрированные пользователи теперь могут скачать файлы в форуме трейнеров.
  9. Можно сделать сохранив данные как .exe файл из меню главного окна. В этом случае будет автоматически выполняться встроенный Lua-код.
  10. Я тоже не знал как это сделать, но посмотрев здесь узнал:Создал дефолтную форму UDF1, едит и кнопку. И повесил обработчик на кнопку при клике (код ниже). При клике в лог выводиться текст из едита: function CEButton1Click(sender) txtBox = component_findComponentByName(UDF1, "CEEdit1") textValue = getProperty(txtBox, "Text") print(textValue) end UDF1 в этом случае это объект формы. Если объект формы неизвестен, то нужно использовать перебор форм по индексам от нуля до количества индексов всех форм связанных с Cheat Engine. getPropertyList(obj_class) создаёт список публичных свойств, среди которых можно найти свойство Text. Можно и не искать таким образом, а поискать названия свойств в дизайнере компонентов.
  11. Заготовка скрипта для ведения лога данных на функции TranslateMessage. Функция TranslateMessage переводит сообщения виртуальных клавиш в символьные сообщения. Символьные сообщения помещаются в очередь сообщений вызывающего потока для прочтения в следующий раз, когда поток вызовет функцию GetMessage или PeekMessage. Теория (на практике всю теорию не проверял, только где-то как-то кусками) В игре подгружаются модули dll, которые вызывают translateMessage. Например directXInput8 dll-ка вызывала эту функцию когда я кликнул левой кнопкой мыши по области окна игры. Я мог бы остановить текущую отладку в этот момент и повесить условный бряк уже на функцию обработки именно этого уже оттранслированного сообщения. Ведь именно его обработка это начало пути определённых действий в коде... концом пути уже будет бряк на некотором адресе. В OllyDbg можно найти развилку между начальным и конечным путями при автоматическом трейсинге по ретам. И уже на этой развилке хорошо думать, почему именно эта развилка кода имела место быть...
  12. Dark_XSM, вот Lua-код заготовка для решения твоей задачи.
  13. Ведение лога инструкций, которые работают с адресом, если в момент срабатывания бряка по адресу находится заданное вами значение. В моем примере выводятся инструкции, которые записывают значение 1080 типа Integer по адресу "Test.exe+5B5A4". Дальше смотрите код.
  14. Я думаю, что так лучше: [ENABLE] alloc(newmem,2048) label(originalcode) label(returnhere) newmem: cmp esi,[gta3.exe+4F609C] jne originalcode mov [esp+28],(float)0 originalcode: fcomp dword ptr [esp+28] fnstsw ax jmp returnhere "gta3.exe"+151C05: jmp newmem nop returnhere: [DISABLE] "gta3.exe"+151C05: fcomp dword ptr [esp+28] fnstsw ax dealloc(newmem)
  15. Да, это теоретически всегда "структура Игрока" или структура которая относится к Игроку. Обычно, я так и называю структуру в таких случаях - "Структура игрока". Она может быть твоего игрока, игроков-врагов и дружественных игроков. Структура - структура данных. Сама по себе она никому не нужна и ничего не делает. Это просто кусок или пласт данных бесхозно валяющихся в виртуальном адресном пространстве процесса игры. Самое важно то, как код процесса игры работает со структурой, тогда она уже не является бесхозной. При чём если заметна связь с твоим игроком, то скорее всего это основная структура данных Игрока. В сложном случае - не основная.
  16. Трейнермекеры (Разработчики) сталкиваются с ограничением. Им разрешено заливать за раз не более 2 мб данных на форум и файловый лимит 50 Мб. Почему такое ограничение и что делать в этом случае? В моей компетенции ответить только на последний вопрос - "что делать?". Если вы поклонник exe-трейнеров генерируемых на Cheat Engine, то Вам остаётся пользоваться архиваторами, а возможно ещё и CE 5.6.x версиями. В этом случае трейнер в архиве получается меньше 2 мб. И вы его можете заливать на хостинг форума. Тем не менее у вас остаётся следующая проблема. Что делать если Вы подошли к границе 50 Мб ведь это может случится. В этом случае вы можете: 1) Обратиться к Администрации (возможно мы увеличим предел) 2) Выкладывать ссылки на файлы сторонних хостингов (посоветовать какие-то конкретные хостинги я не могу) 3) Удалить/переделать часть ваших файлов (по себе знаю, это тягомотина) Сторонние хостинги обычно не хранят свои файлы бесконечно и могут их удалить. В этом случае наш хостинг более надежней. Подходя к концу этого поста подразумеваю, что каждый пользователь из группы трейнероделов один на один столкнётся с этой проблемой идеальное решение которой в принципе найти сложно. От себя советую все читы как минимум делать на АА-скриптах Cheat Engine файлами формата *.CT. Если есть опыт, то на Lua - формат *.CETRAINER. Последний формат более предпочтителен. Почему именно этот формат, то я об этом много раз писал и мне уже надоело. Если человек захочет чит, то он установит Cheat Engine и будет ей пользоваться. Ему надо сделать для этого несколько кликов мышкой. Остаётся проблема с картинками и музыкой, т.к. они занимают много места в трейнере. И в этом случае, пользователю важно не это. Ему важно запустить чит в игре. Тем не менее вы сами решайте что должно быть в вашем трейнере и как это будет выглядеть. К сожалению, легче справиться с этой проблемой тем у кого есть хорошие знания в создании скриптов и трейнеров.
  17. Пользователи теперь могут: - удалять свои сообщения - удалять свои темы - закрывать свои темы и открывать, если "случайно" закрыли
  18. Из текстового 16-ричного формата я перевожу. А там уже возможна ещё другая ошибка, нужно объявить переменную возвращающую значение: Dim lpNumberOfBytesWritten WriteProcessMemory(HL2WriteProcess.Handle, Convert.ToUInt32(AddressWith0X.Text, 16) as IntPtr, pBytes, pBytes.Length, lpNumberOfBytesWritten) На скрине ошибка по поводу pBytes. Я плохо знаю VB у меня он не установлен. Разберись почему pBytes вызывает ошибку. Поищи примеры... Я VB не использую и могу много чего насоветовать и это может быть неправильно.
  19. Я перепутал с другим языком и забыл параметр 16. Попробуй так. WriteProcessMemory(HL2WriteProcess.Handle, Convert.ToUInt32(AddressWith0X.Text, 16) as IntPtr, pBytes, pBytes.Length, 0)
  20. Нельзя "(IntPtr)" приводить к объекту класса "String". Так должно быть правильно, если имеем дело с 32-разрядной адресацией: VAM.WriteByte((IntPtr)(Convert.ToUInt32(BaseAddress.text)), byte.Parse(NewValue.Text.ToString())); Для кода ниже для AddressWith0X.Text аналогично: WriteProcessMemory(HL2WriteProcess.Handle, (IntPtr)(Convert.ToUInt32(AddressWith0X.Text)), pBytes, pBytes.Length, 0)
  21. "repe movsd" циклически перемещает данные 4-х байт из адреса EDI+ecx*4 в адрес ESI+ecx*4 уменьшая указанный ecx на единицу до тех пор пока ecx не будет равен нулю.
  22. Если ты это знаешь, тогда странно что ты не уверен в своих предположениях. Проверь их и ты узнаешь ответ по результату. Я твоей конечной цели не знаю и не вижу кода, и не могу сказать правильно или нет.
  23. Правильно я понял? Ты делал два дампа в режиме гибернации. Первый во время игры. Второй без игры. Первый тебе удалось сохранить. А когда ты делал второй, то ты не будил систему и подменил дампы. Затем включил и загрузился со второго дампа - с места где ты играл. Думаю здесь необходимо писать драйвер с прямым доступом к устройству жёсткого диска и оперативной памяти. Функции драйвера: создание "спячих" дампов так и их подмена. При чём получится так что система будет засыпать и просыпаться с другим дампом словно при изменении видео режима. Да-да, теоритически это можно сделать. Но я с драйверами операционной системы не имел практического опыта. И я этим заниматься не буду, т.к. всё моё время занято. Поищи информацию по поводу копирования и подмены системных файлов. Может быть уже кто-то написал драйвер с "программой" общения с этим драйвером...
  24. Действительно одного байта достаточно. Я не углядел. Что имелось ввиду под понятием "баланса" я не понял. К вылету приведёт, если код запишет не туда и не то, что надо. Тем кто не знает где прочитать информацию по цепочкам байтов - ссылка.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.