-
Постов
2 999 -
Зарегистрирован
-
Победитель дней
129
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные MasterGH
-
-
Сообщаю Xihpo и Kvazimado и всем о том, что я переместил форум "Видео обмана игр всех категорий" на самую первую строчку на нашем форуме, т.к. посчитал, что это наиболее важный и интересный вид информации по созданию читов особенно для тех кто первый раз приходит на наш форум. Этому форуму явно не место где-то в месте после середины сайта форума GameHackLab.
Так же я надеюсь, что будет увеличиваться количество тем в этом форуме и что многим захочется что-то там написать и оставить после себя. Чем более мы будем известными на ютубе, тем больше найдём "талантливых людей", которые возможно пожелают сделать что-то интересное или полезное.
-
Какая игра ?
Очень правильный вопрос. И если автор темы не ответит на него, то все будут заниматься "угадыванием".
Очень сомневаюсь, что автора интересуют сингл-игры, потому что свою проблему он преподнёс, как будто знает метод для хака сетевых игр с помощью подмены сетевых данных сниферами.
-
Я посмотрел. Твой трек музыки битый. Поменяй на на другой трек музыки. Переименуй в ресурсах трек музыки таким образом чтобы не было пробелов в его имени.
Измени строку (например):
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
-
Ну тогда можешь сохранить свою таблицу как *.CT и приаттачить её сюда. Возможно проблема легко решаема.
-
На CE 6.2 Beta 3 я написал твой код. Создал форму и на форме label с именем someLabel. Изменил название процесса на котором тестировал. В опциях главного окна выбрал сохранить. Далее сохранить как. Далее указал добавить xm проигрывание... И всё работает. Когда происходит присоединение к процессу, то label корректно отображает подключение к процессу "Process is exist"
-
MasterGH а как же Keng?! Благодаря ему я теперь быстрее нахожу то что мне нужно,благодаря ему я увидел много плюсов энжина и научился делать много интересных вещей. Да и думаю не только я один такой. Он очень хорошо объясняет простыми словами сложные вещи. Он автор многих видеоуроков по взлому игр.Да еще он и автор и реализатор интересных идей и по кримсонлэнд и по другим интересным вещам! Ему только за это надо +50 поставить.
Xipho хотел сделать поддержку наград за особые заслуги. Это будет правильнее чем добавлять скопом баллы репутации. Когда талантливых пользователей около 10, то уже забываешь за что наградил их большим количеством баллов. Поэтому лучше баллы увеличивать за информацию в постах. А за особые заслуги, такие как активность, индивидуальность и т.п. лучше давать награды в виде какой-то медальки или какой-то картинки с надписью.
Ну и ты Мастер тоже хорош! Мне помогли твои статьи по взлому. Тебе тоже бы +50P.S. Keng и MasterGH продолжайте в том же духе по статьям и урокам. Дай Бог вам ума,сил и здравия!!!
Особенно понравилось, дай Бог нам ума. Дай Бог нам его побольше, т.к. видимо не хватает
-
Исходник:
Теперь удобным образом можно производить сетевые соединения ftp, http, smtp прямо из Lua кода.
Если правильно всё установить, то можно например сделать так
http = require("socket.http")
print(http.request("http://forum.gamehacklab.ru"))И в lua консоли увидим кодовую разметку главного страницы нашего форума.
Файлы распаковать в папку Autorun.
-----------------------------------------------------
1) Я думаю каким-то образом можно отправлять сообщения на некоторый почтовый адрес, о том что пользователь получил какую-то критическую ошибку (типа баг репорта);
2) Можно скачивать какой-то контент для работы CE скриптов, который постоянно лежит на каком-то адресе ftp или html;
3) Можно сделать что-то на подобии автоматического обновления;
4) В общем можно много чего придумать, если фантазия позволит;
-
Я провел эксперимент и вот что получилось.
Некоторые компоненты главной формы могут мешать, когда у нас уже есть готовая таблица. Поэтому хорошо бы иметь возможность как скрывать так и показывать то, что порой мозолит глаза.
Чтобы это сделать добавьте 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
-
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-страниц обсуждений, тестов и там могли быть ещё исправления.
-
frm = createForm()
label = createLabel(frm)
-- 1 Сопособ для будущей CE 6.2
font = control_getFont(label)
font_setColor(font,'1000')
-- 2 Сопособ для будущей CE 6.2
intValueFont = getProperty(label, 'Font')
font = integerToUserData(intValueFont)
setProperty(font, 'Color', '1000')
control_setCaption(label, 'Red') -
-
Можешь поискать у нас на форуме темы по словам
"BitConverter" и "Convert"
А лучше сразу поищи информацию в MSDN
-
>>Я вообще нуб в этом деле,мне с нуля надо,хотябы какую нибудь инструкцию на русском,как в артмани например
А форум читать и сайт время не позволяет? А с переводчиком посидеть над справкой Cheat Engine тоже что-то мешает?
-
4 способа решения сделать так чтобы оружие стреляло:
1) Найти код в процессе игры (некий switch), который говорит о том что будет/был выстрел. Ну и соответственно искусственно вызывать ветку кода поправив один или пару прыгов;
2) WinAPI эмуляция ввода мышки (о ней уже писали - MSDN рекомендует обычно SendInput, а не mouse_event и не keybd_event ... и лучше всё-таки это делать через таймер, а не хуком в конец сцены (почему так лучше комментировать не буду, надо тестить));
3) DirectXInput эмуляция ввода мышки;
4) Эмуляция на уровне драйвера мышки (или клавиатуры)
По всем методам можно найти не мало информации в Интернете.
------------------
-
А искать текст в разных кодировках не пробовал?
-
Я всё-таки Coder-у предлагаю сначала написать рабочий вариант на языке высокого уровня (С++) + WinAPI. Это нужно для того чтобы в упрощённом виде смотреть на жизненный цикл программы. И кстати его хорошо бы сначала спланировать.
1) Спланировать жизненный цикл программы на WinAPI
2) Написать по примерам на C++ желаемую программу
3) Написать на FASM
На С++ будет нагляднее, а на FASM код становится довольно ёмким.
План:
1) Создаём окно
2) Цепляем к окну диалоговую функцию
3) В диалоговой функции продуманно обрабатываем сообщения горячих клавиш и закрытие формы. При закрытии закрываем созданные дескрипторы(хендлы).
4) Если нужно уведомление о том, что процесс найден, то создать таймер поиска процесса и обрабатывать сообщения таймера в диалоговой функции.
5) Продумать логику поиска процесса. Ведь если процесс найден, то искать его вновь не нужно...
Если по своему плану написать что-то на С++, то на FASM это будет переписать гораздо проще чем писать сразу на нём не имея ранее опыта
-
Coder, пользуйся пошаговой отладкой в каком-нибудь отладчике для выявления проблемных мест. Когда не знаешь почему программа не работает пользуются отладчиком и документацией WinAPI функций под рукой.
-
Группа Модератор (у нас это или СуперМодератор):
1) Максимальное количество «+» к репутации, которое пользователь этой группы может поставить в течение 24 часов = 50
2) Максимальное количество «-» к репутации, которое пользователь этой группы может поставить в течение 24 часов = 50
Группа Разработчики:
1) Переименована группа
2) Отключена возможность менять ники у группы Разработчики (но оставлена у обычных пользователей в течении 30 дней)
3) Отключена возможность ставить оценки. Этим будет заниматься Управляющий состав или в будущем дополнительные доверенные лица. Это мера от установки оценки клонами и недоброжелателями. Так же это мера от установки негативных оценок, количество которых может отправить пользователя в баню без ведома Управляющего состава.
Всем желаю успехов.
-
Проверь защиту памяти сигнатуры твоего кода
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
На этой странице возможны любые операции, попытка записи приводит к тому, что процессу предоставляется «личная» копия данной страницы
-
>>и почему 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")
endprocessName = 'calc.exe'
-
По сути проблема в том, что не закрывается дескриптор процесса игры. Возможно он и не создавался. Причины могут быть разные.
-
Вот одно из решений на 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
-
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Вообще я этим методом регистрации горячих клавиш не пользуюсь. Здесь другой метод....
-
KoBRaAndrey, ты просил ответить в эту тему. Отвечаю на вопрос:
>> Как я могу переписать данный код в Delphi?
Очевидно. Можно переписать изучив примеры исходников Cheat Engine, примеры создания трейнеров на Дельфи. Всё можно найти в Интернете включая документацию по Дельфи, WinApi и т.п. Если требуется готовое решение, то я им заниматься не буду
Обсуждение работы сайта и форума
in О работе сайта и форума
Опубликовано
Спасибо, keng.