# Forum > Diablo 2 Resurrected > Diablo 2 Resurrected Bots and Programs >  Some basic offsets to let you play offline

## doityourself

If someone wants to play D2R (build 62115) offline just patch this in memory:

0xD4AD68 -> 90 90
0xD4E25F -> 90 90 90 90 90 90
0xCAFB9D -> 90 B0 01

NOTE: This won't let you enter the game with saved chars! *Only new character* 

How to patch it? Well that's up to you

----------


## shelloux

Does anyone know how to do that?  :Big Grin:

----------


## totalschaden

Quick how to wont hurt ?!

----------


## Burznazg

Are these addresses for packed exe?

Edit:

"In memory"

I just answered it myself... lel

----------


## Noobita

I might be dumb, but these offsets don't seem to be mapped in game's memory.

Edit: memory is read/execute only anyway, i'm too dumb to work around that

----------


## dclone

> If someone wants to play D2R (build 62115) offline just patch this in memory:
> 
> 0xD4AD68 -> 90 90
> 0xD4E25F -> 90 90 90 90 90 90
> 0xCAFB9D -> 90 B0 01
> 
> NOTE: This won't let you enter the game with saved chars! *Only new character* 
> 
> How to patch it? Well that's up to you


Thanks for sharing!

I successfully unpacked/dumped from memory and also patched in memory - process still closes immediately though.

Looking at the asm of the patched regions it seems I am offset. Could you share the original in memory hex bytes of the patched regions for verification?

EDIT:

Was a rebasing issue as expected.

----------


## doityourself

it will also close if u don't beat the crc checks

----------


## ZLOFENIX

Offsets correct, problem in protection which will kill game if something changed.

----------


## Namingo

how are you guys even getting the exe? what blizz cdn are you using?

----------


## ex0d

I see these offsets in debugger when I attach it to a running game.exe but I am not able to change the values there. Can anyone explain how to do this, please? I'd be much appreciated. I've been fighting with it since yesterday afternoon with just a short break for sleep.
@king48488 are you actually able to get in the game? If so, would you mind explaining how you did that, please? 

I managed to unlock TCP/IP menu with join/host game options. Hosting turns on a loading screen but then goes back to main menu. Joining is just waiting with no error or anything happening. If I host a server in D2 (not D2R) and try to join to it from D2R, the game is loading at first and then crashes the application.

Another interesting thing I noticed is that if I click 'join game' first in D2R, wait for a second, cancel and then try to host a game, the screen goes black and freezes. However, at that point D2 (not D2R) recognises there is a server open and tries to connect to it. However, I am getting 'unable to join' message after that.

Could there be also some way to use local multiplayer based on that?

----------


## ZLOFENIX

> I see these offsets in debugger when I attach it to a running game.exe but I am not able to change the values there. Can anyone explain how to do this, please? I'd be much appreciated. I've been fighting with it since yesterday afternoon with just a short break for sleep.
> @king48488 are you actually able to get in the game? If so, would you mind explaining how you did that, please? 
> 
> I managed to unlock TCP/IP menu with join/host game options. Hosting turns on a loading screen but then goes back to main menu. Joining is just waiting with no error or anything happening. If I host a server in D2 (not D2R) and try to join to it from D2R, the game is loading at first and then crashes the application.
> 
> Another interesting thing I noticed is that if I click 'join game' first in D2R, wait for a second, cancel and then try to host a game, the screen goes black and freezes. However, at that point D2 (not D2R) recognises there is a server open and tries to connect to it. However, I am getting 'unable to join' message after that.
> 
> Could there be also some way to use local multiplayer based on that?


You want too much from techdemo game version.

----------


## Kladdkakan

> Offsets correct, problem in protection which will kill game if something changed.


Ferib: Bypassing World of Warcraft's read-only code protection (crc32)

----------


## Noobita

> Ferib: Bypassing World of Warcraft's read-only code protection (crc32)


kills the game after running remapper

----------


## Xcesiuss

> Ferib: Bypassing World of Warcraft's read-only code protection (crc32)



Can confirm that crc32 bypass works for diablo, seems to be missing a few new offsets for it to work though.

crcCaveRegInstructOffsets

----------


## Kladdkakan

> Can confirm that crc32 bypass works for diablo, seems to be missing a few new offsets for it to work though.
> 
> crcCaveRegInstructOffsets


