Результаты поиска по запросу «

i s p a engineering

»

Запрос:
Создатель поста:
Теги (через запятую):



Dino Crisis Игры unreal engine 5 3D тян длинопост 

Регина из Dino Crisis на Unreal Engine 5

Дизайнер персонажей и 3D-художник Майк Уилсон artstation воссоздал протагонистку Dino Crisis Регину, показав ее анимированную модель в Unreal Engine 5. Таким образом Уилсон хотел показать поклонникам, как мог бы выглядеть современный ремейк или перезапуск классической игры. Уилсон отметил, что в качестве вдохновения использовал модели персонажей из ремейков Resident Evil последних лет, в частности Леона, Клэр, Джилл и Карлоса. Он хотел создать Регину так, как бы она выглядела в стиле Capcom, при этом не исказить классический образ.



Dino Crisis,Игры,unreal engine 5,3D тян,длинопост

Dino Crisis,Игры,unreal engine 5,3D тян,длинопост

Dino Crisis,Игры,unreal engine 5,3D тян,длинопост

Развернуть

Сталкер 2 unreal engine 4 батон 

Сталкер 2

На официальном твиттере GSC Game World анонсировали, что Сталкер 2 будет на Unreal Engine 4 и показали результаты своих работ, а именно супер реалистичный батон.
Сталкер 2,unreal engine 4,батон
Развернуть

Отличный комментарий!

А батоны нынче хреновые стали делать...
Askanio Askanio04.01.202021:57ссылка
+69.6

Визуальные новеллы фэндомы Cheat engine hook hcode 

Делаем собственный hcode к новелле.

Собственно почему бы и нет. В русскоязычном сегменте гайдов никаких нет, в англоязычном все довольно-таки старенькие. Поэтому запилю свой гайд как делать хук код к новелле которую вы собирались почитать, а текст нихуя не вытаскивается.

Во первых нам нужен инструментарий.

1. Cheat Engine как дебагер, удобный, мало весит, имеет вполне себе юзерфрендли интерфейс. Скачать можно всегда с офф сайта https://www.cheatengine.org/

2. Textractor — собственно достойная замена ITH и ITHVNR, хотя если точнее продолжение. Скачать можно на странице релизов с гитхаба https://github.com/Artikash/Textractor/releases

3. Наша подопытная новелла. Я взял тупа первую новеллу к которой просили хук на хонге. Скачать эту новеллу можно отсюда https://sukebei.nyaa.si/view/2640189

A pluet Junior Member Join Date: May 2006 Posts: 28 01-24-2019, 12:32 PM Requesting H-Code'sfor: №£&} >H * A,£ J'Afk-b « A,~3 L â [H-Game] http://www.getchu.com/soft.phtml?id=1029425 O Last edited by pluet; 01 -24-2019, 12:43 PM. #8232,Визуальные новеллы,фэндомы,Cheat engine,hook,hcode


Собственно поехали.

Я скачал данную новеллу и открыл текстрактор. Жмакаем аттач то гейм и выбираем процесс с нашей игрой. Автоматом подхватились нужные треды с обрывками текста.

TP- Textractor □ X ¡brc r Mi ite: ost: [Sffi] ш? ▼ 101Ç,Визуальные новеллы,фэндомы,Cheat engine,hook,hcode


В данном случае это GetGlyphOutlineA, как видно текст дают нам не полностью а только его часть. Данный косяк мы и будем исправлять.

Прежде всего следует поискать существует ли в памяти нужная строка в неизменном виде.

Жмакаем кнопку add hook и в открывшимся окне вводим S[впечатываем сюда нужную строку]

