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

Garik66

Помогаторы
  • Постов

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

  • Победитель дней

    292

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

  1. Спасибо, а то я тоже раньше не знал как правильно соединить аобскан и простые nop.
  2. Keng, спасибо. Но, как я себя понял, мне нужно именно видио, чтобы понять, как правильно использовать эти и другие инструменты СЕ для своих нужд. Так что буду ждать видео Xipho и просматривать твои (и других) может на что-нибудь там натолкнусь.
  3. Я думаю RockHamer имеет ввиду типа этого: [ENABLE]aobscan(AdresInGame4, d9xxxxxxxxxxxx83xxxxxxe8xxxxxxxx83xxxx83xxxx75xx85xx7dxx8bxxd9xxxxxx8bxxxxxxxxxxxxd9xxxxxx8bxxffxx6axxxx8bxxe8xxxxxxxx85xx74xx8dxxxxxxxxxxebxx33xx85xxxxxx74xx8dxxxxxxxxxxebxx33xxd9xxx xxxxx83xxxxd9xxxxxxd9xxxxxxd9xxxxxxxxe8xxxxxxxx83xxxxxxxxc2xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxd9)alloc(newMem4, 64)label(returnHere4)registersymbol(AdresInGame4)newMem4://fstp dword ptr [edi+esi*4+00000324] // Просто нопим инструкцию и карма неjmp returnHere4 // падает, хотя и сообщение появляется. // Искать где появляются сообщенияAdresInGame4: // влом, да думаю и не нужно.jmp newMem4nopnopreturnHere4:[DISABLE]AdresInGame4:// Fallout3.exe+36E616fstp dword ptr [edi+esi*4+00000324]unregistersymbol(AdresInGame4)dealloc(newMem4)
  4. Заметил, что не-которые статьи при первом прочтении - очень трудны к перевариванию, только спустя некоторое время, после получения опыта и доп. знаний, читаемая ранее статья становится понятной. Пока MasterGH. не всё из прочтённого понял. По 2. пункту недавно столкнулся с проблемой т.е. в игре Fallout 3 нашёл инструкцию, она отвечает за очень большое количество адресов. Если ставить просто бряк на неё то игра зависает и ни чего не даёт в ней сделать, а если поставить условный бряк, то БП не срабатывает, небольшое обсуждение, начиная с этого сообщения.. Посмотрите, если не трудно, может Вы, что подскажите.
  5. 1. Интересует не определение, а способы работы со стеком, что и как мы можем из него узнать? 2. Меня интересуют не Брекпойнты на адрес, а Брекпоинты на инструкции в Отладчике, ну и отсюда условные Брекпоинты. 3. Реверс - снова интересует не определение, а именно процесс, как это делается, где-то видел статью MasterGH. но потом не смог её найти, конечно лучше бы видео с объяснениями. 4. Видео Kenga посмотрю - спасибо. Видео - очень буду ждать. Xipho, что-то пока не сложилось, но не одного Вашего видео не смотрел. У Вас на Тюбе, тоже есть канал (чтобы посмотреть можно было в одном месте)?
  6. Если кто, что читал (смотрел видео) на форуме, скиньте пожалуйста ссылку в эту тему. Какие вопросы интересуют: 1. Что такое стек и с чем его едят? (На самом деле до сих пор в полной мере не представляю, что это такое). 2. Брекпойнты и условные брекпойнты на инструкции. 3. Реверс (как он делается? что мы можем получить из этого? ну и т.д.) 4. Более подробное описание опций СЕ (ну например что такое структурный паук, для чего он?) 5. Трейссер - ссылку на английскую статью в посте MasterGH. 6. Ultimap - смотри сообщение MasterGH. 7. Tiny Dumper - сообщение MasterGH. Пожалуйста, не предлагать воспользоваться поисковиков. Прежде чем выложить сюда вопросы, которые меня сейчас интересуют искал, перерыл кучу макулатуры, которая к сожалению есть на форуме. Всем кто поможет - заранее Большое спасибо!!!.
  7. Не правильно. Сек [ENABLE]alloc(newmem,256,"metro.exe"+2C0A1A) label(returnhere)label(Originalcod)newmem: cmp byte ptr [rbx+498],1 jne Originalcod push [rbx+00000450] pop [rbx+00000448] Originalcod: mov eax,[rbx+00000448]jmp returnhere "metro.exe"+2C0A1A:jmp newmemnopreturnhere: [DISABLE]"metro.exe"+2C0A1A:mov eax,[rbx+00000448]dealloc(newmem)
  8. Вариант 3 самый правильный из 3, если фильтр нашёл верно, он по идее должен работать для всего вида оружия. Код чуть-чуть подправь: cmp byte ptr [rbx+498],1 // При использовании памяти (а не регистра) в коде лучше jne returnhere // всегда указывать его размер push [rbx+00000450] // и 1 - она во всех системах - еденица, поэтому ставить # необязательно pop [rbx+00000448] mov eax,[rbx+00000448]jmp returnhere [ENABLE]//code from here to '[DISABLE]' will be used to enable the cheatalloc(newmem,2048,"metro.exe"+2C0A1A) label(returnhere)label(exit) // не удалить, а изменить название, если изменишь не забудь изменить везде, // где я проставил exitnewmem: //this is allocated memory, you have read,write,execute accesscmp byte ptr [rbx+498],1 jne exit // здесь должен быть прыжок на оригинальные инструкции с последующим выходом push [rbx+00000450] pop [rbx+00000448] exit: // метка оригинальных инструкций mov eax,[rbx+00000448]jmp returnhere //exit: // удалить обе//jmp returnhere // строчки "metro.exe"+2C0A1A:jmp newmemnopreturnhere: [DISABLE]//code from here till the end of the code will be used to disable the cheat"metro.exe"+2C0A1A:mov eax,[rbx+00000448]//Alt: db 8B 83 48 04 00 00dealloc(newmem)
  9. Небольшую статью и скрипт выложил в этой теме. таблицу выложил здесь.
  10. Конечно проще было бы записать видео, но во-первых – не умею, во-вторых у меня не такой тембр голоса как у Kenga, Codera и Bromvola (этим ребятам можно легко летсплеить прохождения игр), ну и в-третьих я косноязычен. Хотя может быть всё это – дело наживное (дело опыта). Прошу сильно не закидывать шапками – это моя первая попытка – написать полноценную статью. А описывать, то что делал, довольно трудным занятием оказалось. Начинал взлом именно с этой игрушки, в то время пользовался Артмани, в этой теме выложена таблица для Артмани. Нашёл практически всё. Совет для начинающих: • 8675309 - полностью открывает карту • 32167 - дает текущему герою 5 черных драконов, если для них есть место • 911 - немедленный выигрыш • 1313 - немедленный проигрыш Коды просто набираются с клавиатуры, причем они работают и в мультиплейере. Правда, начиная с версии 1.3 противники читера получают предупреждение. Также слово Cheater появится и в таблице High Scores рядом с именем игрока. Столь небольшое количество кодов объясняется тем, что в версии для Win 95/98 разработчиками был предусмотрен "отладочный режим" игры. Для его включения необходимо запустить игру через Start - Run, с ярлычка (или из командной строки DOS), и указать путь к исполняемому файлу игры с ключом /NWC т.е. (...\Heroes2w /NWC). После того, как вы начнете игру, перейдите в оконный режим, нажав F4. В заголовке окна увидите опциюDebug. Пользуйтесь, но только для отладки - при использовании этого режима слово Cheater также появится в таблице High Scores рядом с вашим именем. Особенно осторожно пользуйтесь чит-кодами при прохождении кампаний. В некоторых случаях вы можете получить запись "Читер" в конечном результате, хотя вроде-бы и карта закрыта, и загружались правильно и т.п. Будьте бдительны! Запустим Героев, выберем пока самую маленькую карту и чтобы вражеских героев (героев-ботов) было хотя бы два. Ищем «неизвестное». Открываем с помощью «отладочного режима» карту – отсев «изменилось». Загружаем снова эту же игру, но не сейв игры (отличительная особенность Героев, что при загрузке игры адреса не меняются, при загрузке сейва могут не поменяться, но могут и измениться) – отсев «изменилось». На открытой карте пройдём героем, что-нить подберём – отсев «не изменилось». Метод отсева: изменилось/изменилось/не изменилось Значения в конце отсева в основном при загрузке равны 0, а при открытии карты – 1. Нахождение адресов произошло довольно быстро – мы получили очень большое к-во адресов идущих друг за другом и отличающихся в основном на 1. Теперь давайте опять загрузим игру. Возьмём любой из адресов и правой кнопкой «Посмотреть регион памяти». Посмотрим на то, что мы нашли. Нашли мы довольно большую область памяти, в которой значения в основном 0, где-то встречаются участки 80, если прокрутить увидим не-большую область с 1 и нечётными числами (типа 81), ещё выше (или ниже) – обнаружим 2 и 82, а если было два героя – то и 4 и 84. Объясню: мы нашли карту игры, где 0 – невидимая область никем, Если 80 – объект на карте (типа монстр, часовня, сундук, куст, замок, гора, ну и т.д.) Если число нечётное – это видимая область нашим игроком, Если 2 и 82 – область, видимая только 2 Ботом, 4 и 84 – 4 Ботом. Ну а если допустим 3 и 83 – то, думаю уже догадались, что 2 Бот находится, где то рядом с Вашим героем и в области пересечения обзоров цифры будут 3 и 83. Прокрутим регион памяти в низ и сразу чётко видна последняя ячейка Карты, т.е. это 0 после которого идёт много разных цифр, давайте проверим запишем туда 01 (прямо в регионе памяти) , перейдём в игру, спустимся в правый нижний край карты и действительно ячейка открылась. Теперь давайте на всякий случай (чтобы не потерять результаты работы) сделаем некоторые шаги. Добавим этот адрес в таблицу, вернём ему значение 0. поставим «Бряк на запись» и с помощью «отладочного режима» откроем карту, мы получим вот такую инструкцию: Heroes2.exe+5B857:mov [ecx+eax],dljmp Heroes2.exe+5B7D5 [ENABLE]alloc(newMem, 2048)label(returnHere)newMem:mov [ecx+eax],dljmp Heroes2.exe+5B7D5jmp returnHereHeroes2.exe+5B857:jmp newMemdb 90 90 90returnHere:[DISABLE]Heroes2.exe+5B857:mov [ecx+eax],dljmp Heroes2.exe+5B7D5dealloc(newMem) Heroes2.exe+5B930:mov [edx+ecx],aljmp Heroes2.exe+5B897 [ENABLE]alloc(newMem, 2048)label(returnHere)newMem:mov [edx+ecx],aljmp Heroes2.exe+5B897jmp returnHereHeroes2.exe+5B930:jmp newMemdb 90 90 90returnHere:[DISABLE]Heroes2.exe+5B930:mov [edx+ecx],aljmp Heroes2.exe+5B897dealloc(newMem) Heroes2.exe+5B92D:add edx,[ebp-10]mov [edx+ecx],al [ENABLE]alloc(newMem, 2048)label(returnHere)label(Cikl)label(Flag)registersymbol(Flag)newMem:add edx,[ebp-10]mov [edx+ecx],alcmp byte ptr [Flag],1jne returnHerecmp ebx,00000260jne returnHerecmp ebp,000cfa30jne returnHerepush esi // сохраняем регистрыpush ecx // перед использованиемmov ecx,510lea esi,[["Heroes2.exe"+001265DC]+0] // загружаем первую ячейку картыCikl:cmp byte ptr [esi],0jne @Fadd byte ptr [esi],1 // делаем видимой ячейку карты@@:test byte ptr [esi],1jne @Fadd byte ptr [esi],1 // делаем видимой ячейку карты@@:dec ecx // Уменьшаем счетчик циклаinc esi // увеличиваем адрес-источникcmp ecx,0 // Достигли ли конца цикла?je @F // Если да, выходим из циклаjmp Cikl // Если нет - прыгаем на метку Cikl, то есть, переходим к следующей итерации цикла@@: // Безымянная метка для указания местоположения выхода из циклаpop ecxpop esimov byte ptr [Flag],0jmp returnHereFlag:db 1Heroes2.exe+5B92D:jmp newMemnopreturnHere:[DISABLE]Heroes2.exe+5B92D:add edx,[ebp-10]mov [edx+ecx],alunregistersymbol(Flag)dealloc(newMem) [ENABLE]aobscan(Adres, 8bxxxxxxxxxx0fafxxxx8axxxx0axxxx8bxxxxxxxxxx0fafxxxx8bxxxxxxxxxx03xxxx88xxxxe9)aobscan(Adres1, 03xxxx88xxxxe9xxxxxxxxe9xxxxxxxxxx8b)alloc(newMem, 512)alloc(newMem1, 512)label(returnHere)label(returnHere1)label(Cikl)label(Small_Map)label(Average_Map)label(Big_Map)label(Very_Large_Map)label(K_voBt)registersymbol(K_voBt)label(Flag)registersymbol(Flag)registersymbol(Adres)registersymbol(Adres1)newMem:mov edx,[Heroes2.exe+F8B98]cmp edx,24 // Карта размером 36х36 Маленькаяje Small_Mapcmp edx,48 // Карта размером 72х72 Средняяje Average_Mapcmp edx,6c // Карта размером 108х108 Большаяje Big_Mapcmp edx,90 // Карта размером 144х144 Очень большаяje Very_Large_Mapjmp returnHereSmall_Map:mov dword ptr [K_voBt],510 // 1296 байтjmp returnHereAverage_Map:mov dword ptr [K_voBt],1440 // 5184 байтjmp returnHereBig_Map:mov dword ptr [K_voBt],2d90 // 11664 байтjmp returnHereVery_Large_Map:mov dword ptr [K_voBt],5100 // 20736 байтjmp returnHerenewMem1:add edx,[ebp-10]mov [edx+ecx],alcmp byte ptr [Flag],1 // условие - чтобы сработало только один раз.jne returnHere1cmp ebx,00000260 // условие - только работаем с адресами ячеек картыjne returnHere1cmp ebp,000cfa30 // условие свой/чужойjne returnHere1push esi // сохраняем регистрыpush ecx // перед использованиемmov ecx,[K_voBt] // загружаем какое количество (байт) ячеек на картеlea esi,[["Heroes2.exe"+001265DC]+0] // загружаем первую ячейку картыCikl:cmp byte ptr [esi],0 // условие только нулевые значения на картеjne @Fadd byte ptr [esi],1 // делаем видимой ячейку карты@@:test byte ptr [esi],1// условие только чётные значения на картеjne @Fadd byte ptr [esi],1 // делаем видимой ячейку карты@@:dec ecx // Уменьшаем счетчик циклаinc esi // увеличиваем адрес-источникcmp ecx,0 // Достигли ли конца цикла?je @F // Если да, выходим из циклаjmp Cikl // Если нет - прыгаем на метку Cikl, то есть, переходим к следующей итерации цикла@@: // Безымянная метка для указания местоположения выхода из циклаpop ecxpop esimov byte ptr [Flag],0jmp returnHere1K_voBt:dd 0Flag:db 1Adres:jmp newMemnopreturnHere:Adres1:jmp newMem1nopreturnHere1:[DISABLE]Adres: // Heroes2.exe+5B90D:mov edx,[Heroes2.exe+F8B98]Adres1: // Heroes2.exe+5B92D:add edx,[ebp-10]mov [edx+ecx],alunregistersymbol(K_voBt)unregistersymbol(Flag)unregistersymbol(Adres)unregistersymbol(Adres1)dealloc(newMem)dealloc(newMem1)
  11. Это именно проверка условия чётности. Добавил в скрипт все размеры карт - супер - открывает карты любого размера. Проверил и в Обычных играх и в Компаниях. Осталось добавить Аобскан.
  12. Код пишу на CE-шном ассемблере, до написания чего-нибудь на C# мне ещё очень и очень далеко. С# - начал изучать, чтобы поучиться делать трейнеры, а то я в генераторе трейнера назначения окон не знаю (перевода то нет, жаль что SER(G)ANT и там не перевёл). Супер - сработало как часы - карта открылась полностью. Теперь осталось только добавить то, о чём писал Xipho в этом сообщении и можно выкладывать готовый скрипт.
  13. Спасибо Coder за совет, я конечно начал изучать C# (выбрал его), но я только в самом, самом начале (и даже прошёл в Интуите курс для школьников правда хреновый курс мне не понравился, хотя и сдал на 4), но пока в программировании я 0 и тем более на C++. Код написанный мной работает, но открывает (так как нет условия проверки "Чётности"), только свободную от монстров, строений, кустов ну и т.д. карту (т.е. после активирования моего скрипта - Карта кусками открыта, кусками нет.) Кое что нашёл по условию чётности, т.е. для моего случая это примерно так: test byte ptr [esi],1je ...... // если чётноеjne...... // если нечётноебуду пробовать этот вариант.
  14. Coder, не думал что и ты не внимательно читаешь: инструкцию я нашёл и даже написал часть кода - всё описано в первом посте.
  15. Хотел потом сказать, при выкладывании таблицы и скрипта. Нашёл адреса "Тумана войны" для Героев 2 (которые раньше (ещё на Артемоне) не смог). Вот для того чтобы сделать карту полностью видимой и делаю скрипт. Более эффективное средство... навряд ли. Там всё просто - нужно прибавить 1 ко всем байтам. Вручную участки карты открываются, значит можно сделать и программно. А в чём проблема с моим решением: неужели процесс прибавления 1 более затратный, чем копирование участка памяти, чем мы с Вами совсем недавно занимались.
  16. Для моего случая (для каждой новой игры) прибавление 1 будет разовой операцией.
  17. Опять не справился.(эх ведь говорил один умный человек: "...учиться, учиться и учиться...") Допустим у меня в игре есть участок памяти размером 1000 байт.Мне нужно к каждому байту этого участка равному 0 или чётному прибавить 1. Мастера помогите написать код. Заранее - СПАСИБО!!! Вот примерно что я написал: push esi // Сохраняем регистрыpush ecx // перед использованиемmov ecx,3e8 // 1000 байтlea esi,[adres] // Загружаем адрес первого байтаCikl: // метка "Цикл"cmp byte ptr [esi],0 // Сравниваем с 0jne @F // Если не равно 0, то перепрыгиваем следующую инструкцию add byte ptr [esi],1 // +1@@: // Промежуточная безымянная меткаdec ecx // Уменьшаем счетчик циклаinc esi // Переходим к следующему байтуcmp ecx,0 // Достигли ли конца цикла?je @F // Если да, выходим из циклаjmp Cikl // Если нет - прыгаем на метку Cikl, то есть, переходим к следующей итерации цикла@@: // Безымянная метка для указания местоположения выхода из циклаpop ecx // Восстанавливаем регистры pop esi // после использования
  18. По ID - собственно именно об этом я писал в личку, что твои способы (из твоих замечательных видео) к сожалению к данной игре не подходят. Но попробую покопать дальше. Но это уже небольшой офтоп для данной темы. А по координатам прицела, чтож - "Будем искать" Ю.Никулин.
  19. В процессе взлома (и обучения взлому) я часто делаю ссылки (если читали мои статейки) на то чем часто пользуюсь на форуме. Решил сделать это в одном месте и по мере продолжения обучения, буду выкладывать сюда, что нужно почитать (посмотреть) на форуме для облегчения понимания взлома. Начну здесь с этой статьи (само собой всё что здесь выкладываю - всё плюсую): Статья Akama Здесь.. Новички обязательно прочтите её - очень многое станет более понятным. Но начать нужно с прочтения именно этой статьи. По фильтрам: Начните с этого видео, тут не только про фильтры - очень полезное. Прочтите эту статью. И ещё это сообщение. По поиску адресов отвечающих за ID предмета прекрасное видео: здесь. По телепорту и Blink-телепорту : эта статья. Ещё сюда конечно нужно добавить ссылку на видео-уроки Kenga
  20. Плюс Но вопрос, по какому критерию - что будет в данном случае, если я заморожу нужный адрес?
  21. Беспощадный метод пока не сдаётся, не понятно, что делать кода остаётся около 400 адресов, которые уже нельзя отсеять. Зато быстро нашёл адреса "ЗУМа" прицела. Благо здесь в конце - можно "заморозить" и прицел не будет приближать. Теперь когда нашёл адреса: (1 от 2 смещение 4h) эти адреса очень легко найти для этой игры, если кому нужно (например для написания ЗумХака) - без увеличения 1 адрес значение (float) 75, у 2 - (float) 55 ; при увеличении - отсев "Уменьшилось", нужно максимум два отсева. Для чего искал "ЗУМ", надеялся, что адреса прицела, нужные для БлинкТелепорта будут находиться, где-то в структуре. Но к сожалению чуда не случилось - нужных адресов там нет. Нашёл в структуре только адреса очень похожие на адреса координат ГГ, но они от прицела не меняются, меняются только от перемещения ГГ.
  22. Почитай ещё раз внимательно, дело в том что патроны - это не просто патроны в обойме, а и суммарные и, как я их назвал, незаряженные. Судя по Вашему коду Вы работали только с инструкцией отвечающий за адрес к-ва патронов в обойме, но не учли изменения в общем кол-ве патронов, а за этот адрес уже отвечает другая инструкция. Но не буду здесь повторяться, ещё раз прочти внимательно, то что мною написано. Постарался довольно подробно там описать. Вот как раз это и приводит к вылету. Если не использовать инструкцию работающую с общим кол-вом патронов. У Alexander D скрипт работает именно с общим кол-вом патронов, но без патронов в обойме. Alexander D пишет очень много трейнеров, с большим кол-вом опций и поэтому сильно не вылизывает скрипты, если нету в этом необходимости. Т.е. скрипт Alexander D это примерно мой первый скрипт, только с небольшой добавкой newMem5:mov[eax+04],#999 // сюда добавлено общее кол-во патронов//sub [eax+04],esi mov ebx,esi jmp returnHere5
  23. Точно SER[G]ANTу отправил. Странно, а сейчас отправилось. Однако БАРАБАШКА на форуме
×
×
  • Создать...

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

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