Feel free to share anything you find with the rest of the community, as I doubt Blizzard will care about improving their tech alpha demos security at this point.

----------


## ZLOFENIX

> Feel free to share anything you find with the rest of the community, as I doubt Blizzard will care about improving their tech alpha demos security at this point.


Its not only this game, same protection in scr, w3r, overwatch, wow, d3..

----------


## doityourself

> Its not only this game, same protection in scr, w3r, overwatch, wow, d3..


almost the same but not exactly!

----------


## doityourself

Just to clarify some stuff: It is NOT my problem if you are not able to apply these patches or others yourself. You won't get any help from me for that, there are other resources related to OW/Wow/... that help you to do that. Insulting me on discord or writing random stupid stuff just because you want the whole arm after getting the hand from me won't help you either.

----------


## MrNoble

> Can confirm that crc32 bypass works for diablo, seems to be missing a few new offsets for it to work though.
> 
> crcCaveRegInstructOffsets


That crcCaveRegInstructOffsets offset is unrelated to the game lol.

I will not help you guys patch your Diablo clients, but let me at least explain how my crc32 patcher works.
The crcCaveRegInstructOffsets is used in the crcCave buffer as seen below:



Which, results in the following disassembly:



The above code cave is responsible for swapping the wow.exe address with that of a fake_wow.exe address, the fake_wow.exe acts as a copy of the original (unmodified) executable.
The trick here is that the crc32 hook will check which address the crc32 is scanning and the redirect scans from _wow.exe to wow.exe+(.text size)_ to _fake_wow.exe to fake_wow.exe+(.text size)._
Finally, this will result in a valid crc32 check because the fake_wow.exe module was used instead of the (possible modified/patches) wow.exe module.

Pro Tip (for the skids): if you fail to find those patch locations using Cheat Engine, go setting->Scan Settings and check the 'MEM_MAPPED' checkbox because the game is remapped and CE won't scan those sections by default.

----------


## shelloux

> That crcCaveRegInstructOffsets offset is unrelated to the game lol.
> 
> I will not help you guys patch your Diablo clients, but let me at least explain how my crc32 patcher works.
> The crcCaveRegInstructOffsets is used in the crcCave buffer as seen below:
> 
> 
> 
> Which, results in the following disassembly:
> 
> ...


Maybe y can help patch D2R client for money?  :Big Grin:  Just say your price.  :Big Grin:   :Big Grin:   :Big Grin:  Because i give up  :Big Grin:

----------


## dclone

Thanks for explaining (again) and for your initial blogpost and sharing your method!

I have my loader cleanly remap D2R (no crashes without applying patches) but as soon as I use my C++ port of your method the game will crash after random 10-60 seconds. I suppose that the crc bypasses are not working correctly for me.

So would you assume that to be a bug in my C++ port of your code or are there things on D2R where your method needs to be adjusted for a new game?

Thanks

----------


## ex0d

Thanks @ferib.

Your solution enables memory write access (and seems to be bypassing CRCs based on the output) but unfortunately the game process crashes straight away on 'NtResumeProcess(hProcess);'. I can see memory changes to write while the process is still suspended and I see the offsets @king48488 mentioned. Changing them doesn't change the outcome though and the process still crashes immediately on NtResumeProcess.

Edit: I forgot to add that even with CRC check section commented out it still crashes on Resume. It doesn't seem to like NtUnmapViewOfSection/ NtMapViewOfSection.

----------


## R3peat

anybody be so kind to tell me where to get d2r alpha client files?
pm appreciated if you dont wanna talk about this in a pub post

----------


## malloc84

Thank your for the help @king48488 and @ferib.

----------


## 0x7C

> anybody be so kind to tell me where to get d2r alpha client files?
> pm appreciated if you dont wanna talk about this in a pub post


Release v1.3 . barncastle/Battle.Net-Installer . GitHub

BNetInstaller.exe --prod osib --lang enus --dir "C:\D2R"

----------


## ex0d

> anybody be so kind to tell me where to get d2r alpha client files?
> pm appreciated if you dont wanna talk about this in a pub post


You can use this: GitHub - barncastle/Battle.Net-Installer: A command line tool for installing Blizzard games through Battle.Net.
.\BNetInstaller.exe --prod osib --uid osi_beta --lang enus --dir "D:\Games\D2R"

Edit: oops, before I wrote it 0x7C posted his reply already

----------


## R3peat

ok thx  :Thumbsup:

----------


## dclone