T- Add hook X Search for text S[codepage#]text OR Enter read code R{S | Q | V>[codepage#][*deref_offset]@addr OR Enter hook code H{A | B | W | S | Q | V}[N][codepage~ ]data_offset[*deref_offsetl][: split_offset[*deref_offset2]]@addr[: module[ :func]] All numbers except codepage in


Жмем ок и чуточку ждем. В консоли должны появится записи, что добавились новые юзерхуки, проверяем их.

Жмакаем на окно нашей новеллы и прогоняем несколько строк, смотрим добавились ли они в окно с нашим юзерхуком. В данном случае вторая строка добавилась, но на третьей споткнулась, похоже, что меняется адрес куда записывается новая строка и этот вариант нам не подходит.

TP- Textractor □ X,Визуальные новеллы,фэндомы,Cheat engine,hook,hcode


Переходим к самому интересному и веселому открываем cheat engine.

Подрубаемся деббагером к нашей новелле. Выбираем процесс и жмакаем Attach debugger to process.

^ Process List X File Applications Processes Windows 00003590-Microsoft Store л 00003590-Входящие — Yandex ?- Почта 0000239С-Параметры 00002288-Почта ф 00002D90-qBittorrent v4.1.5 ^ 00002214-[M-KV2501] Wakfu 1x02 [BDRip] [108 gj 00002594-XP-PenWin(20190304J.zip (пробная » ООООЗВАС-Кино и ТВ


После того как подключились к процессу необходимо перейти на нужный адресс в окне memory view. 

В красной рамке собственно располагается окно с ассемблерными инструкциями. Жмем по нему правой кнопкой мышки и нажимаем Go to address.

Cheat Engine 6.8.3 File Edit Table D3D Help 000042D8- ??????????????- ???????' Found: 0 :46F2 i. îme to ight-hu a. m it I feel Address Value Previous Memory View Advanced Options 0 H Memory Viewer e Search View Debug Tools Kernel tools ???| Idress B^s E9 78FEFFFF CC

Нужный нам адресс можно получить в окне textractora треда который не полностью захватывает текст.

Красным подчеркиванием выделил где находится данный адрес. Вводим его в окошко Goto Adress, первые две цифры не трогаем, мы должны поменять только последние 6.

8:42D8:755EE24 GetGlyphOutlineA (HA8@E240:GDI32.dll),Визуальные новеллы,фэндомы,Cheat engine,hook,hcode

Goto Address Fill in the address you want to go to X 1 0046F298I OK 1 Cancel ! : 755ЕЕ240 :¿6F298:0 : GetGlyphOutlineA (HA8@E2,Визуальные новеллы,фэндомы,Cheat engine,hook,hcode

Собственно в окне memory view должна выделится нужная позиция.

Конкретно здесь выделение должно быть в инструкции адрес который я подчеркнул красным. Кстати в окне memory view адрес пишется с учетом оффсета от реального адреса, а не того который выделили в памяти. Поэтому реальный адрес инструкции 6F298 относительно начала файла экзешника нашей новеллы, в то время как в памяти нашего пк адрес 0046F298. Ну это так чисто техническая инфа, я хуй знает зачем это пишу.

w ????.exe+6F28E ????.exe+6F290 ????.exe+6F291 JC. 6A 06 56 51 pusn push push push eux 06 esi ecx ????.exe+6F292 FF 15 A8A04D00 call dword ptr [ ????.exe+6F298 8B 43 OC mov eax,[ebx+0C] ????.exe+6F29B 8B 10 mov edx,[eax] ????.exe+6F29D 8B 40 04 mov eax,[eax+04] ????.exe+6F2A0 83 C2 03 add

Далее мы должны поставить breakpoint, выделяем нужный адрес и правой кнопкой мыши установить breakpoint либо же просто жмем ф5.

Итак мы выделили нужный адрес и поставили брикпоинт, когда он ставится, до инструкция выделяется зеленым цветом.

Ткнем в диалог новеллы и она должна зависнуть, а интерфейс memory viewera слегка изменится. Давайте пройдемся по нему поподробнее.

^ Memory Viewer - Currently debugging thread 2AS4 File Search View Debug Tools Kernel tools ????.exe+6F280 Address Bytes Opcode ????.exe+6F280 50 push eax ????.exe+6F281 8B 44 24 14 mov eax,[esp+14] ????.exe+6F285 51 push ecx ????.exe+6F286 8B 88 FC090000 mov ecx,[eax+000009FC]

Собственно 1 это окно просмотра адреса памяти в хекс режиме. Полезно посмотреть что скрывается в различных адресах. Нихуя не буду углубляться в что такое поинтеры и с чем их едят. Я вообще когда начинал ебашил все методом научного тыка и нихуя не знал.

2. Окно с нашим стеком, что такое стек я тоже нихуя не буду писать, во всяком случае сейчас. Окно это дюже полезное и позже объясню почему.

3. Регистры, собственно в 32битных программах есть регистры EAX, EBX, ECX, EDX, ESI, EDI, EBP и ESP подробнее про них вы можете прочитать не у меня, так-как по большему счету я тоже мало знаю об этом, короче считайте регистры что-то вроде переменных. Про флаги и сегменты регистров я тем более нихуя не знаю, так-как их не использую в принципе.

4. Окно с ассемблерными инструкциями.

Окей. С этим мы разобрались, хотя я почти на сто процентов уверен, что никто нихуя не понял. Неудивительно из меня хуевый учитель, но поехали дальше.

Собственно наше окно с регистрами горит красным и если мы пощелкаем ф9, то сможем увидеть как некоторые показатели в регистрах меняются. Мы знаем, что по адресу 6F292 вызывается инструкция GDI32.GetGlyphOutlineA собственно туда отправляются наши японские символы в количестве одной штуки. Я кстати не читал документацию но чисто на эмпирическом уровне думаю, что данное апи выводит на экран текст, хотя если бы было так, оно выводило не весь текст, хуй с ним, может люди умнее меня скажут нахуй она нужна. Опять я что-то отвлекся.

Конкретно в данном случае можно сразу запалить 2 байта 

Registers: Flags EAX 005354A3 OF 0 EBX 045E2223 DF 0 ECX AC011A62 SF 0 EDX 0277D050 ZF 0 EDI 000001E0 PF 0 E3F ESP EIP 00000000 0015F110 0046F252 CF 0 Segment Registers CS 0023 SS 002B DS 002B ES 002B FS 0053 GS 002B,Визуальные новеллы,фэндомы,Cheat engine,hook,hcode

В регистре ESI 82B1 я уже столько раз делал хук коды, что точно знаю, что все японские символы в SJIS кодировке состоят из двух байтов и первый байт у них начинается с 80. Есть очень полезный сайт который позволит хекс коды перевести в читабельный текст http://freaka.freehostia.com/charset.php

Благодаря этому сайту мы понимаем, что 82В1 = こ. Да так и есть, каждый раз при вызове ф9 мы продолжаем выполнение программы и каждый раз когда срабатывает брикпойнт регистр ESI меняется показывая нам новую букву. Хорошо с этим мы разобрались. Но как же выловить весь текст полностью? Ну в данном случае придется окунуться в наш стек, что бы найти истину.

Memory Viewer - Currently debugging thread 3A78 File Search View Debug Tools Kernel tools □ X ????.exe+6F28C Address Bytes Opcode Comment A ????.exe+6F28C 57 push edi ????.exe+6F28D 52 push edx ????.exe+6F28E 6A 06 push 06 6 ????.exe+6F290 56 push esi ????.exe+6F291 51 push ecx

В окошке со стеком, жмем правой кнопкой мышки и выбираем Not system modules only. Теперь мы увидим в окне адреса модулей. Наша задача выйти из этой подпрограммы в которой вызывается функция GDI32. Тут наверное стоит сделать лирическое отступление. Я сам нихуя не понимаю до конца как это работает, буду говорить с той позиции какой вижу это я. 

Всякие инструкции Всякие инструкции Всякие инструкции Всякие инструкции Всякие инструкции call - вызов подпрограммы Всякие инструкции Всякие инструкции Всякие инструкции Всякие инструкции начало функции Всякие инструкции Всякие инструкции Всякие инструкции Всякие инструкции Всяки^инструкци^^^^^

Зеленой рамочкой обведен наш брикпоинт, наша задача выйти из данной функции в место откуда её собирались вызывать жирная черная стрелочка. В начале каждой новой функции на вершину стека кладется адрес возврата выполнения программы. По мере заполнения стека он будет опускаться все дальше вниз в окне стеков. Поэтому мы ищем в окне стека именно этот адрес возврата. На рисунке выше он 00473CF0. На нашей схеме я его обвел красной рамочкой.

Итак в окне стеков первые три модуля отправляют нас в область защищенной памяти, это не ассемблерные инструкции поэтому они нам не интересны. 4 же возвращает адрес куда должно передаться управление программой после завершения этой функции то есть до оператора ret что в простонородье означает return ака возвращение.

Нам нужно поставить брикпоинт прямо перед выполнением функции в которой происходит вызов в GDI32.

Memory Viewer - Currently debugging thread 2A84 File Search View Debug Tools Kernel tools □ X ????.exe+72CE9 Address Bytes Opcode Comment >>????.exe+72CE9 8B CE mov ????.exe+72CEB E8 E0C4FFFF call ????.exe+6F1D0 ????.exe+72CF0 8B 13 mov edx,[ebx] ????.exe+72CF2 8B44 24 1C mov

В нашем случае это адрес 72CE9 чуть ниже мы можем увидеть функцию call и еще на один ниже наш адрес возврата из той функции 72CF0. Поставим брикпойнт и немного погоняем ф9, смотрим есть ли где-нибудь наш текст. Ах да, поставим full stack в окне стека. Если мы дважды щелкнем кнопкой мыши на первую позицию в стеке после того как нажмем ф9, то в окне хекс отображения сможем увидить два байта нашей буквы в sjis кодировке. Значит мы сделали все правильно и буква появляется еще выше по выполнению данной функции, если бы мы нигде не смогли отыскать нашу букву, то алгоритм работы слегка изменился и нам пришлось искать место где она появляется в функции где вызывается GDI32, но этого не произошло и продолжаем искать дальше.

В данный момент у нас должно быть активно два брикпоинта при нажатии Ctrl+b мы увидим их адреса, либо же можно нажать мышкой сверху view -> breakpointlist. Наша задача понять они выполняются каждый одинаково, то есть сначала первый потом второй и если да, то это место для хука не подходит, так-как мы знаем что у нас проебаны буквы.

Breakpoint list — □ X Address Size Trigger Type On Hit 0046F292 1 On Execute Hardware Breakpoint (0) Break 00472CE9 1 On Execute Hardware Breakpoint (1) Break,Визуальные новеллы,фэндомы,Cheat engine,hook,hcode

Жмакаем ф9 и видим, что они выполняются последовательно, значит ищем дальше. Мне чуйка сразу подсказала, что текст формируется именно в этой функции и я решил пройтись по ней с самого начала. Брекпоинт по адресу 0046F292 можно нахрен удалять. Что бы попасть в начало функции жмакаем правой кнопкой мыши на окне с инструкциями выбираем select current function, наш отшвырнет на адрес 72A2D, поставим здесь брикпойнт и пощелкаем ф9.

^ Memory Viewer - Currently debugging thread 2A84 □ X File Search View Debug Tools Kernel tools ????.exe+72A2D Registers: Flags Address Bytes Opcode Comment >>????.exe+72A2D 55 push ????.exe+72A2E 56 push esi ????.exe+72A2F 57 push edi ????.exe+72A30 A1 E0B252O0 mov

Заодно не забываем проверять наш стек и регистры на наличие чего нибудь напоминающие буквы в хекс виде. Из проделанной работы мы узнаем, что начало функции вызывается куда чаще чем адрес 72CE9, а значит вот оно, больше никуда лезть не нужно, нам осталось отыскать место где появятся наши заветные два байта. Жмем ф8 и потихонечку спускаемся вниз все это время следя за регистрами и стеком.

Memory Viewer ■ File Search View Currently debugging thread 2A84 Debug Tools Kernel tools □ X ????.exe+72A5A Address Bytes Opcode Comment ????.exe+72A5A 8B 96 C8010000 mov edx,[esi+000001C8] ????.exe+72A60 8B BC 24 90000000 mov edi,[esp+00000090] ????.exe+72A67 89 8E DC040000 mov

Ага, вот тут после выполнение команды в адресе 72A88 в регистре EAX появилось кое-что интересное. А именно появляется первый байт нашей буквы, мы ведь помним, что первый байт всех японских символов начинаются с 80. Отлично идем дальше.

Memory Viewer ■ File Search View Currently debugging thread 2A84 Debug Tools Kernel tools □ X ????.exe+72A6D Address Bytes Opcode Comment A ????.exe+72A6D OFBE 8E 550DOOOO movsx ecx,byte ptr [esi+OOOOOD55] ????.exe+72A74 89 44 24 38 mov [esp+38],eax ????.exe+72A78 89 96 E0040000 mov

А вот наклюнулся и второй байт в регистре ECX, он появился после выполнения команды в адресе 72A92. За ним идут две операции and, где по сути избавляются от минуса, и мы применяем побайтовый сдвиг влево на 8 у регистра EAX. Вот оно, уже рядом.

Memory Viewer - Currently debugging thread 2A84 File Search View Debug Tools Kernel tools □ X ????.exe+72A8A Address Bytes Opcode Comment ????.exe+72A8A 8D 4C 11 01 lea ecx,[ecx+edx+01] ????.exe+72A8E OFBE 55 01 movsx edx,byte ptr [ebp+01] ????.exe+72A92 33 CA xor ecx,edx

Собственно вот и оно. После инструкции в адресе 72AA2 наши два байта объединились и стали единым целым. В адресе 72AA4 можно поставить брикпойнт и пожамкать ф9, что бы убедится, что все буквы появляются именно здесь. Как только мы в этом убедились. Жмем Ctrl+B и удаляем все брекпойнты, они нам больше не понадобятся. Самое время запилить наш хук.

Цепляться будем ка адресу 72AA4 который идет сразу после того как наши два байта объединяются.

Откроем textractor подрубимся к экзешнику с нашей игрой, если вы вдруг его закрыли, если не закрывали, то он должен быть уже заатачен к процессу игры. жмем добавить хук код add hook

Memory Viewer - Running □ File Search View Debug Tools Kernel tools ????.exe+72AA4 Address Bytes Opcode Comment >>????.exe+72AA4 8D 90 617DFFFF lea ,[ -0000829F] ????.exe+72AAA 89 7C 24 18 mov [esp+18],edi ????.exe+72AAE B9 02000000 mov ecx,00000002 2 ????.exe+72AB3 83 FA 52 cmp edx,52

Ну и собственно вбиваем наш хук. Если у вас экзешник из иероглифов, имя желательно полностью скопировать. Как составлять хуки тут есть целая памятка. /H собственно с этого начинается любой хук код. A - берет два байта в кодировке SJIS little endian, B следует использовать когда байты повернуты наоборот. То есть в данном примере у нас 8179 - это А, а если бы было 7981, то нужно было бы в писать в хук B. Префикс N, блядь, я знаю, что это значит но по умному хуй знает как описать. Короче, суть. Если не писать N, то будет дополнительно учитываться регистер ESI вроде бы, точно не помню и если он постоянный то все будет ок, но если вдруг каждый вызов он будет меняться, то вы получите кучу всяких потоков, поэтому использовать его нужно с умом. Собственно собака, потом адрес куда мы будем хукаться, напомню этот адрес идет сразу после того как мы получили наши цельные два байта. Двоеточие и имя экзешника полностью. Жмем окей и вуаля. Хук работает, а мы великолепны.

*3 (F) ¡S$(S) T- Textractor 42D8: m^M.exe 1D:42D8:472AA4:0:0: UserHook (HAN-4@72AA4:MI#il.exe) X JiP&D^fv.....o Summer Princess-chan... -t?t>&c I don't want you to be my girlfriend. Saffle's from good. mX] r?% ?/u6©9^e«J:......J Shota: "That's no good..." m§* ^^oD?oo°j v,Визуальные



Ну и два видосика с примерами в конце. 
 
 
Развернуть

Deep Rock Galactic Игры game art бонус в комментариях Scout (DRG) Gunner (DRG) Engineer (DRG) Driller (DRG) 

 лт тщт 1 U уШ,Deep Rock Galactic,Игры,game art,бонус в комментариях,Scout (DRG),Разведчик,Gunner (DRG),Стрелок,Engineer (DRG),Инженер,Driller (DRG),Бурильщик,Deep Rock Galactic,games,game art,more in comments,Scout (DRG),Gunner (DRG),Engineer (DRG),Driller (DRG)

Развернуть

nfs Игры reverse engineering русская локализация программирование geek кириллица длиннопост много картинок 

Как я реверсил кириллицу в русской локализации в играх серии Need For Speed времён Black Box

Предисловие
Все мы любим, когда наша любимая игра переведена на русский язык и мы можем легко понять, что говорит наш любимый персонаж.

Но порой не всегда локализации идеальны: в каждой найдётся куча отсебятины, иногда информации, которой в оригинале и не было, а то и неправильно интерпретированная речь, которую нам и расхлёбывать *кашляет по-ватчдоговски*

Но качество локализаций к данной статье не имеют отношения и не о них пойдёт речь. А речь пойдёт о том, как мне удалось расшифровать русскую локализацию, чтобы в будущем каждый мог изменить строки как захочется.

Осторожно, много скринов!

С чего всё началось?

А началось всё с этого мема:

Рашка приплетена! Разъебал по фактам Время срача Приз от навального Репутация за срач Репутация за стрелы _ Навыки либерахи валить в сша вИ1«>олу.#<тьпмАы О Рос гвардии,Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный,

Да. К политике нынешней данный мем особо отношения не имеет, да и не должен.

Данный скриншот был сделан в игре Need for Speed: Undercover 2008 года. Сама игра по себе является проходняком, ибо сделана на коленке (на самом деле EA тупо торопила разработчика лишь бы выпустить продукт).
Но вот текст на этом меме был отфотошоплен оченькриво и с неправильными шрифтами (оригинальные шрифты для игры — Aquarius Medium и Light для заголовка, Helvetica Neue STD для обычных текстов в данном окошке)
Мне это, скажем так, изрядно не понравилось и я поставил себе цель воссоздать этот мем методами самого геймплея этой игры.

И это звучит достаточно легко в теории, но на практике это что угодно, кроме «легко». Было.


Как и Чем

Первым делом я решил полезть в ресурсы игры. Для этих дел есть разработанная моддерским сообществом программа Labrune за авторством nlgzrgn

*“ Labrune - D:\GAMEZ STEAM\steamapps\common\Need for Speed Undercover\LANGUAGES\English_Frontend.bin File Edit Help #0 - Frontend ID Hash Label Text ¡387 31D50F50 POSTRACE_YOU_DOMINATED You Dominated! 388 3255EBD4 CUST_LOOKAHEAD_PAINT_WHEEL Change your vehicles wheels and design 389 339077C4
Собственно, её интерфейс.

Она спокойно читает файлы игр, начиная с NFS: Underground вплоть до NFS: World, ибо вся линейка этих игр была сделана одним разработчиком на почти одинаковом движке (ходят слухи, что при разработке этих игр разрабы из-за торопливости не особо морочились убирать остатки старого кода со старых игр, а просто переносили всё в один компилятор и за счёт остатков, найденных в коде, выходили новые моды, сильно расширяюшие функционал игр (как пример этого — последняя версия Unlimiter'а для Most Wanted 2005, берущая часть функционала из NFS Underground 2)).

Читает спокойно до тех пор, пока не скормишь ей файл с русскими текстами

■* Labrune - D:\GAMEZ STEAM\steamapps\common\Need for Speed Undercover\LANGUAGES\Russian_Fi File Edit Help #0 - Frontend ID Hash Label Text 1276 AC322 D 93 VINYL PART MER SLR 2TONE2 2 1277 AC322D94 VINYL PART MER SLR 2TONE3 3 1278 AC821745 CREDIT_ROLL_PRESENTS c 1279 AC8761FE

Чё?

n© HxD - [D:\GAMEZ STEAM\steamapps\common\Need for Speed Undercover\LANGUAGES\Russian_Frontend.bin] — □ X • File Edit Search View Analysis Extras Window ? _ & x ! | <$> M 16 Polish_Global.bin *2] Russian_Frontend.bin Offset(h) 00 01 02 03 04 05 06 07 08 09 ÖA 03 OC OD OE OF 00006690 82 20 83

И Hex-редактор тоже не может помочь. Выделенная фраза означает «Ты лидер!». Как я узнал - читайте дальше.

Вместо текстов в лучшем случае кракозябра, в худшем случае пустота. На момент написания статьи не исправлено/не воплощено.



И теперь самое интересное!

Тогда я решил править runtime память, если Labrune даже не хочет править файлы и даже сохранять их.

Открыв игру, предварительно выбрав английский язык, я сначала баловался с английским текстом, занимаясь поиском его положения через Cheat Engine и правя его.

Первый текст, который появляется при запуске Undercover, это PSA — Public Service Announcement, то бишь «не гоняйте пацаны вы матерям ещё нужны»

Need for Speed™ Undercover presents an Action Driving Experience. Pull these moves within the safety of your home ONLY. Do not take this kind of driving to the neighborhoods and streets in the real world.,Need For Speed,Игры,nfs,reverse engineering,русская

Вот он.

Вычислив адрес, с которого начинается этот текст, я решил изменить этот текст на что-нибудь интересное:

Need for Speed: Undercover is what happens when you want to make a yearly game but you forget to polish it. And yes, because you had to rush it for the late quarter release, there's a good amount of unused content in this game.,Need For Speed,Игры,nfs,reverse engineering,русская

Ундерковёр — яркий пример того, что происходит, когда ты пилишь разрабов чтобы они ежегодно выпускали игру уровня ААА, но при этом не дав времени её отделать. И да, из-за того, что тебе приходится выпускать игру чуть ли не под самый поздний квартал года, в игре обязательно будет много неиспользуемого контента.

Поискав нужные мне адреса конкретных строк, я начал их править.
И сразу скажу, изменения появлялись лишь только когда я убирал текст и снова вызывал для отображения. Сразу текст не меняется. То есть — для появления этого окошка мне приходилось перезапускать гонку.

RASHKA !!~WM_Vremya sra4a 1:10.39 , r IIJl Cash $260 Wheelman Rep 3,000 Zone Points (+Rep) 3,000 " i40L#,41 frf CONTINUE® PLAY AGAIN® STANDINGS ©,Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и айтишный

Вот так всё начиналось. До русского текста ещё далеко. Мусор в начале второй строки «vremya sra4a» там из-за того, что я где-то убрал байт, отвечающий за начало текста и игра подхватила этот кусок для отображения.

Играться с англ текстом было детским садом, и всё же хотелось сделать по-русски.

Я перезапустил игру, сменив в стиме язык игры на русский
Игра, запустившись, выдала уже такое содержание:

Need for Speed™ Undercover - это симулятор вождения. Выполняйте эти трюки ТОЛЬКО в игре. Не пытайтесь повторить их в реальной жизни.,Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и айтишный

Текст уже короче, и надо как-то узнать, под какими значениями идёт кириллица.

Благо у меня уже есть адрес для правки текста, сейчас я к нему обращусь, и…
И он уже бесполезен, потому что русский текст всегда длиннее, вследствие чего место прошлого текста уже занял мусор, так что нужно было искать новый адрес. Благо текст, как в прошлый раз, начинался с латиницы и кусок памяти с ней было легко найти.

PSA english [ 1 PSA russian 2082B50D 212837CD String[229] u?G_? ?Gw?M? J?ey? ???Gm? g??G? ?d??K[? G!?v? ?g??Ds G?C Strinq[309] Need for Speed? Undercover - ? ??? ??. ??? ???????.? ??? ??■,Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты.

Первая идея была такая — скопировать каждый отдельный символ, подразумевавший определённую букву в тексте, в блокнот и оттуда же закинуть в адрес своё. Было муторно записывать каждую кракозябру в блокнот, надеясь, что она поможет в дальнейшем.
Результат — неудовлетворительный.

Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,кириллица,длиннопост,много картинок

Как итог — в игре мусор…

PSA english 2082B50D String[229] u?0_? ?Ow?M? J?£y? ???0m? g??G? ?d??K[? 0!?v? ?g??Dg 0?C PSA russian 2128S7CD String[B09] Need for Speed Undercover - $$$ $$$$$$$$$ $,Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и

...и в Cheat Engine тоже.

Вторая и более правильная мысль — та, ради которой вы дочитали до этого момента — это зайти в содержимое памяти по нужному адресу (тыкнув Memory View или CTRL+B, выбрав нужный адрес) и прочитать байты, отвечающие за кириллицу.
Но перед этим дайте я игру перезапущу, чтобы игра выдала норм текст, ок?
Ок.

^ Memory Viewer — □ X File Search View Debug Tools Kernel tools nfs.exe+10082ED Address Bytes Opcode Comment nfs.exe+1008;53 push nfs.exe+1008;51 push ecx nfs.exe+1008;52 push edx nfs.exe+1008;56 push esi nfs.exe+1008;57 push edi nfs-jpxp tiooa:55 oush shn push word or

Вот так выглядит память игры во время запуска процесса. На данный момент Memory Viewer показывает кусок памяти, начиная с адреса, который указывает на начало текста PSA. Выделенный байт 00 означает технический конец текста.

Стерев всё, что было в блокноте и написав шаблон алфавита для заглавных и строчных букв, я начал вглядываться в байты, записывая эквивалент буквы в блокнот.
То есть э — B9, т — 86, о — 81, пробел — 20, с — 88, и так далее…

Я решил проверить мою новую теорию, изменив вступительный текст с имеющимся байтами…

Need for Speed™ U недоделанная игра. Gentera Style 204 ndercover - это,Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,кириллица,длиннопост,много картинок

… и теория оказалась верной! «Gentera Style 204» стоит там из-за того, что я на тот момент не знал, что нужно ставить байт 00 для обозначения конца читаемого текста. Но само подтверждение теории меня очень обрадовало!

В ходе дальнейшего реверсинга байтов выяснилось, что исполнительный файл игры для отображения кириллицы использует байты от 81 примерно до FF, а также использует байт 80 совместно с другим соседним байтом справа для отображения других символов, например для отображения буквы ъ - 80 89, Ж - 80 83, Ю - 80 88, Щ — 80 80, и т.д.

В итоге за 2 дня тестирования я составил такую карту используемых символов кириллицы:

а - - 82, б - 55, в - 85, д - со о е - 84, ё - ЕЗ, и - - 83, й - 57, к - 83, и - - 8F, н - 85, о - 81, р - - 37, с - 88, т - 86, ф - - F0, X - AD, ц - 32, ш - - Аб, щ - 38, ъ - 80 85 ь - - 53, 3 - 35, ю - 31, А д и м F Ф ш ь 53, Б - DO, 3 5А, Е - A3, Ё 58, Й - (FD)FE, AF, H -

Скобки означают, что я на данный момент не уверен, какой из байтов используется для отображения такого-то символа, либо может использоваться комбинация этих байтов для отображения «Й»․ Отсутствующий байт у буквы Ё — значит я не нашёл байт от этой буквы, и не велика потеря — в тексте игры нет строк, где есть буквы ё и Ё — всегда е. Почему? Спросите у 1С-СофтКлаб или у самих Black Box.

И таким методом я и воссоздал тот самый пресловутый мем и разреверсил кириллицу. Хоть и не полностью, но это уже хорошо.

03 1 Am Rock Rock 04 In A Hood Near You Suni Clay Suni Clay сдня не ндг>0 ii*1' . Этот парень был из тех, кто просто любит жизнь. 02 Do Ya Thang T.l. Presents The P$C 25 To Life (±в] Последовательный В Меню Меню Меню Упорядочить Ознакомление,Need For Speed,Игры,nfs,reverse

Ну и ещё.

Что было дальше?

Дальше я принялся реверсить кириллицу для остальных игр NFS, и на это у меня ушло гораздо меньше времени, благо нашлись более быстрые способы просмотра изменений в тексте и часть байтов совпадала с предыдущими значениями.

а - 83, б - 5С, в - д - 8D, е - 82, ё - и - к со W и - 5D, к - м - 8Е, н - 85, о - р - 87, с - 88, т - ф - ЗС, X - 32, ц - ш - AF, щ - СЗ, ъ - ь — 53, 3 — 37, ю — А — 51, 5 — 34, 3 — Д - A3, Е - 57, Ё - И - 58, W и - D7, К - м - А8, н - 54, О - F - 55, с - 5Е, Т - Ф - DO, X - DE, Ц -

Это уже для ProStreet

а - V со б - 95, в д - 8Е, е - 82, ё и - 83, W и - 94, к и - 8D, н - 86, о р - 87, с - 88, т ф - 34, X - A4, ц ш - 99, щ - 33, ъ ь — 51, 3 — А7, ю А — Аб, 5 — 36, 3 Д - AD, Е - А5, Ё И - А2, W и - ЗА, К м - 32, н - 9D, 0 F - 93, с - 9С, Т Ф - 3F, X - ЗЕ, Ц ш - О о щ - С4, ъ ь - С1,

Это уже для Most Wanted (2005). Заметьте, комбинация байтов 80 XX тогда ещё не использовалась.


*скоро будут байты для NFS: Carbon, Underground и Underground 2*

Послесловие

Своей находкой я поделился с NFS комьюнити, автор проги заметил это и мне ответил:

nlgzrgn Yesterday at 23:21 Thanks for the information! If I update the tool. I'll create something to switch those characters to properly handle any language.,Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и айтишный

Я дальше не знаю, что под конец написать, поэтому вот вам котик

Need For Speed,Игры,nfs,reverse engineering,русская локализация,программирование,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,кириллица,длиннопост,много картинок

Хорошего дня!

Развернуть

Madness combat анимация сделал сам unreal engine песочница видео 

Поделюсь результатом долгих трудов, авось кому-нибудь и понравится. 

Развернуть

Lies Of P трейлер видео Игры 

Кто хотел Bloodborne про Пиноккио? Никто? А он выходит в 2023 году! И на ПК тоже!


Немного инфы:
-Дата выхода игры намечена на 2023.
-В игре будут русские субтитры.
-Мрачный ролевой боевик по мотивам сказки про Пиноккио, духовный наследник Dark Souls и Bloodborne.
-В бою наш Пиноккио использует как стандартное оружие, так и встроенные в его руку крюк и огнемёт. (привет, Sekiro)
-В игре присутствует механика лжи: как положено, Пиноккио будет страдать от собственного вранья. Слова главного героя влияют на игровой процесс, но пока что неизвестно, как именно это будет подано в игре.
Развернуть

жиза Комиксы geek разработчики песочница dodo pizza engineering dododev додо пицца 

Любые совпадения с жизнями всех разработчиков мира – всего лишь случайность

У ММ... А ЧТО БУДЕТ ЕСЛИ Я НАЖМУ ВОООТООдА? '^1 - к б 2 ВСЕ [П ДАННЫЕ 1) УДАЛЕНЫ,жиза,Смешные комиксы,веб-комиксы с юмором и их переводы,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,разработчики,песочница,dodo pizza engineering,dododev,додо пицца

Я КУДА-ТО НАЖАЛ И ВСЁ УДАЛИЛОСЬ. МОЖНО БЫСТРЕНЬКО ВОССТАНОВИТЬ ?!,жиза,Смешные комиксы,веб-комиксы с юмором и их переводы,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,разработчики,песочница,dodo pizza engineering,dododev,додо пицца

У мы ПОЧИНИЛИ СПАСИБО, 1 А ЧТО ТАК ДОЛГО? ЦЕЛЫЙ ЧАС ЖДАЛ Конец* DODO PIZZA ENGINEERING,жиза,Смешные комиксы,веб-комиксы с юмором и их переводы,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,разработчики,песочница,dodo pizza engineering,dododev,додо пицца



Развернуть

Penitent Engine Adepta Sororitas Ecclesiarchy Imperium Warhammer 40000 фэндомы Wh News Miniatures (Wh 40000) Mortifier 

ГВ все таки догадались прилепить сюда Железную Деву.

Warhammer World NEW YEAR OPEN DAY REVEALED AT,Penitent Engine,Adepta Sororitas,sisters of battle, сестры битвы,Ecclesiarchy,Imperium,Империум,Warhammer 40000,wh40k, warhammer 40k, ваха, сорокотысячник,фэндомы,Wh News,Miniatures (Wh 40000),Mortifier

Развернуть
В этом разделе мы собираем самые смешные приколы (комиксы и картинки) по теме i s p a engineering (+1000 картинок)