[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]

[Burichan] [Foliant] [Futaba] [Greenhell] [Gurochan] [Photon] - [Home] [Manage] [Archive]

[Return]
Posting mode: Reply
Leave these fields empty (spam trap):
Name
Link
Subject
Comment
File
Verification
Password (for post and file deletion)
  • Supported file types are: GIF, JPG, PDF, PNG
  • Maximum file size allowed is 30720 KB.
  • Images greater than 200x200 pixels will be thumbnailed.

File: 1762182075196.jpg -(25387 B, 280x346) Thumbnail displayed, click image for full size.
25387 No.234766  

Хола!

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

Хочу поделиться тут всякой преинтересной (для меня) информацией, как-то так!

>> No.234767  
File: 1762182975003.png -(63794 B, 866x768) Thumbnail displayed, click image for full size.
63794

Так вот! Проект посвящен мертвой и не очень качественной игре Survarium, сервера которой закрылись где-то года три назад.

И ведь если сервера закрылись, то значит, что надо написать свои!

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

https://ap-pro.ru/forums/topic/2647-materials-stalker-2-2011-ii/
https://archive.org/search.php?query=creator%3A%22Vostok+Games%22

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

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

>> No.234768  
File: 1762184008071.png -(4510021 B, 2541x1439) Thumbnail displayed, click image for full size.
4510021

Не подумал я сильно, как это все оформить красиво, но уж что вышло, то вышло

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

Протокол там написан конечно дурацки, потому что вся информация передается по голому TCP и только для передачи пароля в середине соединения используется SSL. В любом случае! Написал я на расте подобие сервера, который соглашается на все комбинации имени пользователя и пароля (что забавно, в первых версиях игры игра крашилась при имени короче 20 символов, что предвещает дальнейшее). Там и пригодились приватные ключи, оставленные разработчикам в первых релизах игры, иначе бы мне пришлось патчить экзешник (что я в дальнейшем все равно делал), чтобы оставить свой собственный сертификат. И вуаля -- первый барьер пройден!

>> No.234769  
>Айда

Удивлён, что кто-то так говорит, привык, что люди произносят IDA как ИДА.

Что за скрипты для которых используешь гидру ?

>> No.234770  

Нахуя кастить нуль указатель?
Мимо

>> No.234771  
File: 1762187861923.png -(135483 B, 1465x394) Thumbnail displayed, click image for full size.
135483

>>234769

> ИДА

Я сначала также говорил, но со временем из-за англоязычного влияния, где больше всего я эту тему и обсуждаю, привык к официальному произношению.

> Что за скрипты для которых используешь гидру

Я через какое-то время расскажу, что я начал восстанавливать исходный код клиента, базируясь на слитом движке xray-2.0, и чтобы cматчить ассемблер оригинальной игры и мною измененного движка, я использую objdiff[1], который умеет сравнивать ассемблер между объектными файлами. И с помощью скриптовой гидры с delinker[2] расширением я эти объектные файлы и генерирую.

Скрипт получился очень простой: я включаю только необходимые мне анализаторы и для каждого класса движка с помощью того расширения генерирую объектные файлы по его методам. Про него автор неплохо на хакерньюсе[3] рассказал.

[1]: https://github.com/encounter/objdiff/
[2]: https://github.com/boricj/ghidra-delinker-extension/
[3]: https://news.ycombinator.com/item?id=44083467

>> No.234774  
File: 1762189489324.png -(33227 B, 1737x275) Thumbnail displayed, click image for full size.
33227

>>234770
Это декомпилированный код, сгенерированный гидрой из ассемблера. Он "похож" на сишку и плюсы, но таковым не является. И касты в декомпилированном коде все указываются явно, чтобы было понятно, что с чем сравнивается и куда передается.

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



Delete Post []
Password

[/b/] [/d/] [/tu/] [/a/] [/ph/] [/wa/] [/cg/] [/t/] [/p/]