> Thanks for explaining (again) and for your initial blogpost and sharing your method!
> 
> I have my loader cleanly remap D2R (no crashes without applying patches) but as soon as I use my C++ port of your method the game will crash after random 10-60 seconds. I suppose that the crc bypasses are not working correctly for me.
> 
> So would you assume that to be a bug in my C++ port of your code or are there things on D2R where your method needs to be adjusted for a new game?
> 
> Thanks


Turns out my remapping still is detected somehow - after a random amount of time in the multiple minutes the game crashes even without applying any patches whatsoever.

----------


## ZeltMarv

I've been trying all day to figure out how to bypass the CRC checks. No luck so far.
I tried interpreting ferib's guide and, while I more or less get what's going on, I can't make it work.
The patching on memory part is easy, what's hard is bypassing the CRC check.

I'll report back if I make any progress. x_x

----------


## dclone

> I've been trying all day to figure out how to bypass the CRC checks. No luck so far.
> I tried interpreting ferib's guide and, while I more or less get what's going on, I can't make it work.
> The patching on memory part is easy, what's hard is bypassing the CRC check.
> 
> I'll report back if I make any progress. x_x


Are you sure that you don't have crashes with remapping only? I thought so too but it crashes after a random time of several minutes.

----------


## ZeltMarv

> Are you sure that you don't have crashes with remapping only? I thought so too but it crashes after a random time of several minutes.


That's the thing. My programming experience is quite limited so I haven't been able to do any remapping.

I'm gonna try DLL injection to see if I can get around the CRC check like that.

----------


## ex0d

> Are you sure that you don't have crashes with remapping only? I thought so too but it crashes after a random time of several minutes.


To be fair even several minutes is quite an achievement at this point. How did you do that? My process crashes immediately after remapping.

----------


## MrNoble

> Thanks @ferib.
> 
> Your solution enables memory write access (and seems to be bypassing CRCs based on the output) but unfortunately the game process crashes straight away on 'NtResumeProcess(hProcess);'. I can see memory changes to write while the process is still suspended and I see the offsets @king48488 mentioned. Changing them doesn't change the outcome though and the process still crashes immediately on NtResumeProcess.
> 
> Edit: I forgot to add that even with CRC check section commented out it still crashes on Resume. It doesn't seem to like NtUnmapViewOfSection/ NtMapViewOfSection.


Hook the thread creation WinAPI (or even syscall) and keep an eye on the thread permissions.
There is a sneaky flag that prevents you from suspending threads.

----------


## MrNoble

> To be fair even several minutes is quite an achievement at this point. How did you do that? My process crashes immediately after remapping.


it's not, you just get an instant crash when you fuck up the assembly, but when your assembly is fine (but not 100% working) it wont crash, instead, the crc32 checks detects you.

----------


## Zagorim

This is all to patch the game in memory right ? Excuse the noob question but would it be a lot more complicated to make a patched .exe ?

----------


## dclone

> Hook the thread creation WinAPI (or even syscall) and keep an eye on the thread permissions.
> There is a sneaky flag that prevents you from suspending threads.


You mean thread suspension returns no error code but in reality threads are not suspended?

----------


## ex0d

> Hook the thread creation WinAPI (or even syscall) and keep an eye on the thread permissions.
> There is a sneaky flag that prevents you from suspending threads.


Thanks again @ferib

I tried to find the thread causing the crash and I believe I found it. It's just one. It seems to have the same permissions as the others which resume just fine though. I should add that suspending and resuming the process without remapping (including the thread I am talking about) works fine without crashing the whole process.

After running remapping, I can resume all threads in the process but one:
threadSearch.jpg

Please ignore different TIDs on the right. Screenshots are from different runs but it's the same thread 'Game.exe+0xafde0'.

Since it seems to have the same permissions like the rest, I am not sure what I can do from here. This is the thread that resumed brings the process back to life and I can navigate things in game (unless remapped, then it crashes).

----------


## MrNoble

> Thanks again @ferib
> 
> I tried to find the thread causing the crash and I believe I found it. It's just one. It seems to have the same permissions as the others which resume just fine though. I should add that suspending and resuming the process (including the thread I am talking about) works fine without crashing the whole process.
> 
> After running remapping, I can resume all threads in the process but one:
> threadSearch.jpg
> 
> Please ignore different TIDs on the right. Screenshots are from different runs but it's the same thread 'Game.exe+0xafde0'.
> 
> Since it seems to have the same permissions like the rest, I am not sure what I can do from here. This is the thread that resumed brings the process back to life and I can navigate things in game (unless remapped, then it crashes).


