@ -100,33 +103,23 @@ msgid "CEShare community URL:"
msgstr "URL сообщества CEShare:"
#: ceshare_initiaISetup.CELabel2.Caption
msgid ""
"By entering a CEShare URL you will be able to upload and download Cheat "
"Tables from a ceshare server community"
msgstr ""
"Введя CEShare URL, вы сможете загружать и скачивать чит-таблицы из "
"сообщества серверов ceshare"
msgid "By entering a CEShare URL you will be able to upload and download Cheat Tables from a ceshare server community"
msgstr "Введя CEShare URL, вы сможете загружать и скачивать чит-таблицы из сообщества серверов ceshare"
#: ceshare_initiaISetup.CELabel3.Caption
msgid ""
"Disclaimer: These are third-party servers. They are not owned or maintained "
"by the Cheat Engine project, and no warranty or responsiblity regarding "
"their content is given. \n"
"Disclaimer: These are third-party servers. They are not owned or maintained by the Cheat Engine project, and no warranty or responsiblity regarding their content is given. \n"
"\n"
"Please contact the respective server owner for further inquiries."
msgstr ""
"Отказ от ответственности: Это сторонние серверы. Они не принадлежат проекту "
"Cheat Engine и не обслуживаются им, а также не дают никаких гарантий и не "
"несут никакой ответственности за их содержание. \n"
"Отказ от ответственности: Это сторонние серверы. Они не принадлежат проекту Cheat Engine и не обслуживаются им, а также не дают никаких гарантий и не несут никакой "
"ответственности за их содержание. \n"
"\n"
"Пожалуйста, свяжитесь с владельцем соответствующего сервера для получения "
"дополнительных сведений."
"Пожалуйста, свяжитесь с владельцем соответствующего сервера для получения дополнительных сведений."
#: ceshare_initiaISetup.CELabel4.Caption
msgid "Click cancel or leave empty if you don't wish to use this"
msgstr ""
"Нажмите кнопку «Отмена» или оставьте пустым, если вы не хотите использовать "
"это"
msgstr "Нажмите кнопку «Отмена» или оставьте пустым, если вы не хотите использовать это"
#: ceshare_initiaISetup.CEButton1.Caption
msgid "OK"
@ -174,13 +167,11 @@ msgstr "Разрешить всем изменять эту таблицу"
#: frmCESharePublishCheat.cbPublic.Hint
msgid ""
"When this is enabled will let EVERYONE be able to edit/replace your table. "
"So be careful with enabling this and understand that once someone else has "
"modified the table, you will not be able to delete it anymore"
"When this is enabled will let EVERYONE be able to edit/replace your table. So be careful with enabling this and understand that once someone else has modified the table, you "
"will not be able to delete it anymore"
msgstr ""
"Когда эта опция включена, каждый сможет редактировать/заменять вашу "
"таблицу. Так что будьте осторожны с включением этой опции и поймите, что "
"как только кто-то другой изменит таблицу, вы больше не сможете её удалить"
"Когда эта опция включена, каждый сможет редактировать/заменять вашу таблицу. Так что будьте осторожны с включением этой опции и поймите, что как только кто-то другой изменит "
"таблицу, вы больше не сможете её удалить"
#: frmCESharePublishCheat.btnPublish.Caption
msgid "Publish"
@ -216,13 +207,16 @@ msgstr "Проверить наличие модов/читов для теку
#: miRequestCheats.Caption
msgid "Request and check other requests for mods/cheats for current process"
msgstr ""
"Запросить и проверить другие запросы на моды/читы для текущего процесса"
msgstr "Запросить и проверить другие запросы на моды/читы для текущего процесса"
#: miLoginToSeeMoreOptions.Caption
msgid "Publish/Update table"
msgstr "Опубликовать/Обновить таблицу"
#: miViewAllTables.Caption
msgid "View all available tables"
msgstr "Просмотр всех доступных таблиц"
#: lblCEShareLabel.Caption
msgid "CEShare community URL"
msgstr "URL сообщества CEShare"
@ -237,14 +231,11 @@ msgstr "Разрешить"
#: header.caption
msgid ""
"This process needs a special identifier to set it apart from others with the "
"same name. To generate this identifier the below code is needed. Do you "
"agree with the execution of this code to generate the identifier?"
"This process needs a special identifier to set it apart from others with the same name. To generate this identifier the below code is needed. Do you agree with the execution "
"of this code to generate the identifier?"
msgstr ""
"Этот процесс нуждается в специальном идентификаторе, чтобы отличить его от "
"других с тем же именем. Для генерации этого идентификатора необходим код, "
"приведённый ниже. Согласны ли вы с выполнением данного кода для генерации "
"идентификатора?"
"Этот процесс нуждается в специальном идентификаторе, чтобы отличить его от других с тем же именем. Для генерации этого идентификатора необходим код, приведённый ниже. "
"Согласны ли вы с выполнением данного кода для генерации идентификатора?"
#: Error
msgid "Error:"
@ -279,13 +270,8 @@ msgid "Logout when loading ceshare tables"
msgstr "Выйти из системы при загрузке таблиц ceshare"
#: ceshare_account-cbLogoutWhenLoadingTables.Hint
msgid ""
"When checked you will get logged out when loading a ceshare table. This to "
"prevent malicious tables from using your account"
msgstr ""
"Если флажок установлен, то вы выйдете из системы при загрузке таблицы "
"ceshare. Это предотвращает использование вашей учётной записи вредоносными "
"таблицами"
msgid "When checked you will get logged out when loading a ceshare table. This to prevent malicious tables from using your account"
msgstr "Если флажок установлен, то вы выйдете из системы при загрузке таблицы ceshare. Это предотвращает использование вашей учётной записи вредоносными таблицами"
#: ceshare_permissions
msgid "Are you sure you wish to change the owner?"
@ -339,13 +325,13 @@ msgstr "Пожалуйста, выберите чит-таблицу для об
msgid "Invalid background update query list"
msgstr "Неверный список запросов на обновление в фоновом режиме"
#: ceshare_publish_TLAN
msgid "This looks like an empty table. Are you sure?"
msgstr "Выглядит как пустая таблица. Вы уверены?"
#: ceshare_publish
msgid ""
"Are you sure you wish to let 'Everyone' overwrite your table in the ceshare "
"system ?"
msgstr ""
"Вы действительно хотите разрешить «Всем» перезаписать вашу таблицу в системе "
"ceshare?"
msgid "Are you sure you wish to let 'Everyone' overwrite your table in the ceshare system ?"
msgstr "Вы действительно хотите разрешить «Всем» перезаписать вашу таблицу в системе ceshare?"
#: ceshare_publish
msgid "Do you wish to sign this table?"
@ -364,12 +350,8 @@ msgid "Table Owner"
msgstr "Владелец таблицы"
#: ceshare_querycheats
msgid ""
"Sorry, but there are currently no tables for this target. Perhaps you can be "
"the first"
msgstr ""
"Извините, но в настоящее время нет таблиц для этой цели. Возможно, вы можете "
"быть первым"
msgid "Sorry, but there are currently no tables for this target. Perhaps you can be the first"
msgstr "Извините, но в настоящее время нет таблиц для этого процесса. У вас есть возможность стать первым"
#: ceshare_requests
msgid "Requests"
@ -378,3 +360,29 @@ msgstr "Запросы"
#: ceshare_requests
msgid "Score="
msgstr "Оценка="
#: ceshare_fulltablelist
msgid " and %d more tables..."
msgstr " и еще %d таблиц..."
#: ceshare_fulltablelist
msgid "All tables"
msgstr "Все таблицы"
#: ceshare_fulltablelist
msgid "Search:"
msgstr "Поиск:"
#: ceshare_fulltablelist
msgid "Previous (25)"
msgstr "Предыдущие (25)"
#: ceshare_fulltablelist
msgid "Next (25)"
msgstr "Следующие (25)"
#: ceshare_querycheats_TCTI
msgid "The current table is trying to load obfuscated code. This often means mallicious intent as tables are supposed to be public. Do you wish to execute this lua code anyhow?"
msgstr ""
"Текущая таблица пытается загрузить обфусцированный код. Это часто означает злой умысел, поскольку таблицы должны быть общедоступными. Хотите ли вы выполнить этот код lua в "
msgid "Another instance of Cheat Engine has crashed and it created an autosave. Autosave disabled until you go to settings and click ok"
msgstr "Другой экземпляр Cheat Engine потерпел крах и создал автосохранение. Автосохранение будет отключено, пока вы не перейдёте в настройки и не нажмёте «Подтвердить»"
#: autosave-Ftoa
msgid "Failure to obtain a location to save the autosave data"
msgstr "Не удалось получить расположение для сохранения данных автосохранения"
#: autosave-UR
msgid "Unknown Reason"
msgstr "Неизвестная причина"
#: autosave-Ftat
msgid "Failure to autosave table : "
msgstr "Сбой автосохранения таблицы : "
#: autosave-Ftas
msgid "Failure to autosave state : "
msgstr "Сбой автосохранения состояния: "
#: autosave-Ftla
msgid "Failure to load autosave at %s . Error: %s"
msgstr "Сбой при загрузке автосохранения в %s . Ошибка: %s"
#: autosave-Tssb
msgid "The saved state belongs to a different autosave version that is not currently implemented"
msgstr "Сохранённое состояние относится к другой версии автосохранения, которая в данный момент не реализована"
#: autosave-ASI
msgid "Auto Save Interval (In seconds. 0 is disabled)"
msgid "%s%sPress OK to ignore and risk data corruption.%sPress Abort to kill the program."
msgstr "%s%sНажмите 'Подтвердить' чтобы игнорировать и подвергнуться риску повреждения данных.%sНажмите 'Прервать' для закрытия программы."
msgstr "%s%sНажмите 'Подтвердить', чтобы игнорировать и подвергнуться риску повреждения данных.%sНажмите 'Прервать' для закрытия программы."
#: lclstrconsts.rspriorrecordhint
msgctxt "lclstrconsts.rspriorrecordhint"
msgid "Prior"
@ -882,6 +893,9 @@ msgstr "Свойство %s не существует"
msgid "Purple"
msgstr "Лиловый"
#: lclstrconsts.rsqtoptiondisableaccurateframe
msgid "-disableaccurateframe, disables fully accurate window frame under X11. This feature is implemented for Qt, Qt5 and Gtk2 interfaces and used mostly by GetWindowRect()."
msgstr "-disableaccurateframe, отключает определение точных границ окна в X11. Эта возможность реализована для интерфейсов Qt, Qt5 и Gtk2 и используется преимущественно GetWindowRect()."
#: lclstrconsts.rsqtoptiondograb
msgid "-dograb (only under X11), running under a debugger can cause an implicit -nograb, use -dograb to override. Need QT_DEBUG."
msgstr "-dograb (только в X11), запуск в отладчике может повлечь неявный -nograb, используйте -dograb для отмены. Требуется QT_DEBUG."
msgid "Use this to go imeadiatly to the step you want to try"
msgstr "Введите пароль для немедленного перехода к нужному вам шагу"
@ -43,7 +39,7 @@ msgid "Attack"
msgstr "Атака"
#: tform10.button5.caption
msgctxt "TFORM10.BUTTON5.CAPTION"
msgctxt "tform10.button5.caption"
msgid "Attack"
msgstr "Атака"
@ -53,12 +49,12 @@ msgid "Restart game and autoplay"
msgstr "Случайная игра"
#: tform10.button7.caption
msgctxt "TFORM10.BUTTON7.CAPTION"
msgctxt "tform10.button7.caption"
msgid "Attack"
msgstr "Атака"
#: tform10.button8.caption
msgctxt "TFORM10.BUTTON8.CAPTION"
msgctxt "tform10.button8.caption"
msgid "Attack"
msgstr "Атака"
@ -67,7 +63,7 @@ msgid "Step 9"
msgstr "Шаг 9"
#: tform10.label10.caption
msgctxt "TFORM10.LABEL10.CAPTION"
msgctxt "tform10.label10.caption"
msgid "Health: 500"
msgstr "Здоровье: 500"
@ -78,7 +74,7 @@ msgstr "Здоровье:"
#: tform10.label3.caption
msgid "Player 1: Dave"
msgstr "Игрок 1: Дейв"
msgstr "Союзник1"
#: tform10.label4.caption
msgctxt "tform10.label4.caption"
@ -87,16 +83,16 @@ msgstr "Здоровье: 100"
#: tform10.label5.caption
msgid "Player 2: Eric"
msgstr "Игрок 2: Эрик"
msgstr "Союзник2"
#: tform10.label6.caption
msgctxt "TFORM10.LABEL6.CAPTION"
msgctxt "tform10.label6.caption"
msgid "Health: 100"
msgstr "Здоровье: 100"
#: tform10.label7.caption
msgid "C. Player 3: HAL"
msgstr "Враг1: Хал"
msgstr "Враг1"
#: tform10.label8.caption
msgctxt "tform10.label8.caption"
@ -105,10 +101,10 @@ msgstr "Здоровье: 500"
#: tform10.label9.caption
msgid "C. Player 4: KITT"
msgstr "Враг2: Китт"
msgstr "Враг2"
#: tform2.button1.caption
msgctxt "TFORM2.BUTTON1.CAPTION"
msgctxt "tform2.button1.caption"
msgid "Next"
msgstr "Дальше"
@ -132,12 +128,12 @@ msgid "Skip"
msgstr "Пропустить"
#: tform3.button1.caption
msgctxt "TFORM3.BUTTON1.CAPTION"
msgctxt "tform3.button1.caption"
msgid "Next"
msgstr "Дальше"
#: tform3.button2.caption
msgctxt "TFORM3.BUTTON2.CAPTION"
msgctxt "tform3.button2.caption"
msgid "Hit me"
msgstr "Удар"
@ -146,12 +142,12 @@ msgid "Step 3"
msgstr "Шаг 3"
#: tform3.speedbutton1.caption
msgctxt "TFORM3.SPEEDBUTTON1.CAPTION"
msgctxt "tform3.speedbutton1.caption"
msgid "Skip"
msgstr "Пропустить"
#: tform4.button1.caption
msgctxt "TFORM4.BUTTON1.CAPTION"
msgctxt "tform4.button1.caption"
msgid "OK"
msgstr "Подтвердить"
@ -161,11 +157,11 @@ msgstr "Конец обучения"
#: tform4.label1.caption
msgid "Well done, you've completed the tutorial of Cheat Engine."
msgstr "Поздравляю, вы успешно завершили все этапы обучения."
msgstr "Поздравляю, вы успешно завершили учебное руководство по Cheat Engine."
#: tform4.label2.caption
msgid "Just play around with the tutorial and learn how the other scanmethods work."
msgstr "Теперь можете пройти их по новой, применяя другие правила поиска."
msgstr "Просто поиграйтесь с руководством и узнайте, как работают другие методы поиска."
#: tform4.label3.caption
msgid "And you can always check out the Cheat Engine Forum for useful information and ask for help"
@ -177,15 +173,15 @@ msgstr "Форум Cheat Engine"
#: tform5.button1.caption
msgid "Fire"
msgstr "Выстрел"
msgstr "Огонь"
#: tform5.button2.caption
msgctxt "TFORM5.BUTTON2.CAPTION"
msgctxt "tform5.button2.caption"
msgid "Next"
msgstr "Дальше"
#: tform5.button3.caption
msgctxt "TFORM5.BUTTON3.CAPTION"
msgctxt "tform5.button3.caption"
msgid "Hit me"
msgstr "Удар"
@ -195,23 +191,15 @@ msgstr "Шаг 4"
#: tform5.label2.caption
msgid "Ammo"
msgstr "Патроны"
msgstr "Патроны:"
#: tform5.label3.caption
msgctxt "TFORM5.LABEL3.CAPTION"
msgctxt "tform5.label3.caption"
msgid "Health:"
msgstr "Здоровье:"
#: tform5.label5.caption
msgid "(float)"
msgstr "(float)"
#: tform5.label6.caption
msgid "(double)"
msgstr "(double)"
#: tform5.speedbutton1.caption
msgctxt "TFORM5.SPEEDBUTTON1.CAPTION"
msgctxt "tform5.speedbutton1.caption"
msgid "Skip"
msgstr "Пропустить"
@ -221,7 +209,7 @@ msgid "Change value"
msgstr "Изменить значение"
#: tform6.button2.caption
msgctxt "TFORM6.BUTTON2.CAPTION"
msgctxt "tform6.button2.caption"
msgid "Next"
msgstr "Дальше"
@ -230,17 +218,17 @@ msgid "Step 5"
msgstr "Шаг 5"
#: tform6.speedbutton1.caption
msgctxt "TFORM6.SPEEDBUTTON1.CAPTION"
msgctxt "tform6.speedbutton1.caption"
msgid "Skip"
msgstr "Пропустить"
#: tform7.button1.caption
msgctxt "TFORM7.BUTTON1.CAPTION"
msgctxt "tform7.button1.caption"
msgid "Change value"
msgstr "Изменить значение"
#: tform7.button2.caption
msgctxt "TFORM7.BUTTON2.CAPTION"
msgctxt "tform7.button2.caption"
msgid "Next"
msgstr "Дальше"
@ -254,17 +242,17 @@ msgid "Step 6"
msgstr "Шаг 6"
#: tform7.speedbutton1.caption
msgctxt "TFORM7.SPEEDBUTTON1.CAPTION"
msgctxt "tform7.speedbutton1.caption"
msgid "Skip"
msgstr "Пропустить"
#: tform8.button1.caption
msgctxt "TFORM8.BUTTON1.CAPTION"
msgctxt "tform8.button1.caption"
msgid "Hit me"
msgstr "Удар"
#: tform8.button2.caption
msgctxt "TFORM8.BUTTON2.CAPTION"
msgctxt "tform8.button2.caption"
msgid "Next"
msgstr "Дальше"
@ -273,27 +261,27 @@ msgid "Step 7"
msgstr "Шаг 7"
#: tform8.label1.caption
msgctxt "TFORM8.LABEL1.CAPTION"
msgctxt "tform8.label1.caption"
msgid "Health: 100"
msgstr "Здоровье: 100"
#: tform8.speedbutton1.caption
msgctxt "TFORM8.SPEEDBUTTON1.CAPTION"
msgctxt "tform8.speedbutton1.caption"
msgid "Skip"
msgstr "Пропустить"
#: tform9.button1.caption
msgctxt "TFORM9.BUTTON1.CAPTION"
msgctxt "tform9.button1.caption"
msgid "Change value"
msgstr "Изменить значение"
#: tform9.button2.caption
msgctxt "TFORM9.BUTTON2.CAPTION"
msgctxt "tform9.button2.caption"
msgid "Next"
msgstr "Дальше"
#: tform9.button3.caption
msgctxt "TFORM9.BUTTON3.CAPTION"
msgctxt "tform9.button3.caption"
msgid "Change pointer"
msgstr "Изменить указатель"
@ -302,7 +290,7 @@ msgid "Step 8"
msgstr "Шаг 8"
#: tform9.speedbutton1.caption
msgctxt "TFORM9.SPEEDBUTTON1.CAPTION"
msgctxt "tform9.speedbutton1.caption"
msgid "Skip"
msgstr "Пропустить"
@ -312,7 +300,7 @@ msgstr "Помощь"
#: tfrmhelp.image1.hint
msgid "More information like videos for this step and written tutorials"
msgstr "Дополнительная информация в виде видео или письменного руководства для этого шага."
msgstr "Дополнительная информация, например, видеоролики по этому шагу или письменные руководства"
#: unit1.rsfirststeptoohardbettergiveupnow
msgid "First step too hard? Go to forum.cheatengine.org, then click on \"Tutorials\" for helpful guides!"
@ -320,7 +308,7 @@ msgstr "Первый шаг слишком сложен? Зайдите на for
#: unit1.rstutorial1
msgid ""
"Welcome to the Cheat Engine Tutorial (v3.4)\n"
"Welcome to the Cheat Engine Tutorial (v3.6)\n"
"\n"
"This tutorial will teach you the basics of cheating in video games. It will also show you foundational aspects of using Cheat Engine (or CE for short). Follow the steps below to get started.\n"
"\n"
@ -335,7 +323,7 @@ msgid ""
"\n"
"If you're having problems, simply head over to forum.cheatengine.org, then click on \"Tutorials\" to view beginner-friendly guides!\n"
msgstr ""
"Добро пожаловать в учебное руководство Cheat Engine (v3.4)\n"
"Добро пожаловать в учебное руководство Cheat Engine\n"
"\n"
"Это учебное руководство научит вас основам читерства в видеоиграх. Оно также покажет вам основополагающие аспекты использования Cheat Engine. Выполните шаги ниже, чтобы начать обучение.\n"
"\n"
@ -369,7 +357,7 @@ msgstr "Случайная игра"
#: unit10.rsstep9sharedcodepw
msgid "Step 9: Shared code: (PW=%s)"
msgstr "Шаг 9: Совместно используемый код: (пароль=%s)"
msgstr "Шаг 9: Общий код: (пароль=%s)"
#: unit10.rsstop
msgid "Stop"
@ -391,8 +379,8 @@ msgid ""
"\n"
"Often when you've found health of a unit or your own player, you will find that if you remove the code, it affects enemies as well.\n"
"In these cases you must find out how to distinguish between your and the enemies objects.\n"
"Sometimes this is as easy as checking the first 4 bytes (Function pointer table) which often point to a unique location for the player, and sometimes it's a team number, or a pointer to a pointer to a pointer to a pointer to a pointer to a playername. It all depends on the "
"complexity of the game, and your luck\n"
"Sometimes this is as easy as checking the first 4 bytes (Function pointer table) which often point to a unique location for the player, and sometimes it's a team number, or a pointer to a pointer to a pointer to a pointer to a pointer to a playername. It all depends on the complexity of the "
"game, and your luck\n"
"\n"
"The easiest method is finding what addresses the code you found writes to and then use the dissect data feature to compare against two structures. (Your unit(s)/player and the enemies) And then see if you can find out a way to distinguish between them.\n"
"When you have found out how to distinguish between you and the computer you can inject an assembler script that checks for the condition and then either do not execute the code or do something else. (One hit kills for example)\n"
@ -410,15 +398,15 @@ msgstr ""
"\n"
"Часто бывает так, что вы делаете что-либо с инструкцией, работающей со здоровьем вашего игрока и тоже самое происходит со здоровьем врагов.\n"
"В таких случаях вам необходимо выяснить, как можно отличить вашего игрока от врагов.\n"
"Иногда это так же просто, как проверка первых четырёх байт структуры (Таблица указателей на функции), которые часто указывают на уникальное расположение для игрока, а иногда это номер команды (id), в которой состоит игрок, или указатель на указатель на указатель на "
"указатель на указатель на имя_игрока. Всё зависит от сложности игры и вашей удачи.\n"
"Иногда это так же просто, как проверка первых четырёх байт структуры (Таблица указателей на функции), которые часто указывают на уникальное расположение для игрока, а иногда это номер команды (id), в которой состоит игрок, или указатель на указатель на указатель на указатель на указатель на "
"имя_игрока. Всё зависит от сложности игры и вашей удачи.\n"
"\n"
"Самый лёгкий метод - узнать в какие адреса записывает инструкция, определить начала структур (Вашего объекта/персонажа и вражеских) и попытаться найти различия между ними, воспользовавшись функцией «Анализ данных/структур».\n"
"Когда вы узнали, как отличить вашего игрока от компьютера, вы можете выполнить инъекцию ассемблерного скрипта, в котором сначала сверяется условие (ваш ли это игрок/объект или вражеский), а затем либо просто выполняется оригинальный код, либо делается что-то ещё (например: "
"убийство с одного удара). Так же, вы можете использовать отличительные особенности структур для создания так называемой строки «Массива байт», поиск которой поможет найти структуры всех ваших или вражеских игроков/объектов.\n"
"Когда вы узнали, как отличить вашего игрока от компьютера, вы можете выполнить внедрение ассемблерного скрипта, в котором сначала сверяется условие (ваш ли это игрок/объект или вражеский), а затем либо просто выполняется оригинальный код, либо делается что-то ещё (например: убийство с одного "
"удара). Так же, вы можете использовать отличительные особенности структур для создания так называемой строки «Массива байт», поиск которой поможет найти структуры всех ваших или вражеских игроков/объектов.\n"
"\n"
"Специально для этого примера, я сделал самую классную игру из всех, в которые вы когда-либо играли. В ней присутствует 4 игрока: 2 игрока в вашей команде и 2 игрока в команде компьютера. Ваша задача состоит в том, чтобы найти инструкцию, которая пишет в адрес со значением "
"здоровья и выиграть игру БЕЗ замораживания здоровья ваших игроков.\n"
"Специально для этого примера, я сделал самую классную игру из всех, в которые вы когда-либо играли. В ней присутствует 4 игрока: 2 игрока в вашей команде и 2 игрока в команде компьютера. Ваша задача состоит в том, чтобы найти инструкцию, которая пишет в адрес со значением здоровья и выиграть "
"игру БЕЗ замораживания здоровья ваших игроков.\n"
msgid "This was the last tutorial and you skipped it. You lose"
msgstr "Это был последний шаг, а ты и его пропустил. Бездельник"
msgstr "Это был последний шаг и ты его пропустил. Ты проиграл"
#: unit2.rsawyouredeathletmereviveyou
msgctxt "unit2.rsawyouredeathletmereviveyou"
msgid "Aw, you're dead! Let me revive you"
msgstr "Вы умерли! Позвольте вас оживить."
msgstr "Вы умерли! Позвольте вас оживить"
#: unit2.rsloser
msgctxt "unit2.rsloser"
@ -459,13 +447,12 @@ msgid ""
"To get to the next step you have to find this value and change it to 1000\n"
"\n"
"To find the value there are different ways, but I'll tell you about the easiest, 'Exact Value':\n"
"First make sure value type is set to at least 2-bytes or 4-bytes. 1-byte will also work, but you'll run into an easy to fix problem when you've found the address and want to change it. The 8-byte may perhaps works if the bytes after the address are 0, but I wouldn't take "
"the bet.\n"
"First make sure value type is set to at least 2-bytes or 4-bytes. 1-byte will also work, but you'll run into an easy to fix problem when you've found the address and want to change it. The 8-byte may perhaps works if the bytes after the address are 0, but I wouldn't take the bet.\n"
"Single, double, and the other scans just don't work, because they store the value in a different way.\n"
"\n"
"When the value type is set correctly, make sure the scantype is set to 'Exact Value'\n"
"Then fill in the number your health is in the value box. And click 'First Scan'\n"
"After a while (if you have a extremely slow pc) the scan is done and the results are shown in the list on the left\n"
"After a while (if you have an extremely slow pc) the scan is done and the results are shown in the list on the left.\n"
"\n"
"If you find more than 1 address and you don't know for sure which address it is, click 'Hit me', fill in the new health value into the value box, and click 'Next Scan'\n"
"repeat this until you're sure you've found it. (that includes that there's only 1 address in the list.....)\n"
@ -473,34 +460,35 @@ msgid ""
"Now double click the address in the list on the left. This makes the address pop-up in the list at the bottom, showing you the current value.\n"
"Double click the value, (or select it and press enter), and change the value to 1000.\n"
"\n"
"If everything went ok the next button should become enabled, and you're ready for the next step.\n"
"If everything went ok the Next button should become enabled, and you're ready for the next step.\n"
"\n"
"\n"
"Note:\n"
"If you did anything wrong while scanning, click \"New Scan\" and repeat the scanning again.\n"
"Also, try playing around with the value and click 'hit me'\n"
"Also, try playing around with the value and click 'Hit me'.\n"
msgstr ""
"Теперь, когда у вас открыты Cheat Engine и это учебное руководство, вы можете приступить к следующему шагу.\n"
"\n"
"В нижней части окна вы можете увидеть текст «Здоровье: ххх»\n"
"Каждый раз, когда вы нажимаете на кнопку «Удар», здоровье будут уменьшаться.\n"
"Каждый раз, когда вы нажимаете на кнопку «Удар», здоровье будет уменьшаться.\n"
"\n"
"Чтобы перейти к следующему шагу, вам необходимо найти значение здоровья и изменить его на 1000\n"
"\n"
"Это значение можно найти различными способами, но я расскажу вам о самом простом, «Точное значение»:\n"
"Для начала выберите тип значения «2 Байта» или «4 Байта». «1 Байт» тоже сгодиться, но тогда вы не сможете изменить значение на «1000» (что можно легко исправить). Так же можно использовать и «8 Байт», но я не стал бы это делать.\n"
"Для начала выберите тип значения «2 Байта» или «4 Байта». «1 Байт» тоже сгодится, но тогда вы не сможете изменить значение на «1000» (что можно легко исправить). Так же можно использовать и «8 Байт», но я не стал бы это делать.\n"
"Такие типы значения как «Float», «Double» и другие сейчас не сработают, т.к. в них значения хранятся по-другому.\n"
"\n"
"Теперь, когда тип значения был выбран правильно, убедитесь, что типом поиска указано «Точное значение».\n"
"Далее, укажите количество здоровья в поле «Значение» и нажмите кнопку «Поиск»\n"
"Через некоторое время (в зависимости от мощности вашего компьютера) поиск завершится, аего результаты появятся в виде списка, расположенного в левой части программы.\n"
"\n"
"Если в этом списке будет более одного адреса, и вы не знаете наверняка в каком из них хранится значение здоровья, то нажмите кнопку «Удар» ещё раз, введите новое значение здоровья в поле «Значение» и нажмите на кнопку «Отсев». Повторяйте данную процедуру пока не будете "
"уверены, что нашли нужный адрес. (или пока в списке не останется только 1 адрес...)\n"
"Если в этом списке будет более одного адреса, и вы не знаете наверняка в каком из них хранится значение здоровья, то нажмите кнопку «Удар» ещё раз, введите новое значение здоровья в поле «Значение» и нажмите на кнопку «Отсев». Повторяйте данную процедуру пока не будете уверены, что нашли "
"нужный адрес. (или пока в списке не останется только 1 адрес...)\n"
"Теперь сделайте двойной клик по найденному адресу (или выделите его и нажмите клавишу «Enter») и поменяйте значение на 1000.\n"
"\n"
"Если всё сделано правильно, то вам станет доступна кнопка «Дальше» и вы сможете перейти к следующему шагу.\n"
"\n"
"\n"
"Примечание:\n"
"Если вы допустили какую-либо ошибку при поиске, то нажмите на кнопку «Нов. поиск» и проделайте все действия ещё раз.\n"
@ -520,41 +508,40 @@ msgstr "Шаг 3: Неизвестное значение (пароль="
#: unit3.rstryagain3
msgid "Step 3 isn't really that hard. Just do a new scan, unkown initial value and then decreased value till you find it. Almost everyone gets past this one. Sure you want to quit?"
msgstr ""
"Этот шаг на самом деле не так сложен. Просто начните с поиска неизвестного значения, нажимайте на кнопку «Удар» и производите отсев по правилу «Значение уменьшилось» до тех пор, пока не найдёте нужный адрес. Любой может справиться с этим.\n"
"Шаг 3, на самом деле, не так сложен. Просто начните с поиска неизвестного значения, нажимайте на кнопку «Удар» и производите отсев по правилу «Значение уменьшилось» до тех пор, пока не найдёте нужный адрес. Почти все справляются с этим.\n"
"Вы уверены, что хотите выйти?"
#: unit3.rstutorialstep3
msgid ""
"Ok, seeing that you've figured out how to find a value using exact value let's move on to the next step.\n"
"\n"
"First things first though. Since you are doing a new scan, you have to click on New Scan first, to start a new scan. (You may think this is straighforward, but you'd be surprised how many people get stuck on that step) I won't be explaining this step again, so keep this in "
"mind\n"
"Now that you've started a new scan, let's continue\n"
"First things first though. Since you are doing a new scan, you have to click on New Scan first, to start a new scan. (You may think this is straighforward, but you'd be surprised how many people get stuck on that step) I won't be explaining this step again, so keep this in mind.\n"
"Now that you've started a new scan, let's continue.\n"
"\n"
"In the previous test we knew the initial value so we could do a exact value, but now we have a status bar where we don't know the starting value.\n"
"We only know that the value is between 0 and 500. And each time you click 'hit me' you lose some health. The amount you lose each time is shown above the status bar.\n"
"In the previous test we knew the initial value so we could do an exact value search, but now we have a status bar where we don't know the starting value.\n"
"We only know that the value is between 0 and 500. And each time you click 'Hit me' you lose some health. The amount you lose each time is shown above the status bar.\n"
"\n"
"Again there are several different ways to find the value. (like doing a decreased value by... scan), but I'll only explain the easiest. \"Unknown initial value\", and decreased value.\n"
"Because you don't know the value it is right now, a exact value wont do any good, so choose as scantype 'Unknown initial value', again, the value type is 4-bytes. (most windows apps use 4-bytes)click first scan and wait till it's done.\n"
"Because you don't know the value it is right now, exact value wont do any good, so choose as scantype 'Unknown initial value', again, the value type is 4-bytes. (Most windows apps use 4-bytes.) Click First scan and wait till it's done.\n"
"\n"
"When it is done click 'hit me'. You'll lose some of your health. (the amount you lost shows for a few seconds and then disappears, but you don't need that)\n"
"When it is done click 'Hit me'. You'll lose some of your health. (the amount you lost shows for a few seconds and then disappears, but you don't need that)\n"
"Now go to Cheat Engine, and choose 'Decreased Value' and click 'Next Scan'\n"
"When that scan is done, click hit me again, and repeat the above till you only find a few. \n"
"When that scan is done, click 'Hit me' again, and repeat the above till you only find a few. \n"
"\n"
"We know the value is between 0 and 500, so pick the one that is most likely the address we need, and add it to the list.\n"
"Now change the health to 5000, to proceed to the next step.\n"
msgstr ""
"Хорошо, видимо вы разобрались с поиском точного значения, что позволило нам приступить к следующему шагу.\n"
"\n"
"Вначале о самом важном. Поскольку вы делаете новый поиск, то первым делом вам нужно нажать на кнопку \"Нов. поиск\", для того чтобы его начать (Вы можете подумать: «Это же очевидно». Но вы были бы удивлены, узнав как много людей застревает на этом шаге). Я не буду объяснять "
"это снова, поэтому имейте это в виду.\n"
"Вначале о самом важном. Поскольку вы делаете новый поиск, то первым делом вам нужно нажать на кнопку «Нов. поиск», для того чтобы его начать (Вы можете подумать: «Это же очевидно». Но вы были бы удивлены, узнав как много людей застревает на этом шаге). Я не буду объяснять это снова, поэтому "
"имейте это в виду.\n"
"Теперь, когда вы начали новый поиск, давайте продолжим.\n"
"\n"
"В предыдущем шаге мы точно знали начальное значение, поэтому мы могли произвести поиск «Точного значения», но сейчас у нас есть только полоска, без каких-либо чисел.\n"
"Всё что нам известно, так это то, что значение находится в диапазоне от 0 до 500. И каждый раз, после нажатия на кнопку «Удар», теряется часть здоровья. Сколько именно - отображается над полоской.\n"
"\n"
"И тут есть несколько способов найти значение (например: выполняя отсев по правилу «Значение уменьшилось на...»), но я объясню вам самое простое. Будут использованы только два типа поиска - «Неизвестное значение» и «Значение уменьшилось».\n"
"Т.к прямо сейчас значение нам не известно, то от поиска «Точного значения» не будет никакой пользы, поэтому выберите «Неизвестное значение», а тип, как и в прошлый раз, «4 Байта» (большинство приложений в Windows используют именно этот тип данных).\n"
"Т.к прямо сейчас значение нам не известно, то от поиска «Точного значения» не будет никакой пользы, поэтому выберите «Неизвестное значение», а тип, как и в прошлый раз, «4 Байта» (большинство приложений Windows используют 4-байтовый тип).\n"
"Нажмите на кнопку «Поиск» и ждите его завершения.\n"
"\n"
"После завершения поиска нажмите на кнопку «Удар». Часть здоровья теряется (Потерянное количество будет отображаться над полоской в течении нескольких секунд, а затем исчезнет, но нам это значение и не нужно).\n"
@ -567,7 +554,7 @@ msgstr ""
#: unit5.rsconfirmclose5
msgid "Come on. This step is simple. For health do a float scan, and for ammo a double type. (don't forget to disable fastscan for double in this case) Just ignore the fact that it looks different because it has a \".\" in the value. You sure you want to quit?"
msgstr ""
"Да ладно, это же просто. Выполняйте поиск, используя тип данных «Float» для нахождения значения здоровья и «Double» для патрон. (Не забудьте отключить «Быстрый поиск» при поиске «Double» значения).\n"
"Да ладно, это же просто. Выполняйте поиск, используя тип данных «Float» для нахождения значения здоровья и «Double» для патрон. (Не забудьте отключить «Быстрый поиск» при поиске «Double» значения). Просто игнорируйте тот факт, что он выглядит по-другому, потому что у него есть «.» в значении.\n"
"Hint: It is recommended to disable \"Fast Scan\" for type double\n"
msgstr ""
"В предыдущем шаге мы искали только целые числа, но некоторые игры хранят значения в виде так называемого «числа с плавающей точкой» (вероятно, чтобы усложнить поиск для простых сканеров памяти). Число с плавающей точкой - это значение с некими цифрами после точки (например: "
"5.12 или 11321.1)\n"
"В предыдущем шаге мы искали только целые числа, но некоторые игры хранят значения в виде так называемого «числа с плавающей точкой» (вероятно, чтобы усложнить поиск для простых сканеров памяти). Число с плавающей точкой - это значение с некими цифрами после точки (например: 5.12 или 11321.1)\n"
"\n"
"В нижней части окна вы можете видеть количество вашего здоровья и патрон. Значения обоих из них хранятся в виде чисел с плавающей точкой, но значение здоровья хранится как Float, а патрон - как Double.\n"
"При нажатии на кнопку «Удар» вы утратите часть здоровья, а при нажатии на кнопку «Выстрел» количество патрон уменьшится на 0.5\n"
"В нижней части окна вы можете видеть количество вашего здоровья и патрон. Оба хранятся в виде чисел с плавающей точкой, только значение здоровья хранится как Float, а патрон - как Double.\n"
"При нажатии на кнопку «Удар» вы утратите часть здоровья, а при нажатии на кнопку «Огонь» количество патрон уменьшится на 0.5\n"
"\n"
"Чтобы перейти к следующему шагу, вам нужно изменить значение обоих параметров на 5000 или больше.\n"
"\n"
"В этом случае, вам просто нужно искать и отсеивать «Точное значение», но, чисто для своего развития, вы можете поиграться и с другими типами поиска («Диапазон», «Значение уменьшилось на...», «Больше чем...» «Значение не изменилось» и т.д.)\n"
"Здесь отлично подойдет поиск точного значения, но вы можете поэкспериментировать и с другими типами.\n"
"\n"
"\n"
"\n"
@ -650,54 +636,53 @@ msgid "Step 5: Code finder (PW=%s)"
msgstr "Шаг 5: Нахождение и подмена кода (пароль=%s)"
#: unit6.rstryagain6
msgid "This may look difficult. but it's basicly. Find health, rigthclick health, find what writes, change health, click replace, change health, done. But don't feel down if you don't get it. at least you know the basicas of memory scanning... Are you sure you want to quit?"
msgid "This may look difficult, but it shouldn't be. Basically find health, right click health, find what overwrites it, change health, click replace, change health, done. But don't feel down if you don't get it. At least you know the basics of memory scanning... Are you sure you want to quit?"
msgstr ""
"Это может показаться трудным, но это основа всего. Найдите адрес со значением здоровья, нажмите «Найти инструкции, записывающие по этому адресу», измените значение здоровья, нажмите «Заменить NOP'ами», снова измените значение здоровья - готово. Не расстраивайтесь, если у"
"вас не получится. Как минимум, вы знаете основы поиска в памяти...\n"
"Это может показаться трудным, но это не так. Найдите адрес со значением здоровья, кликните по нему правой кнопкой мыши, выясните что его перезаписывает, измените здоровье, замените всплывшую инструкцию на NOP, измените значение - готово.\n"
"Не расстраивайтесь, если увас не получится. Как минимум, вы знаете основы поиска в памяти...\n"
"Вы уверены, что хотите выйти?"
#: unit6.rstutorialstep5
msgid ""
"Sometimes the location of a value is stored at changes, when you restart the game, or even while you're playing.. In that case you can use 2 things to still make a table that works.\n"
"Sometimes the location of a value is stored at changes, when you restart the game, or even while you're playing. In that case you can use 2 things to still make a table that works.\n"
"In this step I'll try to describe how to use the Code Finder function.\n"
"\n"
"The value down here will be at a different location each time you start the tutorial, so a normal entry in the address list wouldn't work.\n"
"First try to find the address. (you've got to this point so I assume you know how to)\n"
"First try to find the address. (You've got to this point so I assume you know how to do that.)\n"
"When you've found the address, right-click the address in Cheat Engine and choose \"Find out what writes to this address\". A window will pop up with an empty list.\n"
"Then click on the Change value button in this tutorial, and go back to Cheat Engine. If everything went right, there should be an address with assembler code there now.\n"
"Click it and choose the replace option to replace it with code that does nothing. That will also add the code address to the code list in the advanced options window. (Which gets saved if you save your table)\n"
"Click it and choose the Replace option to replace it with code that does nothing. That will also add the code address to the code list in the Advanced Options window. (Which gets saved if you save your table.)\n"
"\n"
"Click on stop, so the game will start running normal again, and close to close the window.\n"
"Click on Stop, so the game will start running normal again, and click on Close to close the window.\n"
"Now, click on Change value, and if everything went right the Next button should become enabled.\n"
"\n"
"Note: When you're freezing the address with a high enough speed it may happen that next becomes visible anyhow\n"
"Note: When you're freezing the address with a high enough speed it may happen that Next becomes visible anyhow.\n"
msgstr ""
"Иногда найденные вами адреса, с какими-либо значениями, меняются при перезапуске игры или даже во время самой игры. В таком случае, вы можете воспользоваться несколькими способами для создания рабочей таблицы.\n"
"Иногда расположение значения меняется при перезапуске игры или даже во время самой игры. В таком случае, вы можете воспользоваться несколькими способами для создания рабочей таблицы. В этом шаге я попытаюсь описать способ нахождения и подмены кода.\n"
"\n"
"В этом шаге я расскажу об одном таком способе - нахождение и подмена кода.\n"
"Адрес со значением, расположенным ниже, будет меняться при каждом перезапуске этой обучающей программы, поэтому просто нахождение адреса нам не поможет, т.к. в следующий раз он будет другим.\n"
"\n"
"Чтобы пройти этот шаг, нам нужно с помощью подмены кода сделать так, чтобы при нажатии на кнопку «Изменить значение» значение оставалось прежним.\n"
"\n"
"Для начала попробуйте найти адрес. (Думаю, к этому моменту, вы уже знаете как это сделать)\n"
"После того как вы нашли нужный адрес и добавили его в таблицу, нажмите на него правой кнопкой мыши, выберите и нажмите «Найти инструкции, записывающие по этому адресу». Откроется окно «Следующие инструкции записывают в ххххх» с пустым списком.\n"
"Теперь нажмите кнопку «Изменить значение» в этой обучающей программе, а затем снова вернитесь в Cheat Engine. Если всё сделано правильно, то в списке появится адрес с ассемблерной инструкцией.\n"
"Выделите её и нажмите на кнопку «Заменить NOP'ами», которая заменит выбранную инструкцию на NOP (NOP - инструкция процессора на языке ассемблера, которая предписывает ничего не делать), а также добавит адрес с этой инструкцией в список кодов, которые расположены в окне "
"«Дополнительные возможности». Если вы сохраните таблицу, то и этот список будет сохранён вместе с ней.\n"
"После того как вы нашли нужный адрес и добавили его в таблицу, нажмите на него правой кнопкой мыши, выберите и нажмите «Выяснить, что записывает по этому адресу». Откроется окно «Следующие инструкции записывают в ххххх» с пустым списком.\n"
"Теперь нажмите кнопку «Изменить значение» в этой обучающей руководстве, а затем снова вернитесь в Cheat Engine. Если всё сделано правильно, то в списке появится адрес с ассемблерной инструкцией.\n"
"Выделите её и нажмите на кнопку «Заменить на NOP», которая заменит выбранную инструкцию на NOP (NOP - инструкция процессора на языке ассемблера, которая предписывает ничего не делать), а также добавит адрес с этой инструкцией в список кодов, которые расположены в окне «Дополнительные "
"возможности». Если вы сохраните таблицу, то и этот список будет сохранён вместе с ней.\n"
"\n"
"Нажмите на кнопку «Остановить» и закройте окно «Следующие инструкции записывают в ххххх».\n"
"Теперь нажмите на кнопку «Изменить значение» и, если всё сделано правильно, кнопка «Дальше» станет доступна.\n"
"\n"
"Примечание: Если вы заморозите адрес с достаточно высоким интервалом заморозки, то может случится так, что кнопка «Дальше» также станет доступна\n"
"Примечание: Если вы заморозите адрес с достаточно высокой скоростью, то может случится так, что кнопка «Дальше» также станет доступна\n"
#: unit6.rswelldoneyouscrewedupthetutorial
msgctxt "unit6.rswelldoneyouscrewedupthetutorial"
msgid "Well done, you screwed up the tutorial!!!!"
msgstr "Отлично! Вы справились с заданием!!!!"
msgstr "Молодец, ты запорол учебное руководство!!!!"
#: unit7.rsdontfuckingfreezethepointer
msgid "I'm sorry, but freezing the pointer is not really a functional solution"
msgstr "Простите, но заморозка указателя - это не совсем функциональное решение."
msgstr "Простите, но заморозка указателя - это не совсем функциональное решение"
msgid "So, pointers are too difficult eh? Don't worry, try again later. For most beginners this is difficult to grasp. But I have to tell you it's a powerfull feature if you learn to use it. Are you sure you want to quit?"
msgid "So, pointers are too difficult eh? Don't worry, try again later. For most beginners this is difficult to grasp. But I have to tell you it's a powerful feature if you learn to use it. Are you sure you want to quit?"
msgstr ""
"Неужели указатели так сложны? Не волнуйтесь, попробуйте ещё раз позже. Большинству новичкам трудно понять это сразу. Однако, указатели откроют большие возможности, если вы научитесь ими пользоваться.\n"
"Неужели указатели так сложны? Не волнуйтесь, попробуйте ещё раз позже. Большинству новичкам трудно понять это сразу. Но я должен вам сказать, что это очень мощная функция, если вы научитесь её использовать.\n"
"Вы уверены, что хотите выйти?"
#: unit7.rstutorialstep6
@ -723,47 +708,46 @@ msgid ""
"For this step you don't really need to know assembler, but it helps a lot if you do.\n"
"\n"
"First find the address of the value. When you've found it use the function to find out what accesses this address.\n"
"Change the value again, and a item will show in the list. Double click that item. (or select and click on more info) and a new window will open with detailed information on what happened when the instruction ran.\n"
"Change the value again, and an item will show up in the list. Double click that item. (or select and click on more info) and a new window will open with detailed information on what happened when the instruction ran.\n"
"If the assembler instruction doesn't have anything between a '[' and ']' then use another item in the list.\n"
"If it does it will say what it think will be the value of the pointer you need.\n"
"Go back to the main cheat engine window (you can keep this extra info window open if you want, but if you close it, remember what is between the [ and ] ) and do a 4 byte scan in hexadecimal for the value the extra info told you.\n"
"When done scanning it may return 1 or a few hundred addresses. Most of the time the address you need will be the smallest one. Now click on the "Add Address Manually" button and select the pointer checkbox.\n"
"Go back to the main cheat engine window (you can keep this extra info window open if you want, but if you close it, remember what is between the '[' and ']' ) and do a 4 byte scan in hexadecimal for the value the extra info told you.\n"
"When done scanning it may return 1 or a few hundred addresses. Most of the time the address you need will be the smallest one. Now click on the \"Add Address Manually\" button and select the pointer checkbox.\n"
"\n"
"The window will change and allow you to type in the address of a pointer and a offset.\n"
"Fill in as address the address you just found.\n"
"If the assembler instruction has a calculation (e.g: [esi+12]) at the end then type the value in that's at the end. else leave it 0. If it was a more complicated instruction look at the calculation.\n"
"The window will change and allow you to type in the address of a pointer and an offset.\n"
"Fill in the address you just found. It can be in the form: \"Tutorial-i386.exe\"+xxxxxx (relative to the process), \n"
"or you can double click the address to add it to the address list and use the absolute address which appears there.\n"
"If the assembler instruction has a calculation (e.g: [esi+12]) at the end then type the value in that's at the end above the address field. This is the offset. Otherwise leave it 0. If it was a more complicated instruction look at the following calculation.\n"
"\n"
"example of a more complicated instruction:\n"
"Example of a more complicated instruction:\n"
"[EAX*2+EDX+00000310] eax=4C and edx=00801234.\n"
"In this case EDX would be the value the pointer has, and EAX*2+00000310 the offset, so the offset you'd fill in would be 2*4C+00000310=3A8. (this is all in hex, use calc.exe from windows in scientific mode to calculate)\n"
"In this case EDX would be the value the pointer has, and EAX*2+00000310 the offset, so the offset you'd fill in would be 2*4C+00000310=3A8. (This is all in hex, use calc.exe from Windows in Programmer mode to calculate hex values.)\n"
"\n"
"Back to the tutorial, click OK and the address will be added, If all went right the address will show P->xxxxxxx, with xxxxxxx being the address of the value you found. If thats not right, you've done something wrong.\n"
"Now, change the value using the pointer you added in 5000 and freeze it. Then click Change pointer, and if all went \n"
"right the next button will become visible.\n"
"Back to the tutorial, click OK and the address will be added. If all went right the address will show P->xxxxxxx, with xxxxxxx being the address of the value you found. If that's not right, you've done something wrong.\n"
"Now, change the value using the pointer you added in to 5000 and click in the 'Active' coloumn to freeze it. Then click Change pointer, and if all went right the Next button will become visible.\n"
"\n"
"\n"
"extra:\n"
"And you could also use the pointer scanner to find the pointer to this address\n"
"You could also use the pointer scanner to find the pointer to this address. https://cheatengine.org/help/pointer-scan.htm\n"
msgstr ""
"В предыдущем шаге мы научились замораживать значение динамического адреса при помощи подмены кода, но тот метод не позволяет изменять само значение адреса когда захотим.\n"
"Вот почему есть указатели:\n"
"Внизу вы видите две кнопки. Одна изменяет значение, а другая изменяет и само значение, и адрес в котором оно хранится.\n"
"На данном этапе знание ассемблера не обязательно, но оно бы вам очень помогло.\n"
"\n"
"Для начала найдите адрес со значением. После того как вы его нашли и добавили в таблицу, нажмите на него правой кнопкой мыши и выберите и нажмите «Найти инструкции, обращающиеся к этому адресу», чтобы найти ассемблерные инструкции, которые получают доступ к этому адресу. "
"Теперь измените значение нажатием кнопки «Изменить значение» в обучающей программе и, в появившимся окне Cheat Engine, вы увидите список с ассемблерными инструкциями. Сделайте двойной клик по одной из них (или выделите инструкцию и нажмите на кнопку «Дополнительная "
"информация») и появится новое окно с детальной информацией о том, что произошло при срабатывании этой инструкции.\n"
"\n"
"Если в ассемблерной инструкции нет квадратных скобок «[» и «]», то выберите другую инструкцию из списка, где они присутствуют.\n"
"Теперь нажмите на кнопку «Дополнительная информация» и скопируйте значение, указанное в «Вероятное значение указателя, нужное для нахождения этого адреса:»\n"
"\n"
"Вернитесь в главное окно Cheat Engine и начните поиск значения, которое вы скопировали из «Вероятное значение указателя, нужное для нахождения этого адреса:» или чуть ниже, где отображено состояние регистров (если инструкция имеет вид «mov [edx],eax», то смотрите состояние "
"регистра edx). Выберите тип данных «4 Байта» и поставьте галочку напротив «Hex», т.к. это значение отображено в шестнадцатеричном виде. Поиск может завершится нахождением одного или нескольких сотен адресов. В большинстве случаев, адресов находится не очень много. Теперь "
"нажмите на кнопку «Добавить адрес» и, в появившемся окне, поставьте галочку напротив «Указатель».\n"
"Для начала найдите адрес со значением. После того как вы его нашли, используйте функцию «Выяснить, что обращается к этому адресу».\n"
"Теперь измените значение нажатием кнопки «Изменить значение» в обучающем руководстве и в появившимся окне Cheat Engine, вы увидите список с ассемблерными инструкциями. Сделайте двойной клик по ней (или выделите инструкцию и нажмите на кнопку «Дополнительная информация») и появится новое окно с "
"детальной информацией о том, что произошло при срабатывании этой инструкции.\n"
"Если в ассемблерной инструкции нет квадратных скобок «[» и «]», то выберите другую инструкцию из списка.\n"
"Если они есть, то в данном окне будет отображено вероятное значение указателя.\n"
"Вернитесь в главное окно Cheat Engine и начните поиск значения, которое вы скопировали из «Вероятное значение указателя, нужное для нахождения этого адреса:» или чуть ниже, где отображено состояние регистров (если инструкция имеет вид «mov [edx],eax», то смотрите значение регистра «edx»). "
"Выберите тип данных «4 Байта» и поставьте галочку напротив «Hex», т.к. это значение отображено в шестнадцатеричном виде. Поиск может завершится нахождением одного или нескольких сотен адресов. В большинстве случаев, адресов находится не очень много. Теперь нажмите на кнопку «Добавить адрес» и, "
"в появившемся окне, поставьте галочку напротив «Указатель».\n"
"\n"
"Окно добавления адреса изменится и мы можем заполнить указатель и смещение.\n"
"В качестве адреса укажите только что найденный адрес.\n"
"Если ассемблерная инструкция выполняет некие вычисления (например: [esi+12]), то в качестве смещения укажите число 12, в противном случае (если просто [esi]) оставьте 0.\n"
"В качестве адреса укажите только что найденный адрес. Он может быть в виде: «Tutorial-i386.exe» + xxxxxx (в зависимости от названия процесса),\n"
"или вы можете кликнуть дважды по адресу для его добавления в таблицу и использовать абсолютный адрес, который появится там.\n"
"Если ассемблерная инструкция содержит вычисление (например: [esi+12]), то в качестве смещения укажите число 12. В противном случае (если просто [esi]) оставьте 0.\n"
"Ассемблерная инструкция может иметь и более сложные вычисления.\n"
"\n"
"Например:\n"
@ -772,22 +756,22 @@ msgstr ""
"(На системах выше Windows XP, вместо инженерного режима, нужно использовать режим программиста.)\n"
"\n"
"Но вернёмся обратно к нашему уроку.\n"
"В окне «Добавить адрес» вы уже ввели указатель и смещение, поэтому нажмите кнопку «Подтвердить». В таблицу Cheat Engine добавится адрес, который будет отображен в виде «У-> xxxxxxx», где «xxxxxxx» - текущий адрес со значением. Если значение этого адреса отличается, то вы "
"сделали что-то не правильно.\n"
"Теперь измените значение добавленного вами адреса на 5000 и заморозьте его. Если всё сделано правильно, то после нажатия на кнопку «Изменить указатель» станет доступна кнопка «Дальше».\n"
"В окне «Добавить адрес» вы уже ввели указатель и смещение, поэтому нажмите кнопку «Подтвердить». В таблицу Cheat Engine добавится адрес, который будет отображен в виде «У-> xxxxxxx», где «xxxxxxx» - текущий адрес со значением. Если значение этого адреса отличается, то вы сделали что-то не "
"правильно.\n"
"Теперь измените значение добавленного вами адреса на 5000 и установите флажок в столбце «Актив.» чтобы заморозьте его. Если всё сделано правильно, то после нажатия на кнопку «Изменить указатель» станет доступна кнопка «Дальше».\n"
"\n"
"\n"
"Дополнение:\n"
"Вы также можете воспользоваться сканером указателей («Редактор памяти» -> «Инструменты» -> «Сканирование указателей»), чтобы найти указатель на этот адрес.\n"
"Вы также можете воспользоваться сканером указателей, чтобы найти указатель на этот адрес. https://cheatengine.org/help/pointer-scan.htm\n"
#: unit7.rswelldoneyouscrewedupthetutorial
msgctxt "unit7.rswelldoneyouscrewedupthetutorial"
msgid "Well done, you screwed up the tutorial!!!!"
msgstr "Отлично! Вы справились с заданием!!!!"
msgstr "Молодец, ты испортил учебное руководство!!!!"
msgid "You have %s second%s left to change the value to 5000"
msgstr "У вас есть %s секунд, чтобы изменить значение на 5000"
msgstr "У вас осталось %s секунд, чтобы изменить значение на 5000"
#: unit8.rsawyouredeathletmereviveyou
msgctxt "unit8.rsawyouredeathletmereviveyou"
@ -805,12 +789,12 @@ msgstr "БУ!"
#: unit8.rsstep7codeinjectionpw
msgid "Step 7: Code Injection: (PW=%s)"
msgstr "Шаг 7: Инъекция кода: (пароль=%s)"
msgstr "Шаг 7: Внедрение кода: (пароль=%s)"
#: unit8.rstryagain8
msgid "Code injections too tough? No problem, memory scanning and basic pointers should be enough to get you experienced enough and you can always try the tutorial later. Are you sure you want to quit?"
msgstr ""
"Инъекция кода кажется слишком трудной? Не беда, умение находить значения и простые указатели говорит о том, что вы уже достаточно опытны, и вы всегда можете попытаться пройти этот шаг ещё раз.\n"
"Внедрение кода кажется слишком трудной? Не беда, умение находить значения и простые указатели говорит о том, что вы уже достаточно опытны, и вы всегда можете попытаться пройти этот шаг ещё раз.\n"
"Вы уверены, что хотите выйти?"
#: unit8.rstutorialstep7
@ -818,44 +802,45 @@ msgid ""
"Code injection is a technique where you inject a piece of code into the target process, and then reroute the execution of code to go through your own written code.\n"
"\n"
"In this tutorial you'll have a health value and a button that will decrease your health by 1 each time you click it.\n"
"Your task is to use code injection to make the button increase your health by 2 each time it is clicked\n"
"Your task is to use code injection to make the button increase your health by 2 each time it is clicked.\n"
"\n"
"Start with finding the address and then find what writes to it.\n"
"then when you've found the code that decreases it browse to that address in the disassembler, and open the auto assembler window (ctrl+a)\n"
"There click on template and then code injection, and give it the address that decreases health (If it isn't already filled in correctly)\n"
"Then when you've found the code that decreases it browse to that address in the disassembler, and open the auto assembler window (Ctrl+A).\n"
"There click on template and then code injection, and give it the address that decreases health (if it isn't already filled in correctly).\n"
"That will generate a basic auto assembler injection framework you can use for your code.\n"
"\n"
"Notice the alloc, that will allocate a block of memory for your code cave, in the past, in the pre windows 2000 systems, people had to find code caves in the memory(regions of memory unused by the game), but that's luckily a thing of the past since windows 2000, and will "
"these days cause errors when trying to be used, due to SP2 of XP and the NX bit of new CPU's\n"
"Notice the alloc, that will allocate a block of memory for your code cave, in the past, in the pre windows 2000 systems, people had to find code caves in the memory(regions of memory unused by the game), but that's luckily a thing of the past since windows 2000, and will these days cause "
"errors when trying to be used, due to SP2 of XP and the NX bit of new CPUs.\n"
"\n"
"Also notice the line newmem: and originalcode: and the text \"Place your code here\"\n"
"Also notice the line newmem: and originalcode: and the text \"Place your code here\".\n"
"As you guessed it, write your code here that will increase the health with 2.\n"
"An usefull assembler instruction in this case is the \"ADD instruction\"\n"
"here are a few examples:\n"
"A useful assembler instruction in this case is the \"ADD instruction\".\n"
"\n"
"Here are a few examples:\n"
"\"ADD [00901234],9\" to increase the address at 00901234 with 9\n"
"\"ADD [ESP+4],9\" to increase the address pointed to by ESP+4 with 9\n"
"In this case, you'll have to use the same thing between the brackets as the original code has that decreases your health\n"
"In this case, you'll have to use the same thing between the brackets as the original code has that decreases your health.\n"
"\n"
"Notice:\n"
"It is recommended to delete the line that decreases your health from the original code section, else you'll have to increase your health with 3 (you increase with 3, the original code decreases with 1, so the end result is increase with 2), which might become confusing. But "
"it's all up to you and your programming.\n"
"It is recommended to delete the line that decreases your health from the original code section, else you'll have to increase your health with 3 (you increase with 3, the original code decreases with 1, so the end result is increase with 2), which might become confusing. But it's all up to you "
"and your programming.\n"
"\n"
"Notice 2:\n"
"In some games the original code can exist out of multiple instructions, and sometimes, not always, it might happen that a code at another place jumps into your jump instruction end will then cause unknown behavior. If that happens, you should usually look near that "
"instruction and see the jumps and fix it, or perhaps even choose to use a different address to do the code injection from. As long as you're able to figure out the address to change from inside your injected code.\n"
"In some games the original code can exist out of multiple instructions, and sometimes, not always, it might happen that a code at another place jumps into your jump instruction end will then cause unknown behavior. If that happens, you should usually look near that instruction and see the "
"jumps and fix it, or perhaps even choose to use a different address to do the code injection from. As long as you're able to figure out the address to change from inside your injected code.\n"
msgstr ""
"Инъекция кода - это метод, при котором в выбранный процесс программы добавляется кусок кода с перенаправлением выполнения оригинального кода через добавленный вами код.\n"
"Внедрение кода - это метод, при котором в выбранный процесс программы добавляется кусок кода с перенаправлением выполнения оригинального кода через добавленный вами код.\n"
"\n"
"На этом шаге у вас есть значение здоровья и кнопка для его уменьшения на 1.\n"
"Ваша задача состоит в том, чтобы использовать инъекцию кода для увеличения значения здоровья на 2 при каждом нажатии на кнопку «Удар».\n"
"Ваша задача состоит в том, чтобы использовать внедрение кода для увеличения значения здоровья на 2 при каждом нажатии на кнопку «Удар».\n"
"\n"
"Начните с нахождения адреса, который хранит значение здоровья, затем узнайте какие ассемблерные инструкции его уменьшают. Для этого нажмите «Найти инструкции, записывающие по этому адресу» на найденный адрес, а затем на кнопку «Удар».\n"
"Когда вы нашли нужную инструкцию, перейдите в дизассемблер и откройте окно «Автоассемблер» нажатием сочетания клавиш Ctrl+A (или через меню «Инструменты» -> «Автоассемблер»).\n"
"Теперь нажмите на меню «Шаблон» -> «Инъекция кода» и в появившимся окне укажите адрес, по которому расположена ассемблерная инструкция, уменьшающая здоровье (Если правильный адрес ещё не заполнен, т.к. Cheat Engine автоматически указывает в этой строке адрес выделенной в "
"отладчике ассемблерной инструкции). Сгенерируется шаблон базового скрипта для инъекции, который вы можете использовать для добавления вашего кода.\n"
"Начните с нахождения адреса, а затем найдите то, что записывает по этому адресу\n"
"Когда вы нашли инструкцию, которая уменьшает его, перейдите в дизассемблер и откройте окно «Автоассемблер» (Ctrl+A).\n"
"Теперь нажмите на меню «Шаблон» -> «Внедрение кода» и в появившимся окне укажите адрес, по которому расположена ассемблерная инструкция, уменьшающая здоровье (Если правильный адрес ещё не заполнен, т.к. Cheat Engine автоматически указывает в этой строке адрес выделенной в отладчике "
"ассемблерной инструкции). Сгенерируется шаблон базового скрипта для внедрения, который вы можете использовать для добавления вашего кода.\n"
"\n"
"Обратите внимание на директиву «alloc», которая выделяет блок памяти под ваш код. Когда-то давно, ещё до выхода системы Windows 2000, людям приходилось самостоятельно находить неиспользуемую область памяти (так называемый «code cave») в игре, чтобы внедрить в неё свой код, "
"но, к счастью, всё это осталось в прошлом. В наши дни, вследствие выхода Сервис Пака 2 для Windows XP и технологии NX-Bit у новых процессоров, использование «code cave» может привести к различным ошибкам.\n"
"Обратите внимание на директиву «alloc», которая выделяет блок памяти под ваш код. Когда-то давно, ещё до выхода системы Windows 2000, людям приходилось самостоятельно находить неиспользуемую область памяти (так называемый «code cave») в игре, чтобы внедрить в неё свой код, но, к счастью, всё "
"это осталось в прошлом. В наши дни, вследствие выхода Пакет Обновления 2 для Windows XP и технологии NX-Bit у новых процессоров, использование «code cave» может привести к различным ошибкам.\n"
"Также обратите внимание на строки «newmem:», «originalcode:» и надпись «place your code here»\n"
"Как вы уже догадались, именно там, где находится эта надпись, и нужно ввести наш код, который будет увеличивать значение здоровья на «2».\n"
"Для этого нам на нужно воспользоваться арифметической командой «ADD»\n"
@ -864,13 +849,13 @@ msgstr ""
"«ADD [ESP+4],9» - прибавляет число 9 к значению по адресу, на который указывает ESP+4\n"
"В нашем случае, в качестве адреса нужно использовать тот же адрес, что находится между скобками в оригинальной ассемблерной инструкции, уменьшающей здоровье.\n"
"Примечание:\n"
"В этом случае, в асвтоассемблере рекомендуется удалить из секции «originalcode:» оригинальную инструкцию, уменьшающую здоровье. Иначе вам придётся увеличивать значение здоровья на 3 (Вы увеличиваете значение здоровья на 3, оригинальная инструкция уменьшает это значение на "
"1, в конечном итоге, значение увеличится на 2), что может вас немного запутать. Но всё это зависит только от вас и вашего уровня программирования.\n"
"В этом случае, в асвтоассемблере рекомендуется удалить из секции «originalcode:» оригинальную инструкцию, уменьшающую здоровье. Иначе вам придётся увеличивать значение здоровья на 3 (Вы увеличиваете значение здоровья на 3, оригинальная инструкция уменьшает это значение на 1, в конечном итоге, "
"значение увеличится на 2), что может вас немного запутать. Но всё это зависит только от вас и вашего уровня программирования.\n"
"\n"
"Примечание 2:\n"
"В некоторых играх ассемблерный код, выполняющий действие с каким-либо значением в игре, может состоять из нескольких частей, находящихся в разных местах. И если вы сделаете инъекцию в такой код, то иногда, правда редко, это может привести к тому, что код из другого места "
"прыгнет в конец поставленного вами прыжка, на ваш «code cave», в котором расположен ваш чит, что может привести к непредсказуемым действиям. В таких случаях необходимо просмотреть код рядом с тем местом, куда вы делаете инъекцию, проверить все переходы и поправить их или "
"попробовать использовать другую инструкцию, находящуюся рядом, для выполнения инъекции.\n"
"В некоторых играх ассемблерный код, выполняющий действие с каким-либо значением в игре, может состоять из нескольких частей, находящихся в разных местах. И если вы сделаете внедрение в такой код, то иногда, правда редко, это может привести к тому, что код из другого места прыгнет в конец "
"поставленного вами прыжка, на ваш «code cave», в котором расположен ваш чит, что может привести к непредсказуемым действиям. В таких случаях необходимо просмотреть код рядом с тем местом, куда вы делаете внедрение, проверить все переходы и поправить их или попробовать использовать другую "
"инструкцию, находящуюся рядом, для выполнения внедрения.\n"
msgid "Aw, you've almost reached the end. But don't worry, multilevel pointers can be a real pain when dealing with. If you get more experienced someday you can try it again. Are you sure you want to quit?"
msgstr ""
"Эх, вы ведь почти подошли к концу обучения...Но не волнуйтесь, когда дело доходит до многоуровневых указателей - это может быть реальной головной болью. Однажды вы станете намного опытнее и сможете попытаться пройти этот шаг ещё раз.\n"
"Эх, вы ведь почти подошли к концу обучения. Но не волнуйтесь, когда дело доходит до многоуровневых указателей - это может быть реальной головной болью. Однажды вы станете намного опытнее и сможете попытаться пройти этот шаг ещё раз.\n"
"Вы действительно хотите выйти?"
#: unit9.rstutorialstep8
@ -893,48 +878,47 @@ msgid ""
"In step 6 you had a simple level-1 pointer, with the first address found already being the real base address.\n"
"This step however is a level-4 pointer. It has a pointer to a pointer to a pointer to a pointer to a pointer to the health.\n"
"\n"
"You basicly do the same as in step 6. Find out what accesses the value, look at the instruction and what probably is the base pointer value, and what is the offset, and already fill that in or write it down. But in this case the address you'll find will also be a pointer. "
"You just have to find out the pointer to that pointer exactly the same way as you did with the value. Find out what accesses that address you found, look at the assembler instruction, note the probable instruction and offset, and use that.\n"
"and continue till you can't get any further (usually when the base address is a static address, shown up as green)\n"
"You basicly do the same as in step 6. Find out what accesses the value, look at the instruction and what probably is the base pointer value, and what is the offset, and already fill that in or write it down. But in this case the address you'll find will also be a pointer. You just have to find "
"out the pointer to that pointer exactly the same way as you did with the value. Find out what accesses that address you found, look at the assembler instruction, note the probable instruction and offset, and use that.\n"
"And continue till you can't get any further (usually when the base address is a static address, shown up as green.)\n"
"\n"
"Click Change Value to let the tutorial access the health.\n"
"If you think you've found the pointer path click Change Register. The pointers and value will then change and you'll have 3 seconds to freeze the address to 5000\n"
"If you think you've found the pointer path click Change Register. The pointers and value will then change and you'll have 3 seconds to freeze the address to 5000.\n"
"\n"
"Extra: This problem can also be solved using a auto assembler script, or using the pointer scanner\n"
"Extra2: In some situations it is recommended to change ce's codefinder settings to Access violations when \n"
"Encountering instructions like mov eax,[eax] since debugregisters show it AFTER it was changed, making it hard to find out the the value of the pointer\n"
"Extra: This problem can also be solved using an auto assembler script, or using the pointer scanner.\n"
"Extra2: In some situations it is recommended to change CE's Codefinder settings to Access violations when \n"
"encountering instructions like mov eax,[eax] since debugregisters show it AFTER it was changed, making it hard to find out the value of the pointer.\n"
"\n"
"\n"
"\n"
"\n"
"\n"
"Extra3: If you're still reading. You might notice that when looking at the assembler instructions that the pointer is being read and filled out in the same codeblock (same routine, if you know assembler, look up till the start of the routine). This doesn't always happen, "
"but can be really useful in finding a pointer when debugging is troublesome\n"
"Extra3: If you're still reading. You might notice that when looking at the assembler instructions that the pointer is being read and filled out in the same codeblock (same routine, if you know assembler, look up till the start of the routine). This doesn't always happen, but can be really "
"useful in finding a pointer when debugging is troublesome.\n"
"В «Шаг 6» у вас был простой одноуровневый указатель, первый же найденный адрес и был реальным базовым адресом.\n"
"В этом шаге вы будете иметь дело с четырёхуровневым указателем, т.е. указатель на указатель на указатель на указатель на указатель адреса здоровья.\n"
"\n"
"В основном, вам нужно делать всё тоже самое, что и в «Шаг 6». Найдите адрес с нижеуказанным значением, нажмите «Найти инструкции, обращающиеся к этому адресу», измените значение с помощью кнопки «Изменить значение», взгляните на всплывшие инструкции, узнайте вероятное "
"значение указателя и смещение (последнее нужно запомнить или где-нибудь записать). Начните новый поиск, использовав предполагаемое значение указателя (не забудьте поставить галочку напротив «Hex»).\n"
"Вы нашли адрес. В данном случае, т.к. имеем дело с многоуровневым указателем, найденный адрес так же будет являться указателем. Теперь, аналогичным образом, вам нужно найти указатель на этот указатель. Поставьте на только что найденный адрес «Найти инструкции, обращающиеся "
"к этому адресу», измените значение, взгляните на всплывшие инструкции... И этот найденный адрес будет являться указателем на указатель. Продолжайте поиск, повторяя те же действия (не забывая запоминать/записывать смещения и их последовательность), пока в списке найденных "
"адресов не появится адрес, окрашенный в зелёный цвет.\n"
"Теперь нажмите в Cheat Engine на кнопку «Добавить адрес» и поставьте галку напротив «Указатель». В нижнем поле ввода укажите найденный адрес, окрашенный в зелёный цвет, а чуть выше укажите смещения (сверху вниз) в той последовательности, в которой вы их находили. В конечном "
"итоге, у вас в таблице появится адрес вида «У-> xxxxxxx».\n"
"В основном, вам нужно делать всё тоже самое, что и в «Шаг 6». Найдите адрес с нижеуказанным значением, нажмите «Найти инструкции, обращающиеся к этому адресу», измените значение с помощью кнопки «Изменить значение», взгляните на всплывшие инструкции, узнайте вероятное значение указателя и "
"смещение (последнее нужно запомнить или где-нибудь записать). Начните новый поиск, использовав предполагаемое значение указателя (не забудьте поставить галочку напротив «Hex»).\n"
"Вы нашли адрес. В данном случае, т.к. имеем дело с многоуровневым указателем, найденный адрес так же будет являться указателем. Теперь, аналогичным образом, вам нужно найти указатель на этот указатель. Поставьте на только что найденный адрес «Найти инструкции, обращающиеся к этому адресу», "
"измените значение, взгляните на всплывшие инструкции... И этот найденный адрес будет являться указателем на указатель. Продолжайте поиск, повторяя те же действия (не забывая запоминать/записывать смещения и их последовательность), пока в списке найденных адресов не появится адрес, окрашенный в "
"зелёный цвет.\n"
"Теперь нажмите в Cheat Engine на кнопку «Добавить адрес» и поставьте галку напротив «Указатель». В нижнем поле ввода укажите найденный адрес, окрашенный в зелёный цвет, а чуть выше укажите смещения (сверху вниз) в той последовательности, в которой вы их находили. В конечном итоге, у вас в "
"таблице появится адрес вида «У-> xxxxxxx».\n"
"\n"
"Теперь измените значение адреса «У-> xxxxxxx» на 5000, заморозьте его и нажмите кнопку «Изменить указатель». Если вы нашли верную цепочку указателей, то кнопка «Дальше» станет доступна.\n"
"\n"
"Дополнение: Для решения этого шага можно воспользоваться и сканером указателей, для автоматического нахождения многоуровневого указателя, или вообще не искать их, а написать скрипт автоассемблера.\n"
"Дополнение 2: В некоторых ситуациях, когда вы имеете дело с инструкциями вида mov eax,[eax], рекомендуется изменить настройки «Определителя кода» на «Нарушение доступа», т.к. состояние регистров отладчика показывается только ПОСЛЕ выполнения инструкции, затрудняя поиск "
"указателя\n"
"Дополнение 2: В некоторых ситуациях, когда вы имеете дело с инструкциями вида mov eax,[eax], рекомендуется изменить настройки «Определителя кода» на «Нарушение доступа», т.к. состояние регистров отладчика показывается только ПОСЛЕ выполнения инструкции, затрудняя поиск указателя\n"
"\n"
"\n"
"\n"
"\n"
"\n"
"Дополнение 3: Если вы всё ещё читаете. Вы можете заметить, что ассемблерные инструкции, считающие значение указателя и те, что заполняют это значение, находятся в одном и том же сегменте кода (в одном цикле кода, если вы знаете ассемблер - поищите начало этого цикла). Такая "
"ситуация возникает не всегда, но может быть очень полезна при нахождении указателя, если отладка затруднена.\n"
"Дополнение 3: Если вы всё ещё читаете. Вы можете заметить, что ассемблерные инструкции, считающие значение указателя и те, что заполняют это значение, находятся в одном и том же сегменте кода (в одном цикле кода, если вы знаете ассемблер - поищите начало этого цикла). Такая ситуация возникает "
"не всегда, но может быть очень полезна при нахождении указателя, если отладка затруднена.\n"
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.