Hey, looks like the download link was pulled. Issues with the current release or something else?
Unfortunately yes, but it's fixed now-
(tech talk start- a lot of bla bla bla)I was working on pre-patched FFVIII_EFIGS.dll that had ASLR disabled in DLL_CHARACTERISTICS. Therefore both IDA and Ghidra disassembled machine code:
FF 15 A8 B2 66 11
as
call ds:free
, however when building demaster I have no access to data segment of given module on compile-time. Therefore raw disassembly of this opcode as said by Ghidra and defuse.ca x86 disassembler is:
ff 15 a8 b2 66 11 call DWORD PTR ds:0x1166b2a8
- while the module image base offset was 0x10000000. When ASLR is disabled, then ds:0x1166b2a8 is correct, however when ASLR is enabled by default as in original release, then the image base offset can change to example 0x7F320000, so 0x1166b2a8 didn't belong to imports of this module. It caused all the crashes because it tried to jump to unknown memory address. Only CheatEngine disassembler correctly disassembled this opcode as
CALL DWORD PTR [FFVIII_EFIGS.dll+0x166b2a8]
- however it did that way because CE don't work on static database but on runtime, so it knew the image bases- same would be displayed as x86dbg, windbg and etc- while IDA having a debugger it takes the data from static database and would display calculated absolute address. There were two ways: patch DLL, but I can do that before launching FF8 and injecting demaster DLL or do it correctly and change call DWORD PTR ds:0x1166b2a8 to:
MOV EAX, ds_free_add_rel_pointer
MOV EAX, [EAX]
CALL EAX
(tech talk end)The new working version is available:
https://github.com/MaKiPL/FF8_demastered/releases/tag/1.1.1 - it's going to be replaced with 1.2 soon with launcher and auto-unpacking requiring zero input from user along with example textures.