• Half Life build 12833965 | 25th Anniversary Update

    Таблицы
    1
    2 Голоса
    1 Сообщения
    221 Просмотры
    P
    Health (Здоровье) NoReload (Без перезарядки) Ammo (Боезапас) Granade (Гранаты) SuperJump (Супер прыжок) SuperCrowbar (Супер длинный лом) RapidFire (Быстрая стрельба) NoRecoil (Без отдачи) FlashLightBattery (Батарейка фонарика) OHK (Убить с 1 удара) SuperSpeed (Быстрый бег) Noclip (Полёт) hl.zip
  • Сборник английских словарей

    Перенесена Вопросы, обсуждения и предложения английский chatgpt ai
    1
    5
    0 Голоса
    1 Сообщения
    99 Просмотры
    MasterGHM
    Приложение называется 2books на GooglePlay. Там доступны словари часто повторяемых слов. Сгенерированы судя по описанию на ChatGPT. В Интернете можно также найти базы английских слов до 450К. Из словарей можно сделать свою какую-нибудь программу, которая поможет изучать английский язык... Если бы сделать такую игру, в которой изучение слов английского языка было целью прохождения, то, возможно, это было бы увлекательно и быстро запоминались слова. Скорее всего, такие игры уже есть, можно попрбовать поискать.
  • Эмулятор Android с root

    Перенесена Вопросы, обсуждения и предложения
    1
    0 Голоса
    1 Сообщения
    718 Просмотры
    MasterGHM
    Root Bluestacks 5 (No downloads, x64/x32) | LATEST | Working 2024 Если Вам нужен Root для Android, то скачиваем BlueStacks 5 (https://www.bluestacks.com/ru/bluestacks-5.html). Смотрим видео. Делаем root и дальше ищем гайды по хакам apk.
  • CE Dissect Data Scaner 1.0.2 (4 hardware breakpoints)

    CE Plugins
    6
    2
    0 Голоса
    6 Сообщения
    566 Просмотры
    MasterGHM
    Сегодя или завтра еще выложу исходники на другой аналогичный плагин (не новый). Там breakpoint на область памяти (на структуру). Но это все старые иходники. Видео по нему у меня есть на yutube канале. Если, кто захочет усовершенствовать плагины, то, наверно, я могу создать отдельную ветку репозитория и кто-то сможет коммитить туда изменения. Аналогично используя форум и репозиторий возможна совместная разработка таблиц и исходников на CE для плагинов и для игр. Просто нужно чтобы, кто-то инициировал. Если, кто сможет организовать это все, то смогу дать необходимые права. Временм у меня к сожалению, не много. Но если что-то подсказать, то буду связи.
  • Нужен чита на урон

    Перенесена Вопросы, обсуждения и предложения
    6
    0 Голоса
    6 Сообщения
    463 Просмотры
    P
    Для Pitronic'а Привет Pitronic
  • Базовые уроки по node.js

    Перенесена Вопросы, обсуждения и предложения
    1
    0 Голоса
    1 Сообщения
    129 Просмотры
    MasterGHM
    Базовые уроки про backend на node.js (с первого урока). За 2 дня можно въехать в node.js вместе с сервером базы данных. Ну, конечно, это только для программистов, которые уже имели опыт на чем-то другом... #13 Уроки Node.js - Как подключить Bootstrap на Node.js и добавить запись в БД
  • CE Plugin: AA Maker 2.4.2

    Перенесена CE Plugins
    7
    2
    1 Голоса
    7 Сообщения
    613 Просмотры
    PitronicP
    Хотя можно добавить в это окно как на скриншоте я стрелкой показал. одновременно и имя в таблице и имя скрипта в асм.
  • Запустить активирющий скрипт CE 7.5

    Перенесена Статьи и видео ce aa active rec ce lua важно
    5
    1 Голоса
    5 Сообщения
    420 Просмотры
    MasterGHM
    Кнопка "^"
  • Выполнение команды lua на кнопках формы

    Перенесена Решенные Вопросы, обсуждения и предложения
    23
    0 Голоса
    23 Сообщения
    2k Просмотры
    PitronicP
    Может и я просто забыл. Всё равно работает.
  • Функция autoAssemble

    Перенесена Статьи и видео ce aa ce lua autoassemble
    2
    1 Голоса
    2 Сообщения
    2k Просмотры
    PitronicP
    Пользователь @MasterGH написал в Функция autoAssemble: // Скрипт похожий на таблицу АА Маленькое замечание. Два слеша используются для коментариев в асм. На луа используются пунктир не менее двух чёрточек. Если пользователь не разбирается, он не поймёт почему луа выдаёт ошибку. Тему поправил.
  • Сохранение данных в SQL Lite (пример)

    Перенесена Вопросы, обсуждения и предложения
    1
    0 Голоса
    1 Сообщения
    143 Просмотры
    MasterGHM
    В этом примере CE собирает статистику подключенного процесса присваивая рейтинг. Чем чаще процесс открыт, тем выше его рейтинг. c=createSQLite3Connection() c.DatabaseName = 'C:\\VPProjects.sqllite' c.Connected=true t=createSQLTransaction() t.SQLConnection=c t.Active=true tn=c.getTableNames() if #tn==0 then print("empty") c.ExecuteDirect([[ CREATE TABLE something ( 'id' INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 'processname' char(256) NOT NULL, 'rating' INTEGER); ]]) tn=c.getTableNames() if #tn==0 then error('no table created') end end print("tables:") local hassomething=false local i for i=1,#tn do print(tn[i]) if tn[i]=='something' then hassomething=true end end if hassomething then pn=process if (pn==nil) or (p=='nil') then pn='no process' end --check if pn is in the table, if so, increment rating, else add it q=createSQLQuery() q.SQLConnection=c q.SQLTransaction=t q.SQL.Text=string.format([[ Select * from something where processname='%s' ]],pn) --not secure, I know, just an example q.Active=true if q.RecordCount>0 then print("In the list") fields=q.Fields print("fieldcount="..fields.Count) local id=q.FieldByName('id').asInteger print("id="..id) local rating=q.FieldByName('rating') print("rating="..rating.asInteger) q.Active=false q.StatementType='stUpdate' q.SQL.Text=string.format([[update something set rating=rating+1 where id=%d]], id) q.ExecSQL() else print("Not yet in the list") c.ExecuteDirect(string.format([[insert into something(processname,rating) values('%s',1)]],pn)) end q.Active=false q.StatementType='stSelect' q.SQL.Text=[[select * from something]] q.Active=true count=1 print(string.format("RecordCount=%d", q.RecordCount)) while not q.EOF do print("line "..count) local i for i=0, q.Fields.Count-1 do print(string.format(" %s = %s", q.Fields[i].FieldName, q.Fields[i].Value)) end q.next() count=count+1 end q.Active=false q.destroy() else error("something doesn't exist") end t.Commit() t.Active=false c.Connected=false t.destroy() c.destroy() Для чего можно использовать базы данных? для хранения большого количества связанных данных. Например, это хранение данных анимаций и костей. Т.е. можем записывать анимации персонажей, присваивать имя анимации, идентификатор. Дублировать, менять на свои. Записывать и менять конфигруации песонажей Записывать позиции, углы камер или персонажей Делать карту с описаниями, какой npc, где расположен, какой инвентарть и т.п. и менять его Теоритически базу можно использовать удаленно на через сервер базы данных, а модфицированные клиенты могут синхронизироваться. Фактически из сингла можно сделать мультиплеер. Или же взять клиент игры и сделать в нем свою базу для игры в сингле (для себя к примеру) А для чего еще можно использовать базу данных? Если кто знает или есть идеи, то можно вместе обсудить.
  • Как добавлять видео ролики

    Новости
    2
    0 Голоса
    2 Сообщения
    165 Просмотры
    MasterGHM
    Пример со спойлером ||https://www.youtube.com/watch?v=ATtIG64kKGU||
  • Как менять цвет текста

    Новости
    1
    1
    0 Голоса
    1 Сообщения
    92 Просмотры
    MasterGHM
    Теперь можно изменить %(#d20f0f)[цвет сообщения].
  • Как делать Spoilers и д.р.

    Новости
    1
    0 Голоса
    1 Сообщения
    92 Просмотры
    MasterGHM
    Для компактности можно скрывать под спойлером . ||Сообщение под спойлером|| Еще возможности...
  • CE Action Logger 1.0 Beta

    CE Plugins
    4
    1
    0 Голоса
    4 Сообщения
    299 Просмотры
    MasterGHM
    Отправил
  • Безусловные и условные пыжки.

    Перенесена Статьи и видео
    1
    1 Голоса
    1 Сообщения
    192 Просмотры
    PitronicP
    Иногда код ассемблера необходимо с делать с условием пример фильтр свой чужой. Реализовать это можно сравнением двух адресов и задать условие. Сравнение задаётся командой cmp, после которой идёт условие прыжка , после которого выполняется ваш код. пример мы нашли смещение от адреса число которое равно 1 от начала структуры адреса игрока и нам надо если оно равно чтоб здоровье было больше. и так пишем наш код. cmp [eax+1234],1 // сравнили наш адрес фильтра с единицей jne code // если не равно прыжок на метку code mov [eax+40],#99999 // а если равно кроме метки code могут быть безымянные метки @F прыжок в перёд @B прыжок назад пример cmp [eax+1234],1 // сравнили наш адрес фильтра с еденицей jne @F // если не равно прыжок в перёд mov [eax+40],#99999 // а если равно также есть чистая безымянная метка которая позволит сделать два условия @@: безымянная метка пример с этим же кодом cmp [eax+1234],1 // сравнили наш адрес фильтра с единицей jne @F // если не равно прыжок в перёд mov [eax+40],#99999 // а если равно @@: // прыжок на безымянную метку mov [eax+40],0 // если [eax+1234],1 не равен это наш враг и с метки @@: не наш игрок умирает Теперь таблица условных прыжков и переходов: JA прыжок, если выше JAE прыжок, если выше или равно JB прыжок, если ниже JBE прыжок, если меньше или равно JC Прыгает, если перенос JCXZ прыжок, если равно нулю JE прыжок, если равно JG прыжок, если больше JGE прыжок, если больше или равно JL прыжок, если меньше JLE прыжок, если меньше или равно Прыжок JNA, если не выше JNAE прыжок, если не выше или не равно Прыжок JNB, если не ниже JNBE прыжок, если не ниже или не равно Переход JNC, если не выполняется перенос JNE прыжок, если не равно Переход JNG, если не больше JNL прыжок, если не меньше JNO переходит, если не переполнено JZ прыжок если равно нулю.
  • Ваши группы пользователей

    Не решенные Новости
    5
    1
    0 Голоса
    5 Сообщения
    307 Просмотры
    MasterGHM
  • CE Lua Крестики и нолики

    Перенесена Вопросы, обсуждения и предложения
    1
    1
    0 Голоса
    1 Сообщения
    84 Просмотры
    MasterGHM
    Крестики и нолики.CT Игра с рандомом. Есть счет. Запускается через таблицу в аттаче. Здесь мог быть AI на Lua, возвращающий номер клетки от 1 до 9. function InputAI() -- рандом return math.random (1, 9) end player1Symbol = '1' player2Symbol = '0' whoStep = 0 player1Score = 0 player2Score = 0 function InputAI() -- рандом return math.random (1, 9) end \-- Проверка правил function caheckRules(symbol) -- Комбинации выигрыша local tableRules = { {1,2,3}, {4,5,6}, {7,8,9}, -- горизонтальные клетки {1,4,7}, {2,5,8}, {3,6,9}, -- вертикальные клетки {1,5,9}, {3,5,7} -- клетки по диагонали } -- Результат проверки клеток local mask = [[ return UDF1.CEButton%s.Caption == 'symbol' and UDF1.CEButton%s.Caption == 'symbol' and UDF1.CEButton%s.Caption == 'symbol' ]] for i = 1, #tableRules do local luaStringCode = mask:format(tableRules[i][1], tableRules[i][2], tableRules[i][3]):gsub('symbol', symbol) if loadstring (luaStringCode)() then return true end end return false end function StartGame() whoStep = 0 for i = 1, 9 do loadstring ('UDF1.CEButton'..i..'.Caption = ""')() end end \-- 1 - ход сделан, 0 - ход не удался function Input(indexInput) if loadstring ('return UDF1.CEButton'..indexInput..'.Caption')() ~= '' then return 0 end local writeSymbol = player1Symbol if whoStep == 0 then whoStep = 1 else whoStep = 0 writeSymbol = player2Symbol end local s = 'UDF1.CEButton'..indexInput..'.Caption = '..writeSymbol loadstring (s)() local somebodyWinner = false if caheckRules(player1Symbol) then player1Score = player1Score + 1 UDF1.CELabelScore.Caption = player1Score..':'..player2Score ShowMessage('Player1 is winner!') somebodyWinner = true elseif caheckRules(player2Symbol) then player2Score = player2Score + 1 UDF1.CELabelScore.Caption = player1Score..':'..player2Score ShowMessage('Player2 is winner!') somebodyWinner = true end -- Если кто-то выиграл, то очистить поле if somebodyWinner then StartGame() return 1 end -- Проверка ничьи local countEmpty = 9 for i = 1, 9 do if loadstring ('return UDF1.CEButton'..i..'.Caption ~= ""')() then countEmpty = countEmpty - 1 end end if countEmpty <= 0 then UDF1.CELabelScore.Caption = player1Score..':'..player2Score ShowMessage('Friendship!') StartGame() return 1 end -- Ходит IA if whoStep == 1 then ::repeat1:: local index = InputAI() if Input(index) == 0 then goto repeat1 end end end function CEButtonClick(sender) Input(tonumber(sender.name:match('%d'))) end function MenuItem1Click(sender) player1Score = 0 player2Score = 0 UDF1.CELabelScore.Caption = player1Score..':'..player2Score StartGame() ShowMessage('Restart!') end UDF1.show()
  • CE Stack Viewer

    CE Plugins
    1
    1
    0 Голоса
    1 Сообщения
    101 Просмотры
    MasterGHM
    Информация о файле Назначение Плагин позволяет в реальном режиме игры наблюдать за стеком на определенной инструкции отладочного кода. Это в свою очередь позволяет в окне расструктуризации данных "Dessect Data Structure" сравнивать старые и текущие структуры стека в реальном режиме игры, наблюдать за появлением красных данных и обращать на них особое внимание. Красные данные показывают чем отличаются стеки при действиях в игре. Например, выстрелив один раз и выстрелив следующий раз можно увидеть отличия красным цветом в стеке в реальном режиме. Это могут быть не только изменения патронов, но и чего-то другого, когда уже стреляем другим оружием. Важно то, что можно видеть изменения в реальном времени, а не по копиям стека, которые приходилось раньше снимать много раз. Мы можем видеть как часто по времени что-то меняется, все в динамике... Есть у меня сомнения по поводу постоянного ESP сравнения, при котором происходит "наблюдение" за стеком, но пока оставлю как есть. Установка Распаковать файлы архива в директорию "autorun". Например, C:\Program Files (x86)\Cheat Engine 6.4\autorun Краткое руководство Запускаем игру Находим адрес параметра Ставим брейкпоинт на адрес и появляются инструкции (или что-то делаем в игре чтобы инструкции появились) Выделяем инструкцию, которую требуется исследовать Останавливаем отладку Открываем Stack Viewer из окна Дизассемблер-> Tools->* Stack Viewer [Plugin] и переносим в ESP, EIP (или RSP, RIP) в поля окна Stack Viewer. Нажимаем галку "Is Active" и идем в игру, и если надо что-то делаем в игре, потому что инструкция должна выполниться хотя бы один раз чтобы заполнить дамп стека в реальном времени Открываем окно расструктуризации и пишем метку "MemStackRunTime" (или другую) и делаем расструктуризацию. Открывает плагин Tiny Dumper и клонируем "MemStackRunTime" в другую метку "StackDump1" (или другую). Теперь у нас в окне две структуры: с разовой копией и постоянно обновляющейся копией стека. Идем в игру и повторно делаем какие-то действия при этом наблюдаем за окном расструктуризации. Если в окне красные данные не появились, то следует проскролить структуру ниже. Если красные данные появились, то можно повторить действия в игре и пронаблюдать в реальном режиме закономерность изменения красных данных и частоту их изменения. Возможно найдутся интересные зависимости связанные с каким-то действием в игре. Если красных данных не нашлось, то никаких изменений в стеке не было. Попробуйте сделать что-то другое. Для остановки наблюдения за стеком выключаем галку "Is Active"
  • CE Tiny Dumper

    Перенесена CE Plugins
    2
    1
    0 Голоса
    2 Сообщения
    158 Просмотры
    MasterGHM
    Пошаговое руководство по Tiny Dumper В этом руководстве по шагам описано как снять дамп со стека и раструктуризовать его. Если лень читать, то предлагаю посмотреть хотя бы последний скрин. Там можно увидеть результат. Это самый важный скрин. Перед запуском CE устанавливаем файлы плагина в папку autorun (frmTinyDumper.xml и TinyDumper.lua) Запускаем игру например "Painkiller - Battle out of Hell 1.64" поставленная в оконный режим через 3DAnalyze. Оконный режим ставить обязательно, т.к. будет пошаговая отладка. В противном случае игра зависнет, а с CE рабтать нельзя будет Запустить CE с установленным плагином и подключиться к игре Ищем адрес здоровья (или брони, или патронов), тип Double (8 байт) 0x24571EA8 = 99.2900238037109 Ставим бряк на доступ или на запись на адрес 0x24571EA8 Идем в игру и встаем под удар персонажем Появляются инструкции и там же нажимаем на кнопку Stop, чтобы бряки не мешались в окне бряков Берем например инструкцию 1015C194 - 89 53 08 - mov [ebx+08],edx По ней идем в дизассемблер и на инструкции жмем F5 - установка бряка на доступ Открываем окно бряков, выделяем инструкцию и пишем условие на прерывание с остановкой процесса EBX==0x24571EA0 (это условие взяли, потому что ebx находится в инструкции, а значение взяли EBX из отладчика) Нажимаем Ок, идем в игру 9. Видим, что произошла остановка игры 10. Открываем окно ТиниДампера Пишем значение регистра esp и название будущей зарегенной метки Нажимаем "Dump and Close" и CTRL+U чтобы видеть под рукой зареганные ваши метки Открываем окно расструктуризации CTRL+D и пишем метку в свободное поле Далее следуем действия как на рисунках Наконец результат Не только сохраняются данные, которые пропадут на следующий такт процессора, но и расструктуризовали и можем сравнивать эти данные с другими дампами стека. Зачем, как и для чего это выходит за рамки этого руководства. Сейчас процесс игры остановлен на бряке кода. Чтобы продолжить игру. Удаляем бряк из окна бряков и отпускаем игру по F9. Теперь снимаем другие дампы на том же адресе для адресов здоровья врагов на предмет отличиях их или для поиска указателей... Во всяком случае сохраненный дамп может дать какие-то подсказки и зацепки. Главное не начать новый уровень игры или не загружать сохранения, т.к. обычно при переходе на новый уровень данные могут измениться... На этом пока все ----- Tiny dumper 1.2 Сравнение структур после перезагрузки. Поиск фильтра свой-чужой-дружественый Запускаем игру, запускаем CE и присоединяем процесс игры к CE Сохраняем игровой слот перед тем как искать структуры Находим три структуры игроков: свой игрок, дружественный, враг Дампим три структуры из пункта 3 указывая: базовый адрес структуры, уникальную метку Игру закрываем, снова открываем, загружаем слот, присоединяем процесс игры к CE В Tiny dumper 1.2 вызываем контекстное меню правой кнопки мышки и вызываем опцию "Rewrite dumps" - дампы из кеша перезаписываются в память в процесса игры Снова находим три структуры игроков: свой игрой, дружественный, враг В окне расструктуризации создаем три группы Группа1 "Свой игрок": -адрес после перезагрузки -метка из тини дампера своего игрока до перезагрузки Группа2 "Чужой игрок": -адрес после перезагрузки -метка из тини дампера чужого игрока до перезагрузки Группа3 "Дружественный игрок": -адрес после перезагрузки -метка из тини дампера дружественного игрока до перезагрузки Если повезет, то находим фильтр - фиолетового цвета строка. Если филетовых строк несколько, то запоминаем их смещения и значения на всякий случай Пишем АА-скрипт со смещением фильтра. Правильно написанный АА-скрипт не будет крешить игру. Активируем АА-скрипт и проверяем в игре, что свой и дружественный игроки не получают урон, а вражеские получают урон. Если это не так, то берем другие смещения из пункта 9 и повторяем 10. Если фильтр найти не удалось, то ищем 3 многоуровневых указателя до верхего статического адреса для своего, для 2-х врагов. Открываем Structure Spider. Указываем в поиске уровень вложенности указателей. Попеременно вводим два статических адреса - начала структур своего и чужих игроков. Правило поиска выбираем исходя из типов игроков. Если это свой и чужой, то искать отличные. Если это чужой и чужой, то искать одинаковые. Перезапускам игру и опять проделываем эти действия. Если не нашлось ничего, то что-то делали не так или отличия между группами игроков нет. Однако графический интерфейс обычно связан только с нашим героем и не связан с другими. Поэтому по связи GUI как минимум фильтр свой-чужой можно сделать всегда. Что касается дружественных игроков, то нужно будет исследовать более углубленно.