It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
64-bit windows uses a stronger default policy (AlwaysOn instead of OptIn), which is why following the steps in the support article is not working for some people.
avatar
squid_80: You know you can patch(hexedit) storm.dll to allocate read+write+executable memory, right? So when it tries to run its dynamically generated code it won't trigger a NX exception...
avatar
bdschnei: Good hint! After patching the respective storm.dlls by changing 2 bytes from 04 to 40 at offsets 0x1d43b and 0x1dce8
Diablo.exe seems to run ;)

(This changes the flProtect argument to two VirtualAlloc() calls, 04 is PAGE_READWRITE, 40 is PAGE_EXECUTE_READWRITE)

storm.dll:
0x1d43b: 04 -> 40
0x1dce8: 04 -> 40

After these changes, Diablo also runs without disabling DEP.
This worked for me as well, thank ye!!

One thing I should note here, is the GOG version has *two* copies of storm.dll
One in the base program directory and another in the dx subdirectory.
*Both* need to be changed for this to work !!
avatar
bdschnei: Good hint! After patching the respective storm.dlls by changing 2 bytes from 04 to 40 at offsets 0x1d43b and 0x1dce8
Diablo.exe seems to run ;)

(This changes the flProtect argument to two VirtualAlloc() calls, 04 is PAGE_READWRITE, 40 is PAGE_EXECUTE_READWRITE)

storm.dll:
0x1d43b: 04 -> 40
0x1dce8: 04 -> 40

After these changes, Diablo also runs without disabling DEP.
avatar
derelict.765: This worked for me as well, thank ye!!

One thing I should note here, is the GOG version has *two* copies of storm.dll
One in the base program directory and another in the dx subdirectory.
*Both* need to be changed for this to work !!
Could you please upload the changed file somewhere? :< I cannot into hexedit :<

EDIT: no need to, I can into hexedit after all
Post edited March 10, 2019 by Pyromancer
avatar
Pyromancer: :< I cannot into hexedit :<
Это можно сделать онлайн :)
avatar
squid_80: 64-bit windows uses a stronger default policy (AlwaysOn instead of OptIn), which is why following the steps in the support article is not working for some people.
Open cmd.exe as administrator
or win+r, type cmd (there should be a note, saying that it will be ran as admin)

type:
bcdedit.exe /set {currentnx} nx OptOut

result should be:
The operation completed successfully.

restart

now you can select exceptions to the DEP policy in the system menu

to revert to always on follow the same procedure, but use:

bcdedit.exe /set {currentnx} nx AlwaysOn
Post edited March 11, 2019 by StrEagle
avatar
squid_80: You know you can patch(hexedit) storm.dll to allocate read+write+executable memory, right? So when it tries to run its dynamically generated code it won't trigger a NX exception...
avatar
bdschnei: Good hint! After patching the respective storm.dlls by changing 2 bytes from 04 to 40 at offsets 0x1d43b and 0x1dce8
Diablo.exe seems to run ;)

(This changes the flProtect argument to two VirtualAlloc() calls, 04 is PAGE_READWRITE, 40 is PAGE_EXECUTE_READWRITE)

storm.dll:
0x1d43b: 04 -> 40
0x1dce8: 04 -> 40

After these changes, Diablo also runs without disabling DEP.

UPDATE: This is now included in

Internal Hotfix v3 (11 March 2019)
added a potential fix for mouse issues;
added a workaround for DEP issues on some machines;

No need to patch manually :)
Hi, this fix worked perfectly for Diablo's storm.dll. Do you have a similar fix for Hellfire?
Its storm.dll seems to be different at those offsets, and I tried searching for a couple of hex bytes to find correspondence but no luck.
Post edited May 12, 2020 by user deleted
Although Blizzard never formally promised it would work, in practice new versions of Storm.dll can often be used in place of older ones. You could try moving the Hellfire storm.dll aside and copying in the one from Diablo. If it works, that would get Hellfire to use the fixed version of storm.dll without needing to modify another dll.
Or you can just use devilutionx which doesn't have such problems
https://github.com/diasurgical/devilutionX