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

MasterGH

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

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

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

    129

Сообщения, опубликованные MasterGH

  1. Сообщаю Xihpo и Kvazimado и всем о том, что я переместил форум "Видео обмана игр всех категорий" на самую первую строчку на нашем форуме, т.к. посчитал, что это наиболее важный и интересный вид информации по созданию читов особенно для тех кто первый раз приходит на наш форум. Этому форуму явно не место где-то в месте после середины сайта форума GameHackLab.

    Так же я надеюсь, что будет увеличиваться количество тем в этом форуме и  что многим захочется что-то там написать и оставить после себя. Чем более мы будем известными на ютубе, тем больше найдём "талантливых людей", которые возможно пожелают сделать что-то интересное или полезное.

  2. Какая игра ?

    Очень правильный вопрос. И если автор темы не ответит на него, то все будут заниматься "угадыванием".

    Очень сомневаюсь, что автора интересуют сингл-игры, потому что свою проблему он преподнёс, как будто знает метод для хака сетевых игр с помощью подмены сетевых данных сниферами.

  3. Я посмотрел. Твой трек музыки битый. Поменяй на на другой трек музыки. Переименуй в ресурсах трек музыки таким образом чтобы не было пробелов в его имени.

    Измени строку (например):

    XMFILE = findTableFile('AGAiN_AutoShutdown_kg_xm')

    xmplayer_playXM(XMFILE

    И наконец самое важное. Посмотри у тебя два раза реализована функция onOpenProcess. Тебе нужна одна:

    function onOpenProcess(processid)
    xmplayer_stop()
    control_setCaption(UDF1_someLabel, "Process is exist")
    end

    Сделай все изменения в своём 1.CT и выбери сохранить из главного меню. А там выбери сохранить как Stand Elone *.exe

  4. На CE 6.2 Beta 3 я написал твой код. Создал форму и на форме label с именем someLabel. Изменил название процесса на котором тестировал. В опциях главного окна выбрал сохранить. Далее сохранить как. Далее указал добавить xm проигрывание... И всё работает. Когда происходит присоединение к процессу, то label корректно отображает подключение к процессу "Process is exist"

  5. MasterGH а как же Keng?! Благодаря ему я теперь быстрее нахожу то что мне нужно,благодаря ему я увидел много плюсов энжина и научился делать много интересных вещей. Да и думаю не только я один такой. Он очень хорошо объясняет простыми словами сложные вещи. Он автор многих видеоуроков по взлому игр.Да еще он и автор и реализатор интересных идей и по кримсонлэнд и по другим интересным вещам! Ему только за это надо +50 поставить.

    Xipho хотел сделать поддержку наград за особые заслуги. Это будет правильнее чем добавлять скопом баллы репутации. Когда талантливых пользователей около 10, то уже забываешь за что наградил их большим количеством баллов. Поэтому лучше баллы увеличивать за информацию в постах. А за особые заслуги, такие как активность, индивидуальность и т.п. лучше давать награды в виде какой-то медальки или какой-то картинки с надписью.

    Ну и ты Мастер тоже хорош! Мне помогли твои статьи по взлому. Тебе тоже бы +50 :-D

    P.S. Keng и MasterGH продолжайте в том же духе по статьям и урокам. Дай Бог вам ума,сил и здравия!!!

    Особенно понравилось, дай Бог нам ума. Дай Бог нам его побольше, т.к. видимо не хватает :grin:

  6. ce_luasocket.rar

    Исходник:

    luasrc.rar

    Теперь удобным образом можно производить сетевые соединения ftp, http, smtp прямо из Lua кода.

    Если правильно всё установить, то можно например сделать так

    http = require("socket.http") 
    print(http.request("http://forum.gamehacklab.ru"))

    И в lua консоли увидим кодовую разметку главного страницы нашего форума.

    Файлы распаковать в папку Autorun.

    -----------------------------------------------------

    1) Я думаю каким-то образом можно отправлять сообщения на некоторый почтовый адрес, о том что пользователь получил какую-то критическую ошибку (типа баг репорта);

    2) Можно скачивать какой-то контент для работы CE скриптов, который постоянно лежит на каком-то адресе ftp или html;

    3) Можно сделать что-то на подобии автоматического обновления;

    4) В общем можно много чего придумать, если фантазия позволит; 

  7. Я провел эксперимент и вот что получилось.
    Некоторые компоненты главной формы могут мешать, когда у нас уже есть готовая таблица. Поэтому хорошо бы иметь возможность как скрывать так и показывать то, что порой мозолит глаза.

    post-3-1329885123,35_thumb.png

    post-3-1329885133,15_thumb.png

    Чтобы это сделать добавьте Lua-код при запуске программы:

    Спойлер

     

    function StateCompactCEWindow(state)
    	controlMainForm = getMainForm()
    	separator = wincontrol_getControl(controlMainForm,0)
    	Panel1 = wincontrol_getControl(controlMainForm,1)
    	Panel4 = wincontrol_getControl(controlMainForm,2)
    	Panel5 = wincontrol_getControl(controlMainForm,3)
    	control_setVisible(separator, state)
    	control_setVisible(Panel4, state)
    	control_setVisible(Panel5, state)
    end
    
    function CompactCEWindow()
    	menuItem_setCaption(newItem1, 'CompactView')
    	menuItem_onClick(newItem1, UnCompactCEWindow)
    	StateCompactCEWindow(true)
    	end
    	
    function UnCompactCEWindow()
    	menuItem_setCaption(newItem1, 'FullView')
    	menuItem_onClick(newItem1, CompactCEWindow)
    	StateCompactCEWindow(false)
    end
    ------------
    controlMainForm = getMainForm()
    
    formMenu = form_getMenu(controlMainForm)
    menuItem = menu_getItems(formMenu)
    newItem1 = createMenuItem(menuItem)
    menuItem_add(menuItem, newItem1) 
    
    UnCompactCEWindow()

     

    • Плюс 2
  8. Cheat Engine 6.2 Beta 5 (Tue Feb 14, 2012)

    Скачать

    Fixed some bugs, some dbvm improvements, and some minor changes What to test: Dissect structures Groupscan (normal and out of order) Pointerscan and rescan Lua functions (and d3d hook stuff) Ultimap (for those with dbvm compatible systems, dbgview results are prefered when there are bugs like not working at all) And basically everything else (adding/removing addresses, editing addresses, hovering the mouse over borders, etc...) Also, comment on stuff. If the workflow can be increase, let me know And don't hesitate to ask questions

    --------

    Some bugfixes (assembler, symbolhandler, rescan, ultimap and structures form) and minor improvements (ultimap and structures) added the best ever custom crosshair and added a translation example for the tutorial and showing how to use the new language.ini file

    Это не все изменения. На форуме CE около 8-страниц обсуждений, тестов и там могли быть ещё исправления. 

  9. >>Я вообще нуб в этом деле,мне с нуля надо,хотябы какую нибудь инструкцию на русском,как в артмани например

    А форум читать и сайт время не позволяет? А с переводчиком посидеть над справкой Cheat Engine тоже что-то мешает?

  10. 4 способа решения сделать так чтобы оружие стреляло:

    1) Найти код в процессе игры (некий switch), который говорит о том что будет/был выстрел. Ну и соответственно искусственно вызывать ветку кода поправив один или пару прыгов;

    2) WinAPI эмуляция ввода мышки (о ней уже писали - MSDN рекомендует обычно SendInput, а не mouse_event и не keybd_event ... и лучше всё-таки это делать через таймер, а не хуком в конец сцены (почему так лучше комментировать не буду, надо тестить));

    3) DirectXInput эмуляция ввода мышки;

    4) Эмуляция на уровне драйвера мышки (или клавиатуры)

    По всем методам можно найти не мало информации в Интернете.

    ------------------

  11. Я всё-таки Coder-у предлагаю сначала написать рабочий вариант на языке высокого уровня (С++) + WinAPI. Это нужно для того чтобы в упрощённом виде смотреть на жизненный цикл программы. И кстати его хорошо бы сначала спланировать.

    1) Спланировать жизненный цикл программы на WinAPI

    2) Написать по примерам на C++ желаемую программу

    3) Написать на FASM

    На С++ будет нагляднее, а на FASM код становится довольно ёмким.

    План:

    1) Создаём окно

    2) Цепляем к окну диалоговую функцию

    3) В диалоговой функции продуманно обрабатываем сообщения горячих клавиш и закрытие формы. При закрытии закрываем созданные дескрипторы(хендлы).

    4) Если нужно уведомление о том, что процесс найден, то создать таймер поиска процесса и обрабатывать сообщения таймера в диалоговой функции.

    5) Продумать логику поиска процесса. Ведь если процесс найден, то искать его вновь не нужно...

    Если по своему плану написать что-то на С++, то на FASM это будет переписать гораздо проще чем писать сразу на нём не имея ранее опыта ;)

  12.  Coder, пользуйся пошаговой отладкой в каком-нибудь отладчике для выявления проблемных мест. Когда не знаешь почему программа не работает пользуются отладчиком и документацией WinAPI функций под рукой.

  13. Группа Модератор (у нас это или СуперМодератор):

    1) Максимальное количество «+» к репутации, которое пользователь этой группы может поставить в течение 24 часов = 50

    2) Максимальное количество «-» к репутации, которое пользователь этой группы может поставить в течение 24 часов = 50

    Группа Разработчики:

    1) Переименована группа

    2) Отключена возможность менять ники у группы Разработчики (но оставлена у обычных пользователей в течении 30 дней)

    3) Отключена возможность ставить оценки. Этим будет заниматься Управляющий состав или в будущем дополнительные доверенные лица. Это мера от установки оценки клонами и недоброжелателями. Так же это мера от установки негативных оценок, количество которых может отправить пользователя в баню без ведома Управляющего состава.

    Всем желаю успехов.

  14. Проверь защиту памяти сигнатуры твоего кода

    AOBScan(signature, "+X-C-W")

    +X : поиск сигнатуры в памяти с правами "выполнения кода" (PAGE_EXECUTE)

    -С : исключить поиск сигнатуры в памяти с правами "копирования при записи" (PAGE_WRITECOPY)

    -W : исключить поиск сигнатуры в памяти с правами "записи данных" (PAGE_READWRITE)

    Совмещение прав это разная комбинация X,C,W со знаками *(поиск без разницы, может быть, а может и не быть), - (исключить поиск), + (включить в поиск)

    Атрибут защиты (регионов и в частности блоков)

    PAGE_NOACCESS

    Попытки чтения, записи или исполнения содержимого памяти на этой странице вызывают нарушение доступа

    PAGE_READONLY

    Попытки записи или исполнения содержимого памяти на этой странице вызывают нарушение доступа

    PAGE_READWRITE

    Попытки исполнения содержимого памяти на этой странице вызывают нарушение доступа

    PAGE_EXECUTE

    Попытки чтения или записи на этой странице вызывают нарушение доступа

    PAGE_EXECUT_READ

    Попытки записи на этой сфанице вызывают нарушениедоступа

    PAGE_EXECUTE_READWRITE

    На этой странице возможны любые операции

    PAGE_WRITECOPY

    Попытки исполнения содержимого памяти на этой странице выбывают нарушение доступа, попытка записи приводит к тому, что процессу предоставляется «личная» копия данной страницы

    PAGE_EXECUTE_WRITECOPY

    На этой странице возможны любые операции, попытка записи приводит к тому, что процессу предоставляется «личная» копия данной страницы

  15. >>и почему aobscan а не memscan_firstScan???

    Я брал aobscan потому что ему можно задавать меньше параметров чем для memscan функций

    Готовый ответ не только для тебя, но и для других людей, которые учатся работать с Lua-Engine


    autoAttachList = getAutoAttachList()
    stringlist_add(autoAttachList, processName);
    print('Программа начала искать процесс calc.exe')

    ------- Функция возвращаюся список строк (класс Strings или Stringlist) --------
    -- В списке строк находятся найденные адреса
    -- Список начинается с нулевого элемента
    -- В аргумент signature передаётся строка сигнатуры
    function GetAddressFromSignature(signature)
    local stringListAddresses = AOBScan(signature, "+X-C-W")
    if (stringListAddresses == nil) then
    messageDialog("Ошибка. Не найден адрес.\n\rТрейнер будет закрыт!",1, 2)
    onCloseClick(nil)
    else
    print('Сигнатура '..signature ..' найдена')
    end
    return stringListAddresses
    end

    ------- Функция записи строки байт по адресам из списка stringListAddresses -----
    -- stringListAddresses - класс Strings или Stringlist
    -- bytesString - строка байт вида 'xx xx xx'
    function WriteBytes(stringListAddresses, bytesString)

    lenghtLines = strings_getCount(stringListAddresses) - 1

    for i = 0, lenghtLines do
    address = stringlist_getString(stringListAddresses, i)
    -- применяем функцию автоассемблирования вида
    --[["
    Адрес:
    db 00 00 00 00 00 00 00 00
    "]]--
    AACode = address .. ':\r\ndb ' .. bytesString
    print('Собираюсь автоассемблировать:')
    print(AACode)
    autoAssemble(AACode)
    print('Запись по адресу '..address..' успешна!')
    end

    end

    --- Функции читов
    function No()
    WriteBytes(stringListAddresses,'33 33 33 33 33 33 E3 BF')
    end

    function Norma()
    WriteBytes(stringListAddresses,'9A 99 99 99 99 99 C9 3F')
    end
    ---------------

    -- Функция циклически вызываемая таймером
    function OnCheckHotkeys()
    -- Обработка клавиш CTRL+R
    if isKeyPressed(VK_CONTROL) and isKeyPressed(VK_R) then
    No()
    return
    end
    -- Обработка клавиши L
    if isKeyPressed(VK_L) then
    Norma()
    return
    end

    end

    ------------------
    print('Создаю форму и другие компонеты')
    formTrainer = createForm()
    form_onClose(formTrainer, onCloseClick)
    form_centerScreen(formTrainer)
    control_setCaption(formTrainer, "Process game is not exist")
    form_onClose(formTrainer, onCloseClick)

    infoLabel = createLabel(formTrainer)
    control_setCaption(infoLabel, "Key CTRL + R - ???\n\rKey ??? - ....")
    control_setPosition(infoLabel, 20, 10)
    setProperty(infoLabel, "Enabled", "false")

    function onCloseClick(sender)
    closeCE()
    return caFree
    end


    function onOpenProcess(processid)

    print('Найден процесс игры')

    print('Реинициализирую символы (необходимо для версии CE 6.1)')
    reinitializeSymbolhandler()

    print('Ищу сигнатуру 9A 99 99 99 99 99 C9 3F и сохраняю результат в глобальную переменную stringListAddresses')
    stringListAddresses = GetAddressFromSignature('9A 99 99 99 99 99 C9 3F')

    print('Запускаю таймер на обработку горячих клавиш с интервалом в 100 мс')
    hotKeyTimer = createTimer(trainerForm)
    timer_setInterval(hotKeyTimer, 100)
    timer_onTimer(hotKeyTimer, OnCheckHotkeys)
    print('Нажмите CTRL+R или L для активации и деактивации')

    print('Изменяю заголовок окна формы и активирую Label')
    control_setCaption(formTrainer, "Trainer Run ....")
    setProperty(infoLabel, "Enabled", "true")
    end
    processName = 'calc.exe'

  16. Вот одно из решений на Lua. При присоединении к процессу игры происходит запись в найденный второй адрес

    Скрытый текст
    
    ----------Lua XLIVE Disabled----------------------------------------
    function XliveVersion1()
    	signature_XLive = '8b ff 55 8b ec 83 ec 20 53 56 57 8d 45 e0'
    	indexAddress = 1 -- отсчёт идёт от нуля, т.е. 0 - это первый адрес, 1 - это второй адрес
    	address_XLive = ByteScan(signature_XLive, indexAddress)
    
    	AACode = address_XLive..[[:
    	ret 000c
    	]]
    
    	autoAssemble(AACode)
    end
    
    function ByteScan(signature, indexAddress)
      local results = AOBScan(signature, "+X-C-W")
      if (results == nil) then
        messageDialog("Ошибка. Не найден адрес.\n\rТрейнер будет закрыт!",1, 2)
        closeCE()
        return
      end
      local address = stringlist_getString(results, indexAddress)
      return address
    end
    
    ---------------------------------------------------
    
    function onOpenProcess(processid)
     reinitializeSymbolhandler()
     XliveVersion1()
    end

     

     

  17. Roman_design, все ответы здесь.

    Код

    results=AOBScan("9A 99 99 99 99 99 C9 3F B8 1E", "+W-C-X")
    FlCount = results_getCount

    Надо запускать уже тогда, когда процесс был подсоединён, а подсоединяется он в функции onOpenProcess.

    В версии CE 6.1 надо так же запустить reinitializeSymbolhandler().

    function onOpenProcess(processid)
    reinitializeSymbolhandler()
    results=AOBScan("9A 99 99 99 99 99 C9 3F B8 1E", "+W-C-X")
    FlCount = results_getCount


    SetHotKey(No, VK_R)--я так понял тут задается хоткей. А если мне нужно Ctrl+R например?
    SetHotKey(Norma, VK_V)

    control_setCaption(formTrainer, "Trainer Run ....")
    setProperty(infoLabel, "Enabled", "true")
    end

    Функция SetHotKey написана была мной специально для версии CE 6.1 чтобы обойти некоторый баг. Чтобы добавить ещё одну горячую клавишу, то нужно добавить в эту функцию ещё аругмент.


    function SetHotKey(func, hotkey, hotkey2)
    local objectHotKey = createHotkey(func, hotkey, hotkey2)
    generichotkey_setKeys(objectHotKey, hotkey, hotkey2)
    generichotkey_onHotkey(objectHotKey, func)
    end

    Вообще я этим методом регистрации горячих клавиш не пользуюсь. Здесь другой метод....

  18. KoBRaAndrey, ты просил ответить в эту тему. Отвечаю на вопрос:

    >> Как я могу переписать данный код в Delphi?

    Очевидно. Можно переписать изучив примеры исходников Cheat Engine, примеры создания трейнеров на Дельфи. Всё можно найти в Интернете включая документацию по Дельфи, WinApi и т.п. Если требуется готовое решение, то я им заниматься не буду ;)

×
×
  • Создать...

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

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