aboutsummaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-04-27 05:09:55 +0200
committercrueter <crueter@eden-emu.dev>2026-04-27 05:09:55 +0200
commitf088f5bd452bcc824848194525c8eaf08e7a76e6 (patch)
treee97844abe95236739d26a11aee4e1459f3e1b692 /src/core
parentcbeea5b9549062b440c1ae05989892c22abc8c79 (diff)
[loader] change ASLR algo to be more uniform (#3869)
Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3869 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev>
Diffstat (limited to 'src/core')
-rw-r--r--src/core/loader/deconstructed_rom_directory.cpp5
-rw-r--r--src/core/loader/kip.cpp5
-rw-r--r--src/core/loader/nro.cpp5
3 files changed, 6 insertions, 9 deletions
diff --git a/src/core/loader/deconstructed_rom_directory.cpp b/src/core/loader/deconstructed_rom_directory.cpp
index 2ea63e137e..afa5cdbc36 100644
--- a/src/core/loader/deconstructed_rom_directory.cpp
+++ b/src/core/loader/deconstructed_rom_directory.cpp
@@ -228,9 +228,8 @@ AppLoader_DeconstructedRomDirectory::LoadResult AppLoader_DeconstructedRomDirect
code_size += patch_ctx.GetTotalPatchSize();
// TODO: this is bad form of ASLR, it sucks
- size_t aslr_offset = ((::Settings::values.rng_seed_enabled.GetValue()
- ? ::Settings::values.rng_seed.GetValue()
- : Common::Random::Random64(0)) * 0x734287f27) & 0xfff000;
+ std::uintptr_t aslr_offset = ((::Settings::values.rng_seed_enabled.GetValue()
+ ? ::Settings::values.rng_seed.GetValue() : Common::Random::Random64(0)) << 12) & 0xfff000;
// Setup the process code layout
if (process.LoadFromMetadata(metadata, code_size, fastmem_base, aslr_offset, is_hbl).IsError()) {
diff --git a/src/core/loader/kip.cpp b/src/core/loader/kip.cpp
index 81449ac8b8..978ffed2b9 100644
--- a/src/core/loader/kip.cpp
+++ b/src/core/loader/kip.cpp
@@ -89,9 +89,8 @@ AppLoader::LoadResult AppLoader_KIP::Load(Kernel::KProcess& process,
codeset.DataSegment().size += kip->GetBSSSize();
// TODO: this is bad form of ASLR, it sucks
- size_t aslr_offset = ((::Settings::values.rng_seed_enabled.GetValue()
- ? ::Settings::values.rng_seed.GetValue()
- : Common::Random::Random64(0)) * 0x734287f27) & 0xfff000;
+ std::uintptr_t aslr_offset = ((::Settings::values.rng_seed_enabled.GetValue()
+ ? ::Settings::values.rng_seed.GetValue() : Common::Random::Random64(0)) << 12) & 0xfff000;
// Setup the process code layout
if (process.LoadFromMetadata(FileSys::ProgramMetadata::GetDefault(), codeset.memory.size(), 0, aslr_offset, false).IsError()) {
diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp
index e7c5ac01b1..738d805149 100644
--- a/src/core/loader/nro.cpp
+++ b/src/core/loader/nro.cpp
@@ -242,9 +242,8 @@ static bool LoadNroImpl(Core::System& system, Kernel::KProcess& process,
}();
// TODO: this is bad form of ASLR, it sucks
- size_t aslr_offset = ((::Settings::values.rng_seed_enabled.GetValue()
- ? ::Settings::values.rng_seed.GetValue()
- : Common::Random::Random64(0)) * 0x734287f27) & 0xfff000;
+ std::uintptr_t aslr_offset = ((::Settings::values.rng_seed_enabled.GetValue()
+ ? ::Settings::values.rng_seed.GetValue() : Common::Random::Random64(0)) << 12) & 0xfff000;
// Setup the process code layout
if (process