the "120+" thread should be equal to 'MAXIMUM_SUSPEND_COUNT', it's a trap that's probably used to detect suspending of the game.

----------


## dclone

> the "120+" thread should be equal to 'MAXIMUM_SUSPEND_COUNT', it's a trap that's probably used to detect suspending of the game.


Haha nice just found that blog post explaining how thread suspension works and thought of that trick to set suspend count to max.

----------


## ex0d

> the "120+" thread should be equal to 'MAXIMUM_SUSPEND_COUNT', it's a trap that's probably used to detect suspending of the game.


Thanks @ferib

I had high hopes for this one as sounded quite likely to be the source of the problem. So I suspended all threads but that one (which has a suspend count at 127), ran the remapping (even without crc section) and resumed all threads but that particular one. That way the suspend count never changed and always stayed as 127. Unfortunately the process is still crashing.

----------


## dclone

Since I built a loader I am pretty sure that I do the remap before all but main thread and 2 other threads even exist. Both get suspended with previous suspend count == 0. I.e. I am pretty sure that while I am doing the remapping nobody is watching me. But even though I remap again back to original protection the game will crash after a few mins. So there must be some way how later on the remapping is detected. I have not applied any patches so it can't be that. And it can't be the hooks or such of the loader because when I do not remap at all then it runs forever.

----------


## MrNoble

> Since I built a loader I am pretty sure that I do the remap before all but main thread and 2 other threads even exist. Both get suspended with previous suspend count == 0. I.e. I am pretty sure that while I am doing the remapping nobody is watching me. But even though I remap again back to original protection the game will crash after a few mins. So there must be some way how later on the remapping is detected. I have not applied any patches so it can't be that. And it can't be the hooks or such of the loader because when I do not remap at all then it runs forever.


On wow there are logfiles to indicate if its a 'security' crash or not, im not seeing any useful log files on D2R ;/

----------


## ZeltMarv

I managed to get the CRC bypass to work, but the game crashes a few seconds after it's launched :/ I'm guessing I'm hitting the same roadblocks as some people here

----------


## dclone

Those delayed randomised crashes are pretty smart by Blizzard - hard to reverse the origin and demoralising at the same time.

----------


## MrNoble

Can confirm, the crc32 checks are the same as the ones I'm used to.
Big thanks, @king48488 for poking my interests, was a fun challenge to get it working!

----------


## Fritomaster

[QUOTE=ferib;4299078]Can confirm, the crc32 checks are the same as the ones I'm used to.
Big thanks, @king48488 for poking my interests, was a fun challenge to get it working!


Awesome work. I don't really much of the process but you obviously know your trade.

Have you progressed a bit further and its still working?

----------


## ex0d

> Can confirm, the crc32 checks are the same as the ones I'm used to.
> Big thanks, @king48488 for poking my interests, was a fun challenge to get it working!


Well done @ferib !

How did you get around remapping crash? You mentioned you were looking for logs earlier. I've noticed that when the crash happens BlizzardError.exe pops up for a split second but I could not find anything it saves.

----------


## themp

Do you have any plans on releasing your executable, for all of us that didn't get into the alpha?

----------


## dclone

> Can confirm, the crc32 checks are the same as the ones I'm used to.
> Big thanks, @king48488 for poking my interests, was a fun challenge to get it working!


Gratz! Nice work - I think it is save to say most of wouldn't even see a chance to beat this without your work on crc bypasses.

For my loader I still face crashes due to the remapping - confirmed with someone who has it running that my method should work but for some reason I get these random crashes after 2-3 mins in menu.

----------


## dclone

> Well done @ferib !
> 
> How did you get around remapping crash? You mentioned you were looking for logs earlier. I've noticed that when the crash happens BlizzardError.exe pops up for a split second but I could not find anything it saves.


The BlizzardError.exe does store a crashlog and dump in your Temp folder.

----------


## ZLOFENIX

I connected game to my emu, now will make emu part, im not interested in full offline, only to connect game to my emu.
Will report when emu will be done if nothing happens, because im not using google protobuf impl.
Let say its just info post.

----------


## TreeEskimo

Patched exe would be dope. I'll try and see if I can work around this in the mean time. Thanks for the information guys.

