-
Постов
1 635 -
Зарегистрирован
-
Посещение
-
Победитель дней
55
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент keng
-
Привет! Попробуй выключить опцию "Fast Scan", а три галочки над ней ("Writable", "Executable", "CopyOnWrite") поставить в "среднее" положение - когда там квадратик.
-
Буквально вчера вечером наблюдал картину, как три гостя весело тусили на странице регистрации. Проблема в том, что тусили они там минут 40, так что я больше склоняюсь к тому, что это боты.
-
Любой может писать - форум открытый.
-
Ребята, динамический base_address для PE-модуля - это очень редкая фигня, если я ничего не путаю. Автор, readprocessmemory точно правильно отрабатывает и точно есть все права? Ты можешь руками в Memory Viewer в Cheat Engine пройтись по всей цепочке и посмотреть, верна ли она, а затем сравнить с тем, что происходит в коде. Отладчик или логи - в помощь. Ошибиться тут сложно, главное - быть аккуратным.
-
В смысле? Представь себе, что у тебя есть пирог. Как его быстрее скушать получится - одним ртом или двумя, четырьмя, десятью? Память - это просто массив. Делишь его на куски и каждому потоку отдаешь сканировать свой кусок. Все просто.
-
Как минимум потому, что он это в несколько потоков одновременно делает.
-
На первый взгляд - все в норме. Попробуй воспользоваться функцией GetLastError, чтобы выяснить, верно ли работает ReadProcessMemory. К тому же, память, которую ты читаешь, может быть защищена от чтения - от этого спасет VirtualProtectEx.
-
Он работает так же, как и все подобные сканеры - открывает доступную для чтения память процесса, последовательно проходит по каждому адресу (учитывая размер переменной), выписывает все найденные адреса, значение которых совпадает с объектом поиска, в файлик. Дальше бегает по этому файлику - все последующие отсеивания.
-
Привет! Логика простая. Если у тебя не работает код - показывай код, иначе мы будем пытаться прочитать его телепатически, а это больно.
-
На официальном сайте, разумеется.
-
А в чем проблема исходники-то почитать? Там все паскальным по белому. Кстати, когда-то давно существовала программа WGC (Winner Game Cheater, если не ошибаюсь) - она сканировала быстрее СЕ\Артмани раз в 5-10. Наш соотечественник писал, кстати, и там был очень хардкорный алгоритм на ассемблере.
-
Автор, привет! Когда-то давно я вполне успешно начал изучать ассемблер с "рассылки Калашникова" и "дневников чайника" aka bitfry-я на сайте exelab. Если коротко и очень округлить, то ассемблеры друг от друга отличаются синтаксисом. Удивительно, но факт: язык ассемблера - по сути, словесное написание ровно тех операций, которые может совершить процессор. Проблема в том, что процессоров много, они разные, соответственно - ассемблеров тоже много и разных, но в современном мире можно об этом особенно сильно не заморачиваться. Скажем, есть микроконтроллеры - маленькие такие компьютеры, представляющие из себя один-единственный чип, со своей памятью, в которую загружена программа. Вот у каждого такого чипа - свои возможности, следовательно, свой собственный набор команд. Еще очень советую на данном этапе не заморачиваться идеями написания ботов или чего-то сложного, потому что этот процесс обречен затянуться на бесконечно долгий срок, а просто взять конкретную игру и поставить в ней конкретную цель - сделать что-то, что в игре сделать нельзя. Например, я так в одной игре сделал самонаводящиеся патроны, хотя она этого не позволяла изначально. И да, без английского - никуда.
-
А что мешает его просто убрать?
-
Крестик в верхнем-правом углу уведомления - ну чисто XP-шный.
-
Меня не обманывают глаза и я действительно вижу в 2016-м году связку из XP и Avira?
-
Самоучка, который готов платить? На чем застрял? Что не получается?
-
Так это, что за игра-то? Без названия можно долго тыкать пальцем в небо, а так хоть попробовать можно что-то сделать.
-
Как худший вариант, когда ничего больше не работает. Да и для общего развития полезно такие вещи самому делать хоть иногда.
-
Я нигде не упоминал СЕ, я описал идею. Как ее воплощать в жизнь и какие для этого использовать инструменты - вопрос вкуса и личных предпочтений. Из описания идеи ты что не понял? Можешь по пунктам.
-
Что именно ты не понял?
-
Привет! Я в работе весь, сегодня ночь не сплю и в 9 утра самолет - в отпуск лечу, наконец. Планирую вернуться в увлекательный мир программирования, а то половина друзей ушли в gamedev - завидую.
-
Можно тупо дампить всю память процесса, если на это он вдруг не ругается. Затем - руками, долго и муторно перебирать весь дамп. После N попыток и N дампов указатель должен без проблем найтись, но, думаю, это не стоит затраченных ресурсов. Вряд ли игра умеет противодействовать всем возможным способам прочитать ее память.
-
Привет! Ищешь координаты, по координатам ищешь структуру, дальше ищешь указатель на эту структуру. В какой-то момент наткнешься на массив, который частенько читают, а иногда еще и в него пишут. Ищешь, кто пишет. Там будет инициализация полей структуры, добавление ее в массив и далее вызов какой-нибудь функции. Делаешь это руками. Готово! Но это - общий случай. Примерно так, как я описал, было реализовано в игре Crimsonland, причем так было вообще для всех игровых объектов.
-
Ммм... Contra Battletoads Doom II Wolfenstein 3D Aladdin Blood 2 Postal 2 Serious Sam: 2nd encounter Max Payne 1\2 Silent Hill 2\3 Oddworld: Abe's Exoddus Prince of Persia 0-1-2-3 Turok: Seeds of Evil Operation Flashpoint Sacred 1 Need for Speed до Most Wanted влючительно Half-Life 1\2 The Outforce Петька и Василий Иваныч до 6 части включительно Следствие ведут колобки Сибирь 1\2 Mario Golden Axe 3 Dune 2000 Starcraft: Brood war ИЛ 2: Штурмовик Supaplex Crimsonland 1
-
Так. Во-первых, mov - это команда, а не регистр. Регистр - это eax, ebx, ecx и так далее. Если очень сильно упростить, то регистр - это просто маленькая область в процессоре, где может храниться какое-то значение.Процессор - универсальная штука, таким его проектируют. Допустим, нужно тебе сложить два числа. Еще допустим, что выглядит это вот так: ADD 2 5 В результате должно получиться число 7, тут, вроде бы, вопросов нет. Но возникает множество других вопросов. Прочитав коротко историю создания микропроцессоров можно выяснить, что все его инструкции выполнены "в железе" - то есть за каждую команду, что процессор умеет делать, отвечает определенный (реальный!) кусок его физического воплощения. Образно, в нем есть пять транзисторов, которые умеют складывать два числа. Какие? Это им надо сообщить. Таким образом, ассемблер - это способ через операционную систему (Windows, Linux и т.д.) сообщить процессору, что нужно сделать. Сам по себе процессор достаточно тупой и банально не умеет складывать 2 и 5, но умеет складывать числа. Кстати, самые первые микропроцессоры не умели умножать, только складывать. Какой выход из этой ситуации? Регистры! Сделаем так, чтобы в процессоре было место под пару цифр, а все операции (команды) он производил над этими цифрами. Назовем их прикольным словом и впаяем в процессор команды, позволяющие класть в регистры данные и вытаскивать их оттуда. Итак, в нашем воображаемом процессоре аж два регистра: A B И команда, позволяющая положить что-нибудь в регистр: MOV A, 10 (положить куда, что) Итого, если нам нужно сложить два числа, мы делаем так: MOV A,2 MOV B,5 ADD A,B Положили в один регистр первое число, в другой - второе, и вызвали команду сложения этих двух регистров. Хитрость тут в том, что результат сложения будет аккуратно положен в регистр A, потому что в команде "ADD A,B" он является первым аргументом. Типа, будь оно "ADD B,A", положилось бы в B. Такие вот дела. А "dword ptr" - это указатель размером в 4 байта. Так как в 32-разрядной модели памяти все указатели имеют размер в 4 байта, то указывать они могут хоть на 1 байт, хоть на float.