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

pachela

Пользователи
  • Постов

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

  • Посещение

Весь контент pachela

  1. Может кто подсказать как реализуется, а то, что то у меня не получается. Сначала при помощи AOBscaner мы находим адрес. Записываем его в переменную. Теперь мне нужно отталкиваясь от этого адреса найти новые адреса. Ну т.е. добавить смещение. Я пытался так someVAlue = "address + 4" Пробовал разные вариации. И с одинарной кавычкой и с квадратными скобками и т.п. Но результат один: В нужный мне адрес запись не происходит! Запись в АА не предлагать, я это умею делать, но мне нужно произвести либо writeInteger, а в АА я этого не умею делать. Либо пересчитывать значение с Интеджера в байты, а это мне кажется задачка посложнее, чем задать смещение уже имеющемуся адресу.
  2. Спасибо. Это все работает. Я впринципи правильно делал, просто, как оказалось, для сброса таймера, нужно перезапустить СЕ.
  3. Реализовал в трейнере так: И вот возникает логический вопрос: Как сделать так, что бы при запуске трейнера сразу не запускался таймер, а только после определенных манипуляций? Ну к примеру по нажатию кнопки.
  4. Попытался сделать. Но что то не пашет. В чем косяк? И еще, а как сделать смещение? В АА я делаю так А вот как делать в Lua, я так и не разобрался. Или нужно изгаляться?
  5. Собственно есть функция прекрасно работающая. Единственно "НО" - функция включается по нажатию хоткея и выключается по нажатию другого хоткея. А хотелось бы сделать, что бы функция выполнялась пока Хоткей удерживается. Вот эта часть кода Нажал 4 кнопку мышки - Инструкции занопились, 5 - вернули к оригиналу. На это не удобно.
  6. Спасибо Garik66, подсказал, объяснил. Продолжим дальше. Интересует теперь 2 вопроса: 1. Как узнать по средством Lua в какие адреса пишет инструкция? Вот в чем проблема, отладчик я подключить не могу, стоит защита и обойти ее у меня не получается. Вот я и думаю, сможет ли Lua каким то образом узнать значения регистра, высчитать адреса в которые идет запись и записать их в переменные? 2. Интересуют подробности работы с потоками. Т.к. везде одни и те же примеры, толком не пойму. А именно:
  7. Как правильно в Lua обьеденить 2 АА скрипта с АОБ сканом в один скрипт? Для наглядности вот кусок моего кода, сделанный не грамотно конечно, но рабочий: Опять таки, тут 2 раза АОБскан находит сигнатуру и пишет в переменную. Могу ли я сделать уникальную переменную на весь свой трейнер, что бы потом использовать ее? Ну к примеру, у меня есть еще одна кнопка, где снова таки приходится использовать подобный код, дабы вернуть измененную инструкцию. Приложение огромезное, и АОБскан зависает на немалую минуту. Но зачем же сканировать постоянно одно и то же, если мы уже проводим сканирование и записываем в переменную?
  8. Разобрался. Просто нужно было включить инструменты ядра. Т.к. я не знал как это делается, потому тупняки и были. Итоговый скрипт имеет следующий вид Теперь работает нормально. Естественно мне не нравится концовка, с цикличной перезаписью. Это все топорщина. Сейчас буду запиливать сигнатуру на инструкцию. P.s. Не знаю. правильно ли я сделал форматирование поста или нет. Тут с тегами черт ногу сломает.
  9. Кхм. Что за бред? Я первый кто заинтересован в работоспособности скрипта. Косяк вот в чем: С включенным СЕ трейнер работает, а когда конвертируешь в ЕХЕ - нет. Это все вина неправильной сигнатуры? Или все же это вина защиты процесса, который СЕ обходит путем инструментов ядра?
  10. Поиск сразу заканчивается и ничего не находит.
  11. Точно так как у тебя. Если зайти в настройки СЕ, "Дополнительно" и выключить нижние 3 галочки (первая у меня не включена, почему то включение этой галочки приводит к BSOD), то поиск вообще ничего не даст. Он не находит никаких значений вообще!!! Когда я пишу трейнер, то использую СЕ с включенными инструментами ядра и потому когда тестирую трейнер все пашет, а когда компилю, то инструменты ядра я не использую. Вот почему я думаю что из-за этого косяк. Но опыта у меня в этом маловато, потому прислушиваюсь к вашим словам.
  12. не. Не в этом дело. Оно как то сразу после нажатия на кнопку пишет что сигнатура не та. Даже не ищет, просто клац на кнопку, а он говорит фига! Попробовал вписать dbk_initialize(true). Но наверно эт не правильно. Хотя драйвер загрузило. Так же вместо OpenProcess использовал dbk_useKernelmodeOpenProcess(). Но походу тоже не правильно использовал. И я думаю что для полного набора инструментов нужно еще и dbk_useKernelmodeProcessMemoryAccess() использовать.
  13. На сегодня для меня самый подходящий код вышел вот такой вот: Одна проблема у него. Когда я генерирую трейнер и закрываю СЕ, то он не может найти сигнатуру! Хотя во время проверки в СЕ все идеально работает. Я предполагаю следующее: В СЕ включены инструменты ядра. В трейнере же я не включаю их. Может из-за этого быть косяк? // Читаем правила (особенно пункт 1.3 ) Garik66
  14. Такс. Ну вот бороздя просторы большого ютубо-гугла я нашел причину почему трейнер вешается при активации, а точнее решение. Это запускать сканирование в потоки. Как я понял, то у меня должен быть 1 поток. Сначала 1 поток сканирует сигнатуру и записывает адрес. Далее поток освобождается и мы можем снова его использовать, что бы запустить цикл перезаписи, если изменяется значение в адресе. Я все правильно понял?
  15. Спасибо. Действительно в исходнике который я выставил в начале темы было несколько недоделок. первая, это опечатки на которые как раз ты и указал. Сделал я эту ошибку т.к. когда просматривал видео, сразу пытался и писать код, а в видео автор сказал именно Нул! Это меня не удивило, т.к., по моему, в С+ есть Нул. Вторая недоделка это та, что автор видео в другом своем уроке сказал что в прошлом видео ошибся и забыл добавить openProcess(GameName). Это хорошо. И тут же сразу вопрос такой, имеет ли разница в скобочках? Двойные или одинарные ставятся? И еще, а можно ли в байтах обозначенных "??" ставить варианты, ну типа есть вариант что примерт такой вид или иной, но не совершенно иной? Возможно в виде переменной это обозначать? Ну это просто из любознательности, на последний вопрос можно ответить кратко: Да или Нет. И за это будет большое спасибо. Представленный тобой скрипт работает отлично! Спасибо большое. Теперь разобрался. Просто написано "open" и это смущает. Хотя в справке и написано "подключиться", но все же перевод технической документации бывает двоякий. Вот код который у меня вышел в результате, но я снова накосячил Код работает нормально, если не считать того печального факта, что СЕ со скриптом виснет наглухо. Я так понимаю что в конце нужно оставить только условие If not, а просто if убрать? // Читаем правила (особенно пункт 1.3 ) Garik66
  16. Уважаемый SnedS91 код приведенный мной ранее действительно взят как по идее рабочий из видеомануала по созданию сего именно кода. И потому то я понимаю, что в коде для чего нужно. Но вот беда в том, что работоспособность кода на видео не была показана!!! По поводу main.lua я знаю. Но вопрос то стоял по другому? Одно дело справочный материал на английском, а другое, когда на русском. По поводу возможности использовать в Луа сигнатуры с "??" нигде не встречал, посему и предположил что нельзя! Ну и в конце концов: Почему на офф-форуме СЕ люди подсказывают, помогают и объясняют, а тут только предлагают платные услуги и тыкают носом? Я не прошу написать мне сложную программу с кучей функций, GUI, БлекДжеком и проститутками, а всего навсего прошу подсказать где допущена ошибка, как ее исправить и как лучше внести коррекцию кода под себя. Человек который понимает в Луа, Си и хорошо знаком с СЕ, может решить эту задачку за 2 минуты! Я же возможно и могу решить эту задачку под посторонних подсказок, только на это уйдет уже не 2 минуты и скорее всего не 2 дня. Я уже давно не школьник, имею жену и ребенка. У меня нет такой роскоши как безграничное время! Лучше же когда мне знающий человек подскажет, я погляжу где я был не прав, сделаю выводы, положу полученное знание на полочку и перейду на следующую ступень, со следующим заданием и новой трудностью, которую возможно я решу сам, а возможно буду снова спрашивать "гуру".
  17. 1. Можно на русском, что делает openProcess()? Он создает процесс или переключается на него? 2. Сигнатура на 100% нужная. Первые 4 байта дублируются в конце сигнатуры всегда. Был бы код не на Луа, а на "С", при использовании патерна, я бы с 13 байта и по 0хА0 поставил бы "?", т.к. эти байты при определенных условиях могут изменяться. Но для начала нужно разобраться с "топорной" сигнатурой и не допускать изменения наличной сигнатуры. Т.е. пока я не захочу, эта сигнатура будет иметь именно такой вид.
  18. Есть скрипт и этот скрипт косячит. А если быть точным, то он в упор отказывается видеть процесс. Вот код скрипта Пока что не разбирал работоспособность скрипта дальше чем сообщение "Запустите процесс!". Что я делаю не так? П.с. Как использовать фуркцию memrec_freeze? Мне нужно что бы запись байт происходила в цикле, т.е. заморожено =). // Пользуемся тегами кода и спойлера (если код большой). Garik66. Пока устное предупреждение.
  19. К игре невозможно прикрепить отладчик! Ну никак, вообще!!! Так что инструкции и указатели не катят. Попытался раскидать по подгруппам, ничего не произошло. Так же пересчитывает все в одном типе=(. Хотя если взять и выделить нужные адреса и пересчитать, то все нормально. Странно это как то. Возможно и должно. Но нифига. А про какие это структуры вы рассказываете?
  20. Есть таблица в которой 4 адреса float и еще 3 адреса 4 байтовые. Когда я захожу в СЕ и нахожу первый адрес (тип float), скопировав его и нажав в таблице на первое значение и Recalculate new adresses. Все значения пересчитываются согласно размеру float и даже те значения, которые 4 байт!!! Суть вопроса в следующем: Можно ли как то сделать, что бы пересчет float значений был согласно размеру float, а 4 байтовые согласно 4 байтам? Сейчас приходится мне пересчитывать только 4 значения флоат, т.к. они находятся на больших расстояниях друг от друга, а потом вручную искать 3 адреса которые 4 байтовые. Это жутко не удобно и долго.
  21. Уроки то я посмотреть посмотрю, некоторые уже видел. Понимать, я от части понимаю, но не все. А по поводу того, что это не С++, почему придираешься? Найден код на буржуйском сайте в разделе С++ исходников. Да и язык похож на тот, который я сейчас учу, возможно это С, но не ++? П.с. Времени в обрез, если не сложно, можно ссылку на видеоуроки именно по этой теме?
  22. Нашел на одном буржуйском сайте исходник паттер сканер сигнатур. Functions.h Source.cpp Я с С++ знаком на уровне плинтуса (успел прочитать только 50 страниц Шилдт Г.С. С++ базовый курс). Но меня вот интересует этот код и хотелось бы его применить. Так вот. Что мне поменять и в какую сторону копать? Я так понимаю что мне нужно поменять в DWORD aAddy = FindPattern("s4client.exe", название моего клиента? Дальше "\xD9\x45\x57\x8B\x7C\x24\x14\x8D\x74\x24\x28\xE8\x00\x00\x00\x00\x5F\x5E\xB0\x01", тут количество байт можно грубо подставлять свои или еще где в коде нужно указывать это? И почему нет 0 пере х? Я на сколько понял, что в шестнадцатеричной системе байт должен выглядеть 0хАА, а тут хАА, где я не прав? Что это за секция? "xxxxxxxxxxxx????xxxx"); Что значит эта запись? Что за ххх и что за "???" ? Это я так понимаю, что отступ от найденной сигнатуры aAddy += 5;? Т.е. отступаем 5 байт и видим нужный нам адрес? Который и будет виведен в MsgBox? Далее, что это за опкод char OpCode[] = "\xDB\x45"? Зачем он нужен? И последнее, в этой инструкции WriteToMemory(aAddy, OpCode, 4); что значит цифра 4?
  23. Я тебе больше скажу, что за ольку, античит сразу банит и не важно какие плагины ставлю. А вот за дбг64 нет, но что первый, что второй, без SilentAttach и Scylla вообще не хотели видеть процесс. Сейчас посмотрю про паттерн и сканер сигнатур
  24. Хук стоит DbgUiRemoteBreakin его античит ставит на ntdll.dll, попробовал познакомиться с Идой и заглянул в ntdll.dll и по адресу хука увидел "Trap to Debbugger", а рядышком была еще одна занятная функция DbgBreakPointWithStatus@4 endp; sp-analys failed. короче если бы я был хорошим кодером, я бы попытался подставить в DbgBreakPointWithStatus положительный ответ. Предполагаю что возможно это помогло бы, но я не тру кодер. Так же еще раз вернусь к вопросу выше: можно ли опираясь на несколько соседних байт, которые имеют перманентные значения (либо содержат поинтеры, левые, но поинтеры, всегда одни и те же) найти нужный мне адресс, который находится всегда на одном и том же расстоянии от этих перманентных значений.
×
×
  • Создать...

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

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