----------


## usafbordeaux

Guess I gotta start youtubing "How to program" lol. I need to take a break from just reading this thread lol.

----------


## MrNoble

> Well done @ferib !
> 
> How did you get around remapping crash? You mentioned you were looking for logs earlier. I've noticed that when the crash happens BlizzardError.exe pops up for a split second but I could not find anything it saves.


I ended up patching the crc32's properly and had to remap the sections back after the patching was done.




> Gratz! Nice work - I think it is save to say most of wouldn't even see a chance to beat this without your work on crc bypasses.
> 
> For my loader I still face crashes due to the remapping - confirmed with someone who has it running that my method should work but for some reason I get these random crashes after 2-3 mins in menu.


The fact that you crash after 2~3 minutes means you have patched/remapped the game and triggered the crc32 checks.
This means you are over the first roadblock of patching & remapping, but you still got some crc32 checks to take care of.

----------


## dclone

> The fact that you crash after 2~3 minutes means you have patched/remapped the game and triggered the crc32 checks.
> This means you are over the first roadblock of patching & remapping, but you still got some crc32 checks to take care of.


I wish it was like that. It crashes after 2-3 minutes _without_ any patches applied.

What I do is:

backup contents of existing viewcreate new sectionunmap existing viewcreate unprotected view in my sectionrestore contents to unprotected view in my sectionunmap my unprotected viewcreate protected view

So in the end everything is exactly like if I did no mapping at all with the sole difference that the view was created with my section and not Blizzard's. Still I get the crash. If I don't do the above then I don't get a crash.

So it must have to do with my remapping.

----------


## MrNoble

For those who would like to unlock all buttons, 0x597E1C -> 90909090909090

DM me if you are willing to play multiplayer with me  :Wink: !

----------


## zogzog34

