Garik66 Опубликовано 10 февраля, 2017 Поделиться Опубликовано 10 февраля, 2017 В 08.02.2017 в 18:42, pachela сказал: Поиск сразу заканчивается и ничего не находит. Показать pachela, я перечитал топик и результат пока нулевой. Думаю, что всё дело в нерабочей сигнатуре: В 06.02.2017 в 19:42, Garik66 сказал: И второе - ты уверен в своей сигнатуре? Показать В 08.02.2017 в 03:11, Garik66 сказал: Если твоя сигнатура рабочая, Показать Поэтому в начале докажи, что сигнатура у тебя рабочая - ну например запиши видео, как она у тебя находится. (лично я твою сигнатуру у себя не нашёл). Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 10 февраля, 2017 Автор Поделиться Опубликовано 10 февраля, 2017 В 10.02.2017 в 07:48, Garik66 сказал: pachela, я перечитал топик и результат пока нулевой. Думаю, что всё дело в нерабочей сигнатуре: Поэтому в начале докажи, что сигнатура у тебя рабочая - ну например запиши видео, как она у тебя находится. (лично я твою сигнатуру у себя не нашёл). Показать Кхм. Что за бред? Я первый кто заинтересован в работоспособности скрипта. Косяк вот в чем: С включенным СЕ трейнер работает, а когда конвертируешь в ЕХЕ - нет. Это все вина неправильной сигнатуры? Или все же это вина защиты процесса, который СЕ обходит путем инструментов ядра? Ссылка на комментарий Поделиться на другие сайты Поделиться
horror113 Опубликовано 10 февраля, 2017 Поделиться Опубликовано 10 февраля, 2017 проверил у себя с стандартным блокнотом в виндовс такая же проблема с процессом " notepad.exe " в самом се ищет сигнатуру " 3F 00 00 00 00 00 00 E0 " но после компиляции в exe пишет сигнатура не найдена проверял на играх все работает нормально Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 10 февраля, 2017 Поделиться Опубликовано 10 февраля, 2017 В 10.02.2017 в 11:53, horror113 сказал: в самом се ищет сигнатуру " 3F 00 00 00 00 00 00 E0 " Показать у меня по этой сигнатуре СЕ находит 109 адресов, правда У меня старая версия блокнота v5.8.7 (с руссификатором - английским не владею). Показать контент sl = AOBScan("3F 00 00 00 00 00 00 E0 "); if(sl == nil) then print("No code found!"); else j = stringlist_getCount(sl); print("Found:",j); for i = 1, j do print(stringlist_getString(sl,i-1)); end object_destroy(sl); end Found: 109 5F0F235F 68FE8B0F 70FF8CE7 70FFD2CF 70FFD2D7 70FFE66F 710060C7 7100A3AF 7100A3B7 7100C2CF 71024537 7106D59F 71070187 71074657 7107583F 71075847 71076F27 71077347 710781FF 7107D357 7380B27F 739D5F6F 739D8327 739DB887 739DC4DF 739DC4E7 739DD69F 739DDABF 739DDEFF 739E26A7 739E6047 739E8CBF 739E8CC7 739E9DFF 73A6A9AB 73A6B191 7400CFCF 74661271 74667987 74667AA7 7466A5B7 74677F3F 7467A70F 7467AB57 7467B03F 7467B047 7467DF1F 7467F387 7468192F 74751367 7485E60F 7493197F 74D272EF 74E98E0F 74E9B1CF 74E9E717 74E9F36F 74E9F377 74EA051F 74EA093F 74EA0D7F 74EA5517 74EA9127 74EAC63F 74EAC647 74EACE5F 74EB3BA7 74EB681F 74EB6827 74EB795F 74F43A9B 74F43CA1 76C4A92E 76C4A975 76C4A9BC 76C4AA03 76C4AA4A 76C4AA91 76C4FBAF 76C58CE7 76C59CFC 76C5A4AC 76C5B250 76C5B622 76C61D7D 76C61DC4 76C7542B 76C83F96 76C83FDD 76C84024 76C91151 76C92B56 76C92DFC 76C92E8A 76C941FA 76C944A0 76C9452E 76C975D5 76C99A31 76C99A78 76C9AC55 76C9AC9C 76CA380B 76CBA494 76CBCAB0 76CCDA24 76CD2D36 76CD58D0 773BD031 для блокнота виндос 10 нашлось 56 адресов: Показать контент Found: 56 7FFF3396A64F 7FFF35CA0357 7FFF363A836F 7FFF36B84617 7FFF36B8461F 7FFF36B847CF 7FFF36B847D7 7FFF36B8A34F 7FFF36B8A357 7FFF36B8A53F 7FFF36B8A547 7FFF36B8A667 7FFF36B8A6F7 7FFF36B8AA0F 7FFF36B9906F 7FFF36E0084F 7FFF370AD297 7FFF376F4587 7FFF3852B92E 7FFF3852B975 7FFF3852B9BC 7FFF3852BA03 7FFF3852BA4A 7FFF3852BA91 7FFF38530BAF 7FFF38539CE7 7FFF3853ACFC 7FFF3853B4AC 7FFF3853C250 7FFF3853C622 7FFF38542D7D 7FFF38542DC4 7FFF3855642B 7FFF38564F96 7FFF38564FDD 7FFF38565024 7FFF38572151 7FFF38573B56 7FFF38573DFC 7FFF38573E8A 7FFF385751FA 7FFF385754A0 7FFF3857552E 7FFF385785D5 7FFF3857AA31 7FFF3857AA78 7FFF3857BC55 7FFF3857BC9C 7FFF3858480B 7FFF3859B494 7FFF3859DAB0 7FFF385AEA24 7FFF385B3D36 7FFF385B68D0 7FFF38EB3477 7FFF398800CF может в этом всё дело? 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 13 февраля, 2017 Автор Поделиться Опубликовано 13 февраля, 2017 Разобрался. Просто нужно было включить инструменты ядра. Т.к. я не знал как это делается, потому тупняки и были. Итоговый скрипт имеет следующий вид Показать контент function CEButton1Click(sender) dbk_initialize() dbk_useKernelmodeOpenProcess() dbk_useKernelmodeProcessMemoryAccess() if (getProcessIDFromProcessName('notepad++.exe')==nil) then messageDialog("Запустите игру...",-1,0) return end openProcess('notepad++.exe') potok = createNativeThread(potokF) end function potokF(senderThread) results=AOBScan("0000000050C3000050C300000000000000000000000000000000000050C3000050C30000" ,"*W*C*X") if (results==nil) then messageDialog("Сигнатура не найдена...",-1,0) return end count=stringlist_getCount(results) for i = 0, (count-1), 1 do address =stringlist_getString(results,i) writeBytes(address,0xC0,0x5C,0x15,0x00,0x80,0xC3,0xC9,0x01) end while true do writeBytes(address,0xC0,0x5C,0x15,0x00,0x80,0xC3,0xC9,0x01) sleep(250) end end Теперь работает нормально. Естественно мне не нравится концовка, с цикличной перезаписью. Это все топорщина. Сейчас буду запиливать сигнатуру на инструкцию. P.s. Не знаю. правильно ли я сделал форматирование поста или нет. Тут с тегами черт ногу сломает. Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 14 февраля, 2017 Автор Поделиться Опубликовано 14 февраля, 2017 Как правильно в Lua обьеденить 2 АА скрипта с АОБ сканом в один скрипт? Для наглядности вот кусок моего кода, сделанный не грамотно конечно, но рабочий: Показать контент function CEButton2Click(sender) showMessage("Wait until the scan is complete. It may take several minutes!") AAScript = [[ label(attack_speed1) registersymbol(attack_speed1) aobscan(address,89 8C 87 68 0B 00 00) address_1: attack_speed1: db 90 90 90 90 90 90 90 ]] autoAssemble(AAScript) AAScript2 = [[ label(attack_speed2) registersymbol(attack_speed2) aobscan(address,89 84 0A 68 0B 00 00) address_2: attack_speed2: db 90 90 90 90 90 90 90 ]] autoAssemble(AAScript2) showMessage("Ok!") end Опять таки, тут 2 раза АОБскан находит сигнатуру и пишет в переменную. Могу ли я сделать уникальную переменную на весь свой трейнер, что бы потом использовать ее? Ну к примеру, у меня есть еще одна кнопка, где снова таки приходится использовать подобный код, дабы вернуть измененную инструкцию. Приложение огромезное, и АОБскан зависает на немалую минуту. Но зачем же сканировать постоянно одно и то же, если мы уже проводим сканирование и записываем в переменную? Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 15 февраля, 2017 Автор Поделиться Опубликовано 15 февраля, 2017 Спасибо Garik66, подсказал, объяснил. Продолжим дальше. Интересует теперь 2 вопроса: 1. Как узнать по средством Lua в какие адреса пишет инструкция? Вот в чем проблема, отладчик я подключить не могу, стоит защита и обойти ее у меня не получается. Вот я и думаю, сможет ли Lua каким то образом узнать значения регистра, высчитать адреса в которые идет запись и записать их в переменные? 2. Интересуют подробности работы с потоками. Т.к. везде одни и те же примеры, толком не пойму. А именно: Показать контент potok = createNativeThread(potokF) -- Так я создаю сам поток, что такое potok? Это переменная? Я могу называть ее как то иначе? Что такое potokF? и снова тот же вопрос. function potokF(senderThread) -- Тут ясно, что это сама функция потока. Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 20 февраля, 2017 Автор Поделиться Опубликовано 20 февраля, 2017 Может кто подсказать как реализуется, а то, что то у меня не получается. Сначала при помощи AOBscaner мы находим адрес. Записываем его в переменную. Теперь мне нужно отталкиваясь от этого адреса найти новые адреса. Ну т.е. добавить смещение. Я пытался так someVAlue = "address + 4" Пробовал разные вариации. И с одинарной кавычкой и с квадратными скобками и т.п. Но результат один: В нужный мне адрес запись не происходит! Запись в АА не предлагать, я это умею делать, но мне нужно произвести либо writeInteger, а в АА я этого не умею делать. Либо пересчитывать значение с Интеджера в байты, а это мне кажется задачка посложнее, чем задать смещение уже имеющемуся адресу. Ссылка на комментарий Поделиться на другие сайты Поделиться
srg91 Опубликовано 20 февраля, 2017 Поделиться Опубликовано 20 февраля, 2017 (изменено) В 20.02.2017 в 10:30, pachela сказал: Может кто подсказать как реализуется, а то, что то у меня не получается. Сначала при помощи AOBscaner мы находим адрес. Записываем его в переменную. Теперь мне нужно отталкиваясь от этого адреса найти новые адреса. Ну т.е. добавить смещение. Я пытался так someVAlue = "address + 4" Пробовал разные вариации. И с одинарной кавычкой и с квадратными скобками и т.п. Но результат один: В нужный мне адрес запись не происходит! Запись в АА не предлагать, я это умею делать, но мне нужно произвести либо writeInteger, а в АА я этого не умею делать. Либо пересчитывать значение с Интеджера в байты, а это мне кажется задачка посложнее, чем задать смещение уже имеющемуся адресу. Показать Адрес в памяти, даже если и выглядит как страшные "0x12345678" - по сути число. Если ты делаешь это через LUA то просто возьми и прибавь к нему смещение без кавычек: offset = 4 someAddress = mainAddress + offset Запись в память по этому адресу: writeInteger(someAddress, 666) Изменено 20 февраля, 2017 пользователем srg91 Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 20 февраля, 2017 Автор Поделиться Опубликовано 20 февраля, 2017 В 20.02.2017 в 10:43, srg91 сказал: Адрес в памяти, даже если и выглядит как страшные "0x12345678" - по сути число. Если ты делаешь это через LUA то просто возьми и прибавь к нему смещение без кавычек: offset = 4 someAddress = mainAddress + offset Запись в память по этому адресу: writeInteger(someAddress, 666) Показать Так тоже пробовал. И ничего не получается. И ошибку выдает, типа нельзя использовать в арифметическом уравнении нулевое значение. А происходит это все, я предполагаю, из-за того, что адрес найден и зарегистрирован в АА, а я его пытаюсь использовать в LUA. Показать контент function potokF(senderThread) autoAssemble([[ aobscan(address3,90 5F 01 00 50 C3 00 01 00 50 C3 00 00) registersymbol(address3) ]]) offset = 4 someAddress = address3 + offset end function CEButton6Click(sender) writeInteger(someAddress, 50) end Или я ошибаюсь? Ссылка на комментарий Поделиться на другие сайты Поделиться
srg91 Опубликовано 20 февраля, 2017 Поделиться Опубликовано 20 февраля, 2017 Смотри, ты регистрируешь этот адрес как символ, после чего можешь узнать его адрес через функцию getAddress: Попробуй сделать так: function potokF(senderThread) autoAssemble([[ aobscan(address3,90 5F 01 00 50 C3 00 01 00 50 C3 00 00) registersymbol(address3) ]]) offset = 4 someAddress = getAddress('address3') + offset end function CEButton6Click(sender) writeInteger(someAddress, 50) end 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 20 февраля, 2017 Поделиться Опубликовано 20 февраля, 2017 В 20.02.2017 в 15:03, pachela сказал: А происходит это все, я предполагаю, из-за того, что адрес найден и зарегистрирован в АА, а я его пытаюсь использовать в LUA. Показать Предположение не верно, просто где-то ошибаешься, Вот посмотри вчера записывал видео. Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 21 февраля, 2017 Автор Поделиться Опубликовано 21 февраля, 2017 В 20.02.2017 в 15:12, srg91 сказал: Смотри, ты регистрируешь этот адрес как символ, после чего можешь узнать его адрес через функцию getAddress: Попробуй сделать так: function potokF(senderThread) autoAssemble([[ aobscan(address3,90 5F 01 00 50 C3 00 01 00 50 C3 00 00) registersymbol(address3) ]]) offset = 4 someAddress = getAddress('address3') + offset end function CEButton6Click(sender) writeInteger(someAddress, 50) end Показать Вот с getAddress все работает замечательно. Для себя решил не делать лишние переменные типа offset, а сразу в присвоении переменной "someAddress" прибавлять нужное число. Не знаю, возможно это чем то чревато, но у меня работает. Теперь стал другой вопрос: В АА, в АОБскан нужно теперь вписать вместо адреса переменную, но переменной присваивается значение в LUA и когда я пишу Показать контент function potokF(senderThread) autoAssemble([[ aobscan(address3,SignaS) registersymbol(address3) ]]) end Естественно ничего не происходит... Может мне после присваивания переменной значения нужно как то регистрировать эту переменную? Ну как это делается в АА, registersymbol Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 26 февраля, 2017 Автор Поделиться Опубликовано 26 февраля, 2017 Очень интересный вопрос: Можно ли готовый ЛУА скрипт из СЕ, использовать вне СЕ? Ну т.е. взять LUA и переписать начисто в него весь скрипт и скомпилировать не в СЕ, а в LUA? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 26 февраля, 2017 Поделиться Опубликовано 26 февраля, 2017 В 26.02.2017 в 07:31, pachela сказал: Очень интересный вопрос: Показать pachela, как я понял, тебя сейчас больше интересует - защита своего трейнера, так что создай новый топик и копай уже в этом направлении. На форуме этот вопрос поднимался неоднократно и многие ребята в этом продвинулись. Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 26 февраля, 2017 Автор Поделиться Опубликовано 26 февраля, 2017 В 26.02.2017 в 08:17, Garik66 сказал: pachela, как я понял, тебя сейчас больше интересует - защита своего трейнера, так что создай новый топик и копай уже в этом направлении. На форуме этот вопрос поднимался неоднократно и многие ребята в этом продвинулись. Показать Ты прав от части. Но так как я любознателен, меня интересует не только защита, а еще и возможность использовать инструменты СЕ в других языках. Так как я уже немного понял суть LUA, будет логично, начать разбираться именно с этого языка. Пока что меня не интересуют развернутые возможности, меня интересует краткий ответ, которого я не нашел в гугле, можно ли инструменты СЕ использовать в сторонних языках? Главное меня интересует это использование режима ядра, драйвера СЕ. Просто: Да\НЕТ и линк на почитать. Ссылка на комментарий Поделиться на другие сайты Поделиться
pachela Опубликовано 12 марта, 2017 Автор Поделиться Опубликовано 12 марта, 2017 Всплыла новая проблема, реализовал я вот такую вот функцию: Показать контент Цитата autoAssemble([[ aobscan(address3,90 5F 01 ?? 50 C3 00 01 00 50 C3 00 00) registersymbol(address3) ]]) Показать Как мне записать в переменную значение четвертого байта? Просто раньше эта сигнатура не менялась и я все время выключал функцию заменяя NOP'ами, а включал тупо вернув значение байт. Теперь 4 байт каждый запуск приложения изменяется, так вот и вопрос, как записать в переменную либо значение 4 байта, либо значение последовательно какогото количества байт? П.с. На ногах уже больше 30 часов, мысли заплетаются, если не понятен вопрос, завтра уточню. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения