Roman_design Опубликовано 3 февраля, 2012 Поделиться Опубликовано 3 февраля, 2012 Подскажите пожалуйста скрипт для хоткея.есть маска 00 00 00 00 00 4C AD C0 00 00 00 00 00 7C A5 40 00 00 00 00 00 00 49 40нужно найти ее и заменить все найденные на 00 00 00 00 00 89 B2 40 00 00 00 00 00 70 97 C0 00 00 00 00 00 00 49 40 по хоткею. После чего скомпилировать в ехе трейнер. Как это сделть?понял что это нужно делать через memscan_firstScan но как именно?Огромное спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 3 февраля, 2012 Поделиться Опубликовано 3 февраля, 2012 Если ты собираешься писать скрипт для СЕ - тогда для этого используется специальная команда aobscan. Читай хелпы к программе и наш форум, конечно же. Ссылка на комментарий Поделиться на другие сайты Поделиться
Roman_design Опубликовано 3 февраля, 2012 Автор Поделиться Опубликовано 3 февраля, 2012 Спасибо. Я порылся и нашел вот темку: поиск и замена значения по хоткеюПонимаю, что нужно как-то вставить код Beatle в форму от Andrey...Но как? Ссылка на комментарий Поделиться на другие сайты Поделиться
Roman_design Опубликовано 3 февраля, 2012 Автор Поделиться Опубликовано 3 февраля, 2012 вот попробовал сделать в меру понимания... но не пашет addresslist=getAddressList()results=AOBScan("9A 99 99 99 99 99 C9 3F B8 1E", "+W-C-X")FlCount = results_getCountfunction No()for i = 0, FlCount-1 do address=stringlist_getString(results,i) writeByteArray(address,"33 33 33 33 33 33 E3 BF B8 1E") endendfunction Norma() for i = 0, FlCount-1 do address=stringlist_getString(results,i) writeByteArray(address,"9A 99 99 99 99 99 C9 3F B8 1E") end object_destroy(results) results=nil showMessage("OK")endfunction SetHotKey(func, hotkey) local objectHotKey = createHotkey(func, hotkey) generichotkey_setKeys(objectHotKey, hotkey) generichotkey_onHotkey(objectHotKey, func)endfunction onOpenProcess(processid) SetHotKey(No, VK_R)--я так понял тут задается хоткей. А если мне нужно Ctrl+R например? SetHotKey(Norma, VK_V) control_setCaption(formTrainer, "Trainer Run ....") setProperty(infoLabel, "Enabled", "true")endfunction OnCloseTrainerForm(sender) closeCE() return caFreeendformTrainer = createForm(true)form_centerScreen(formTrainer)control_setCaption(formTrainer, "Process game is not exist")form_onClose(formTrainer, OnCloseTrainerForm)infoLabel = createLabel(formTrainer)control_setCaption(infoLabel, "Key R - ....\n\rKey V - ....")control_setPosition(infoLabel, 20, 10)setProperty(infoLabel, "Enabled", "false")listProcess = getAutoAttachList()strings_add(listProcess, "[i]название игры[/i].exe")--TRAINERGENERATORSTOP-- Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 4 февраля, 2012 Поделиться Опубликовано 4 февраля, 2012 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Вообще я этим методом регистрации горячих клавиш не пользуюсь. Здесь другой метод.... Ссылка на комментарий Поделиться на другие сайты Поделиться
Roman_design Опубликовано 4 февраля, 2012 Автор Поделиться Опубликовано 4 февраля, 2012 Вот что пробовал сделать. Пока результата 0. addresslist=getAddressList()function onOpenProcess(processid) reinitializeSymbolhandler() results=AOBScan("9A 99 99 99 99 99 C9 3F", "+W-C-X") FlCount = results_getCount --- может нужно так: FlCount = results_getCount() ? Или как-то подругому? SetHotKey(No, VK_F2)--я так понял тут задается хоткей. А если мне нужно Ctrl+R например? SetHotKey(Norma, VK_F3) control_setCaption(formTrainer, "Trainer Run ....") setProperty(infoLabel, "Enabled", "true")endfunction No()for i = 0, FlCount-1 do address=stringlist_getString(results,i) writeBytes(address,"33 33 33 33 33 33 E3 BF") -- правильно? или так нужно: "33","33","33","33","33","33","E3","BF" end showMessage("On") -- При нажатии хоткея это сообщение не показывает почему-то.endfunction Norma() for i = 0, FlCount-1 do address=stringlist_getString(results,i) writeBytes(address,"9A 99 99 99 99 99 C9 3F") end showMessage("Off") -- При нажатии хоткея это сообщение не показывает почему-то.endfunction SetHotKey(func, hotkey) local objectHotKey = createHotkey(func, hotkey) generichotkey_setKeys(objectHotKey, hotkey) generichotkey_onHotkey(objectHotKey, func)endfunction OnCloseTrainerForm(sender) closeCE() return caFreeendformTrainer = createForm(true)form_centerScreen(formTrainer)control_setCaption(formTrainer, "Process game is not exist")form_onClose(formTrainer, OnCloseTrainerForm)infoLabel = createLabel(formTrainer)control_setCaption(infoLabel, "Key R - ....\n\rKey V - ....")control_setPosition(infoLabel, 20, 10)setProperty(infoLabel, "Enabled", "false")listProcess = getAutoAttachList()strings_add(listProcess, "-- название игры --.exe")--TRAINERGENERATORSTOP-- Ссылка на комментарий Поделиться на другие сайты Поделиться
Roman_design Опубликовано 4 февраля, 2012 Автор Поделиться Опубликовано 4 февраля, 2012 и почему aobscan а не memscan_firstScan??? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 4 февраля, 2012 Поделиться Опубликовано 4 февраля, 2012 >>и почему aobscan а не memscan_firstScan???Я брал aobscan потому что ему можно задавать меньше параметров чем для memscan функцийГотовый ответ не только для тебя, но и для других людей, которые учатся работать с Lua-EngineautoAttachList = 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 stringListAddressesend------- Функция записи строки байт по адресам из списка 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..' успешна!') endend--- Функции читовfunction No() WriteBytes(stringListAddresses,'33 33 33 33 33 33 E3 BF')endfunction 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 endend------------------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 caFreeendfunction 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' Ссылка на комментарий Поделиться на другие сайты Поделиться
Roman_design Опубликовано 4 февраля, 2012 Автор Поделиться Опубликовано 4 февраля, 2012 Спасибо!! Почти работает. только маленькое но... не ищет 16битный код, который нужен Пробовал читэнжином найти - находит около 50 адрессов.меняю по хоткею через прогу - значения как были так и остались.Ищю чит энжином array of bytes. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 5 февраля, 2012 Поделиться Опубликовано 5 февраля, 2012 Проверь защиту памяти сигнатуры твоего кода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 На этой странице возможны любые операции, попытка записи приводит к тому, что процессу предоставляется «личная» копия данной страницы Ссылка на комментарий Поделиться на другие сайты Поделиться
Roman_design Опубликовано 5 февраля, 2012 Автор Поделиться Опубликовано 5 февраля, 2012 Ура!!! РАБОТАЕТ!!!! Спасибо огромное. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения