Reverse engineering Diablo v1.09b (last patch)
#4
This is a prime example of reverse engineering (although technically hacking: It changes absolutely nothing about game play):
Code:
0041B1DF | 56                       | push    esi                                       | Updates "loading screen" (bar on bottom)
0041B1E0 | E8 BB FF FF FF           | call    <diablo_copy.sub_41B1A0>                  |
0041B1E5 | 83 05 B0 4C 63 00 0F     | add     dword ptr ds:[0x634CB0],0xF               |
0041B1EC | BE 16 02 00 00           | mov     esi,0x216                                 |
0041B1F1 | 39 35 B0 4C 63 00        | cmp     dword ptr ds:[0x634CB0],esi               |
0041B1F7 | 76 06                    | jbe     diablo_copy.41B1FF                        |
0041B1F9 | 89 35 B0 4C 63 00        | mov     dword ptr ds:[0x634CB0],esi               |
0041B1FF | 83 3D A8 4C 63 00 00     | cmp     dword ptr ds:[0x634CA8],0x0               |
0041B206 | 74 05                    | je      diablo_copy.41B20D                        |
0041B208 | E8 0B 00 00 00           | call    <diablo_copy.sub_41B218>                  |
0041B20D | 39 35 B0 4C 63 00        | cmp     dword ptr ds:[0x634CB0],esi               |
0041B213 | 5E                       | pop     esi                                       |

If you NOP this entire segment (displayed here): You will no longer have the intermediate 'loading screen' (which adds a pointless delay) while changing levels in Diablo! Town Portal, stairs of any kind.

Alternatively: You can just modify the JZ/JE to JMP (avoiding the function call that is directly responsible for updating the screen?).
Code:
0041B206 | EB 05                    | jmp     diablo_copy.41B20D                        |

EDIT: This actually affects joining/creating games on Battle.net as well.

By by-passing the loading screen (which used to cause issues on Windows XP on my old machine for some reason): The game loads WAY faster!

The reverse engineering tool (debugger) I am using (which is profoundly extensive and powerful) is: x32dbg (100% free! It also has a x64dbg version).

You are able to:
  • View 5 dumps of the .data (tabs)
  • View the stack with a specified calling convention (levels deep are modifiable with 1 click! Default value is "5 deep")
  • "Watch dog" (during a break-point: Any listed expressions / addresses are updated; True/False, Changed/Not changed flags)
  • Comments anywhere (very useful)
  • Labels (instead of "module.randomSymbol" you insert your OWN label! Such as: diablo.exe_loadingScreen())
  • Enable/Disable break-points (and an entire screen of disabled break-points)
  • String references (seems very accurate) for the specific module/module(s)/etc
  • Built-in C-code generator ("Snowman"); Which is equally very accurate at generating C-structs when they appear
  • Provides endless plugins for anything missing
  • Attempts to hide the debugger if you want (toggled: "Debug -> Advanced -> Hide debugger (PEB)")
Reply


Messages In This Thread
RE: Reverse engineering Diablo v1.09b (last patch) - by TheKillerVortex - 01-29-2018, 10:38 PM

Forum Jump:


Users browsing this thread: 4 Guest(s)