I understand that you guys don't want to release a crack or tool to bypass the anti-debugging easily for probably some of those reasons :
- it's more work to make it foolproof and stable
- people will still ask for more help and support
- git gud
- blizzard is reading this ? (Please don't ban me, my wow account is the apple of my eye)

So let me just ask one thing : How hard would it be to replicate this hack for someone with pretty average developing skills (C++, Bash and some php) and absolutely no skill/knowledge in asm/reverse engineering.
Trying to learn those but probably i should go with simpler goals first.
Although with the amount of info there is in this thread and on ferib blog maybe reading a few things about PE file format and memory hacking would be enough.

Edit : Forgot one reason is that it might start attracting more attention to this website if you start sharing tools to bypass DRMs

----------


## Fritomaster

> I understand that you guys don't want to release a crack or tool to bypass the anti-debugging easily for probably some of those reasons :
> - it's more work to make it foolproof and stable
> - people will still ask for more help and support
> - git gud
> - blizzard is reading this ? (Please don't ban me, my wow account is the apple of my eye)
> 
> So let me just ask one thing : How hard would it be to replicate this hack for someone with pretty average developing skills (C++, Bash and some php) and absolutely no skill/knowledge in asm/reverse engineering.
> Trying to learn those but probably i should go with simpler goals first.
> Although with the amount of info there is in this thread and on ferib blog maybe reading a few things about PE file format and memory hacking would be enough.
> ...


This site has been popular for a lonnnnnnnnnnnnnng time. Even like 10+ years ago when it was mmowned.

----------


## zogzog34

I mean i know it's popular and i was already here trying to find cheats for shitty wow privates servers ten years ago, just lurking. And blizzard is probably browsing it often but too lazy to patch their games too  :Big Grin: 
I do think sharing cracks could attract different people and comes with his own problems though.
Also this thread has been indexed by google.

----------


## DesmondTiny

> You can use this: GitHub - barncastle/Battle.Net-Installer: A command line tool for installing Blizzard games through Battle.Net.
> .\BNetInstaller.exe --prod osib --uid osi_beta --lang enus --dir "D:\Games\D2R"
> 
> Edit: oops, before I wrote it 0x7C posted his reply already


How do you use this application exactly? I download it but not sure what to do.

----------


## lanzajamones

> How do you use this application exactly? I download it but not sure what to do.


use it in the CMD (command line)
BNetInstaller.exe --prod osib --uid osi_beta --lang enus --dir "D:\Games\D2R"
Between " " you can type the path you want

----------


## MrNoble

I decided to open-source my patcher because it's being 'sold' and shared anyways, better to give you access to the source so you can verify what you're dealing with. 

Mine allows you to add your own patches in a patches.txt file next to the .exe so you don't have to go through the hassle of making the crc32 bypass work, just start tinkering around with patching stuff!

Download: GitHub - ferib/D2R-Offline: Diablo II: Resurected, Offline-mode patcher

----------


## inashu

Thanks! Works well!

----------


## Chacker

Hmm, getting a "unhandled exception" :/

----------


## DesmondTiny

> use it in the CMD (command line)
> BNetInstaller.exe --prod osib --uid osi_beta --lang enus --dir "D:\Games\D2R"
> Between " " you can type the path you want


so when I open the program it looks like it will bring up a command box but it just closes immediately, I tried to use another command program but it says the program isn't recognized. Is it a security thing that is immediately closing the application?

----------


## Chacker

OK, thank you I figured it out. It is working now.
Instructions are missing some important steps...

----------


## MrNoble

> OK, thank you I figured it out. It is working now.
> Instructions are missing some important steps...


Care to explain whats missing so I can add that to the instructions?

----------


## foobar26

> Care to explain whats missing so I can add that to the instructions?


Nothing missing that I can see, works perfectly.

Man, I spent all morning trying to get the remapping to work without crashing and got nowhere. Now I'm going to have to pour over your working code to see what I am obviously too stupid to figure out.

Thanks a ton!

----------


## Chacker

I tried to start the copy I have downloaded via the installer tool, which gave me the "unhandled exeption" regardless what I did.
After trying different approaches it only started working when I was logged in into the blizzard desktop app and after I have launched the game once by hand for the app to detect the game.
This is how it started working for me using your patcher. Is this the intended way to start the game or have I overseen or misunderstood the instructions?

----------


## MrNoble

> I tried to start the copy I have downloaded via the installer tool, which gave me the "unhandled exeption" regardless what I did.
> After trying different approaches it only started working when I was logged in into the blizzard desktop app and after I have launched the game once by hand for the app to detect the game.
> This is how it started working for me using your patcher. Is this the intended way to start the game or have I overseen or misunderstood the instructions?


No, you need to start the patcher will the correct command-line arguments, it's all explained in the readme.md.
I have no clue about the BNet installer tool, ain't mine.

----------


## gr0nder

I really appreciate the release, I spend quite some time screwing around and didn't even get close. Not all buttons are enabled for me though, the rest worked fine.

----------


## BananaManBoy

> Thanks for sharing!
> 
> I successfully unpacked/dumped from memory and also patched in memory - process still closes immediately though.
> 
> Looking at the asm of the patched regions it seems I am offset. Could you share the original in memory hex bytes of the patched regions for verification?
> 
> EDIT:
> 
> Was a rebasing issue as expected.


What method did you use to unpack/dump Game.exe? For me x64dbg encounters private instruction exception when I try to attach or run from debugger, and the disassembly looks like it's incorrect due to an unusual/uneven instruction pointer offset. 

Or is this your secret technique?

----------


## hustlemode

> For those who would like to unlock all buttons, 0x597E1C -> 90909090909090
> 
> DM me if you are willing to play multiplayer with me !


Does this not work any longer? I can play the game, but the TCP/IP button doesn't seem to work and I'm unable to continue a previously saved character.

----------


## vvvat

> I decided to open-source my patcher because it's being 'sold' and shared anyways, better to give you access to the source so you can verify what you're dealing with. 
> 
> Mine allows you to add your own patches in a patches.txt file next to the .exe so you don't have to go through the hassle of making the crc32 bypass work, just start tinkering around with patching stuff!
> 
> Download: GitHub - ferib/D2R-Offline: Diablo II: Resurected, Offline-mode patcher


Thanks, but could you reliese exe in a way that I'm too inexperienced to do it?

----------


## shalzuth

I uploaded a version as well, allows playing all classes.
source @ GitHub - shalzuth/D2RModding: Modding for Diablo 2 Resurrected
download @ https://github.com/shalzuth/D2RModdi...D2RModding.exe, place in D2R directory, then run D2RModding.exe

----------


## diehard200

Thanks for this. i noticed that the shared stash isnt saving items. just lost a lot of good shit lol

----------


## knic

Thank you. I was so frustrated for not beign invited to the alpha. You Ferib, are the hero we need.

----------


## ZeltMarv

Shared Stash doesn't work with TCP/IP, only single-player.

Also, as a reference, edit your character to make it clear Normal, that way it will load in SP no problem.

----------


## malloc84

Thanks. This now answers why I failed to make it work...

I cannot use the OfflinePatcher. Both releases from @ferib and @shalzuth. 
Seems my Game.exe (original unaltered, downloaded from cdn) is different somehow. It crashes on trying to RPM\WPM. 
When I try it on my rebased exe it all goes through and says "Done" but process never starts. When I try it on altered Game.exe (1byte change), it also goes through but it never starts. No wonder any crc32 fixes I tried didn't work  :Frown: 

Anyway, error is:




> [08:20:26.47002]: Launching game...
> [08:20:26.48914]: Process started...
> [08:20:27.59580]: Suspending process...
> Unhandled exception. System.ComponentModel.Win32Exception (299): Only part of a ReadProcessMemory or WriteProcessMemory request was completed.
> at System.Diagnostics.NtProcessManager.GetModules(Int32 processId, Boolean firstModuleOnly)
> at System.Diagnostics.NtProcessManager.GetFirstModule(Int32 processId)
> at System.Diagnostics.Process.get_MainModule()
> at D2ROffline.Program.Main(String[] args)


Game.exe details (unaltered):

Size: 36,0 MB (37.829.008 bytes)
SizeDsk: 36,0 MB (37.830.656 bytes)
FileVer: 0.1.62155.0
ProductVer: 0.1.62115

Gonna debug it to see what is going on but it is weird.

----------


## inashu

> I uploaded a version as well, allows playing all classes.
> source @ GitHub - shalzuth/D2RModding: Modding for Diablo 2 Resurrected
> download @ https://github.com/shalzuth/D2RModdi...D2RModding.exe, place in D2R directory, then run D2RModding.exe


Awesome! Will try it later. Maybe a dumb question but the Alpha only allowed A1 and A2, is A3 and A4 in the game files? If they are, is it possible to test those acts as well some how?

----------


## diehard200

> Shared Stash doesn't work with TCP/IP, only single-player.
> 
> Also, as a reference, edit your character to make it clear Normal, that way it will load in SP no problem.


how do you edit it to clear normal?

----------


## gr0nder

> Awesome! Will try it later. Maybe a dumb question but the Alpha only allowed A1 and A2, is A3 and A4 in the game files? If they are, is it possible to test those acts as well some how?


The files are there and you can get to the acts, but they are darkened, you only see lights and nothing else.
See: D2R Act 3 - Album on Imgur

----------


## knlnkl

> Thanks. This now answers why I failed to make it work...
> 
> I cannot use the OfflinePatcher. Both releases from @ferib and @shalzuth. 
> Seems my Game.exe (original unaltered, downloaded from cdn) is different somehow. It crashes on trying to RPM\WPM. 
> When I try it on my rebased exe it all goes through and says "Done" but process never starts. When I try it on altered Game.exe (1byte change), it also goes through but it never starts. No wonder any crc32 fixes I tried didn't work 
> 
> Anyway, error is:
> 
> 
> ...


I'm experiencing the exact same issue, same file / product version & size. I might have a poke around and see if I can figure anything out via debugging..

----------


## diehard200

> The files are there and you can get to the acts, but they are darkened, you only see lights and nothing else.
> See: D2R Act 3 - Album on Imgur


surely someone here can make those acts playable like they made all characters playable  :Smile: 

edit - apparently you can play them but only in the classic graphics mode.

----------


## Vilavek

> how do you edit it to clear normal?


Using a hex editor I opened a d2s save file and set the byte at offset 0x25 to 8 (which indicates you beat normal difficulty), then recalculated and updated the d2s save file checksum at offset 0xC. I was able to load the save into singleplayer after doing this.

----------


## Flamberge

> Thanks. This now answers why I failed to make it work...
> 
> I cannot use the OfflinePatcher. Both releases from @ferib and @shalzuth. 
> Seems my Game.exe (original unaltered, downloaded from cdn) is different somehow. It crashes on trying to RPM\WPM. 
> When I try it on my rebased exe it all goes through and says "Done" but process never starts. When I try it on altered Game.exe (1byte change), it also goes through but it never starts. No wonder any crc32 fixes I tried didn't work 
> 
> Anyway, error is:
> 
> 
> ...


please don't use CDN to download the game file, use this instead: Release v1.3 . barncastle/Battle.Net-Installer . GitHub

----------

