• Stars
    star
    240
  • Rank 168,229 (Top 4 %)
  • Language
    C
  • License
    GNU General Publi...
  • Created almost 8 years ago
  • Updated over 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

x64dbg plugin which removes anti-dumping and obfuscation techniques from the popular FPS game Overwatch.

Overwatch Dump Fix

This x64dbg plugin removes anti-dumping and obfuscation techniques from the popular FPS game Overwatch. It is meant to be used with Scylla (built into x64dbg) to produce process dump files for static analysis.

This plugin can be used to dump most modern Blizzard games. e.g., It can be used to dump World of Warcraft Classic.

This project is for educational use only.

Usage

x64dbg Commands

  • OverwatchDumpFix

Scylla

Users must enable the Use advanced IAT search setting in the Misc section of Scylla options.

  1. Open Scylla in x64dbg's Plugins menu.
  2. Open the options dialog from the Misc menu.
  3. Enable the 'Use advanced IAT search' setting in the bottom right corner.

x64dbg

  1. Attach x64dbg to Overwatch.exe then execute the OverwatchDumpFix command.
  2. Open Scylla in x64dbg's Plugins menu then select Overwatch.exe in the "Attach to an active process" drop-down list.
  3. Click IAT Autosearch.
  4. A dialog box will inform the user that the IAT search advanced result does not match the normal search result. Click Yes.
  5. Verify that the address of the VA field in the IAT Info region matches the address of the IAT found in the log tab.
  6. Click Get Imports.
  7. Click Dump to create a dump file.
  8. Click Fix Dump and select the dump file from (7) to reconstruct imports.
  9. The Scylla output view should say "Import Rebuild success [FILE PATH]".
  10. Click PE Rebuild and select the fixed dump file.

IDA Pro

  1. Open the dump file in IDA. Check the Manual load and Load resources (optional) boxes. Click OK / Yes for every prompt.
  2. Run the Universal Unpacker Manual Reconstruct plugin for the IAT to set imports to the correct color.
  3. Happy reversing 😎.

Warning

The Overwatch process patches the byte at the address of ntdll!DbgBreakPoint from a software breakpoint instruction (0xCC) to a return instruction (0xC3) to prevent debuggers from attaching.

This plugin patches the byte at the address of ntdll!DbgBreakPoint in the virtual address space of the debuggee to '0xCC' if that byte is not '0xCC'. This byte is checked inside every CREATE_PROCESS_DEBUG_EVENT debug event (i.e., whenever x64dbg attaches to a process).

Version History

Release v6 (2019.04.09)

  • The plugin now restores the software breakpoint at ntdll!DbgBreakPoint inside the CREATE_PROCESS_DEBUG_EVENT debug event. Users should now be able to attach x64dbg to overwatch.exe without needing ScyllaHide.

Release v5.1.0 (2019.03.16)

  • Replaced capstone disassembler with hde.
  • Updated instructions to reflect requirement of the Scylla 'Use advanced IAT search' setting.

Release v5.0.2 (2018.06.17)

  • Removed post-build event.
  • Removed process name check in 'CBCREATEPROCESS' to allow the plugin to be executed for other games.

Release v5.0.1 (2017.05.23)

  • Updated for Overwatch version 1.11.1.2.36859.
  • The import address table is no longer terminated by two null pointers. The second null has been replaced with a pointer to a 'ret 0' instruction.

Notes

  • This plugin is tested while offline on battlenet.

More Repositories

1

VivienneVMM

VivienneVMM is a stealthy debugging framework implemented via an Intel VT-x hypervisor.
C++
775
star
2

Self-Remapping-Code

This program remaps its image to prevent the page protection of pages contained in the image from being modified via NtProtectVirtualMemory.
C++
558
star
3

MouClassInputInjection

MouClassInputInjection implements a kernel interface for injecting mouse input data packets into the input data stream of HID USB mouse devices.
C++
286
star
4

MouHidInputHook

MouHidInputHook enables users to filter, modify, and inject mouse input data packets into the input data stream of HID USB mouse devices without modifying the mouse device stacks.
C++
239
star
5

Force-Page-Protection

This x64dbg plugin sets the page protection for memory mapped views in scenarios which cause NtProtectVirtualMemory to fail.
C
106
star
6

PE-Header-Dump-Utilities

This x64dbg plugin adds several commands for dumping PE header information by address.
C
60
star
7

Hex-Rays-Deep-Compile

Improves Hex-Rays output through batch decompilation.
C++
45
star
8

x64dbg-Anti-Debug-POC

viewing page boundaries of pages with PAGE_NOACCESS protection reveals the presence of x64dbg.
C++
21
star
9

Remote-Process-Cookie-for-Windows-7

Obtain remote process cookies by performing a brute-force attack on ntdll.RtlDecodePointer using known pointer encodings.
C++
21
star
10

Simple-Injector

basic dll injector using Qt
C++
17
star
11

Find-Exported-Xrefs

Given a global name in IDA Pro, find all xrefs which are contained in an exported function.
Python
10
star
12

Enumerate-GetKeyState-Calls-Using-Varying-nVirtKey

IDAPython script. Bookmark all instances of calls to GetAsyncKeyState and GetKeyState which use a varying value (e.g. not const shift/ctrl/alt modifiers) for the nVirtKey arg.
Python
4
star