Уровень 0 · материалов: 13
В кластер входят документы, описывающие конкретные технические случаи использования реверс-инжиниринга для анализа и исправления программных ошибок в существующем коде, и не входят общие рассуждения о программировании, обзоры алгоритмов или общие принципы безопасности.
Общие признаки: обратная разработка, анализ бинарных файлов, исправление багов в старом ПО, бинарные патчи, поиск математических и логических ошибок
Группа выше: Реверс-инжиниринг программного обеспечения
Смысл: The text demonstrates how reverse engineering and assembly-level debugging can be used to identify and fix a software bug (specifically a buffer overflow/out-of-bounds array access) in a legacy video game.
A programmer uses a debugger to find and patch a memory access crash in Heroes of Might and Magic III caused by a negative array index in the campaign startup bonus function.
Смысл: The text demonstrates how a complex, seemingly random game bug can be traced back to a fundamental mathematical error (square root of a negative number) through reverse engineering and assembly analysis, and provides a technical fix for it.
An analysis of a flight bug in Batman Arkham games reveals it is caused by a square root of a negative number, which the author fixes using assembly scripts.
Смысл: The text is a technical retrospective on reverse-engineering a game's binary to fix a massive memory inefficiency caused by poor architectural choices in DirectX resource management and redundant geometry generation.
The author reduced Civilization 4's RAM usage by half by reverse-engineering its DirectX calls and implementing a custom deduplication cache for vertex buffers.
Смысл: The main idea is to demonstrate how reverse engineering and memory manipulation can be used to modernize old software, specifically by fixing aspect ratio issues in legacy games for modern hardware.
A technical walkthrough on using reverse engineering tools and C++ to create a widescreen resolution fix for the game FlatOut.
Смысл: The text explains how a signed integer overflow in an old Windows utility causes it to crash on systems with more than 2GB of RAM and demonstrates how to fix this via binary patching (changing a signed jump to an unsigned jump).
The author uses reverse engineering to patch a legacy Windows Sound Recorder bug that prevented the app from running on systems with more than 2GB of RAM.
Смысл: The text illustrates the process of reverse-engineering and debugging a legacy library by comparing binary outputs against a formal specification and a known working implementation to fix a compatibility bug in encryption headers.
The author discovered and fixed a bug in the QuaZIP/MiniZip library where a missing file creation timestamp in the encryption header made password-protected archives incompatible with other ZIP tools.
Смысл: The text is a technical case study on reverse engineering embedded firmware to fix a network streaming bug that the original manufacturer refused to acknowledge. It demonstrates the process of binary patching, checksum recalculation, and the importance of managing socket blocking states in network programming.
The author reverse-engineered an IP camera's firmware to fix a TCP/UDP streaming bug by binary patching and recalculating proprietary checksums.
Смысл: The text describes a reverse-engineering project to identify and fix a non-critical but annoying visual bug in Windows Notepad caused by obsolete legacy code from the Windows 95 era.
An analysis of a 13-year-old Windows Notepad word-wrap bug, explaining its origin in Windows 95 and providing a manual binary patch to fix it.
Смысл: The text explains how a latent programming error (uninitialized variables) in a 20-year-old game manifested as a critical bug due to a subtle change in how a modern operating system manages memory on the stack, proving that software relying on undefined behavior is inherently unstable across OS updates.
A long-dormant bug in GTA San Andreas was triggered by Windows 11 24H2 because a change in OS stack management finally exposed the game's use of uninitialized variables for the Skimmer aircraft.
Смысл: The main idea is to demonstrate how reverse engineering and binary patching can be used to modernize, fix, and extend the functionality of legacy 'abandonware' software when the original source code is missing.
A technical exploration of reverse engineering Age of Empires II to remove CD checks, fix bugs, and add windowed mode and configuration file support.
Смысл: The text describes the process of reverse-engineering the physics of a vintage 1969 computer game to find a mathematical error in its collision detection logic that had persisted for 55 years.
A technical analysis of the 1969 game 'Lunar Landing' reveals a missing constant in a physics formula that caused subtle landing bugs for over five decades.
Смысл: The main idea is to demonstrate how a curiosity-driven investigation into a software bug can lead to a technical fix by leveraging open-source code. It highlights the complexities of calendar logic and the dangers of using unsigned integers for values that can become negative.
A developer finds a date calculation bug in the open-source Windows Calculator, traces it to an integer underflow caused by calendar logic, and submits a pull request to fix it.
Смысл: The author uses the experience of reverse engineering the game 'Need for Speed III' to illustrate the dangers of poor coding practices. By showcasing how a simple menu bug was duplicated four times with different errors, the text argues that clean, maintainable code is essential regardless of whether the source code is public, as future maintainers (or reverse engineers) will inevitably struggle with 'dirty' code.
Through the reverse engineering of Need for Speed III, the author demonstrates how bad coding habits and code duplication create complex, fragmented bugs that haunt developers for decades.