unself: rename SectionInfo to segment_ext_header

This commit is contained in:
Megamouse 2023-04-19 20:57:13 +02:00
parent 31ef970f23
commit 5fb716fc21
2 changed files with 22 additions and 25 deletions

View File

@ -209,24 +209,22 @@ void program_identification_header::Show() const
self_log.notice("Version: 0x%llx", program_sceversion); self_log.notice("Version: 0x%llx", program_sceversion);
} }
void SectionInfo::Load(const fs::file& f) void segment_ext_header::Load(const fs::file& f)
{ {
offset = Read64(f); offset = Read64(f);
size = Read64(f); size = Read64(f);
compressed = Read32(f); compression = Read32(f);
unknown1 = Read32(f); unknown = Read32(f);
unknown2 = Read32(f); encryption = Read64(f);
encrypted = Read32(f);
} }
void SectionInfo::Show() const void segment_ext_header::Show() const
{ {
self_log.notice("Offset: 0x%llx", offset); self_log.notice("Offset: 0x%llx", offset);
self_log.notice("Size: 0x%llx", size); self_log.notice("Size: 0x%llx", size);
self_log.notice("Compressed: 0x%08x", compressed); self_log.notice("Compression: 0x%08x", compression);
self_log.notice("Unknown1: 0x%08x", unknown1); self_log.notice("Unknown: 0x%08x", unknown);
self_log.notice("Unknown2: 0x%08x", unknown2); self_log.notice("Encryption: 0x%08x", encryption);
self_log.notice("Encrypted: 0x%08x", encrypted);
} }
void SCEVersionInfo::Load(const fs::file& f) void SCEVersionInfo::Load(const fs::file& f)
@ -940,13 +938,13 @@ bool SELFDecrypter::LoadHeaders(bool isElf32, SelfAdditionalInfo* out_info)
// Read section info. // Read section info.
secinfo_arr.clear(); m_seg_ext_hdr.clear();
self_f.seek(m_ext_hdr.segment_ext_hdr_offset); self_f.seek(m_ext_hdr.segment_ext_hdr_offset);
for(u32 i = 0; i < ((isElf32) ? elf32_hdr.e_phnum : elf64_hdr.e_phnum); ++i) for(u32 i = 0; i < ((isElf32) ? elf32_hdr.e_phnum : elf64_hdr.e_phnum); ++i)
{ {
secinfo_arr.emplace_back(); m_seg_ext_hdr.emplace_back();
secinfo_arr.back().Load(self_f); m_seg_ext_hdr.back().Load(self_f);
} }
// Read SCE version info. // Read SCE version info.
@ -1040,8 +1038,8 @@ void SELFDecrypter::ShowHeaders(bool isElf32)
self_log.notice("----------------------------------------------------"); self_log.notice("----------------------------------------------------");
self_log.notice("Section info"); self_log.notice("Section info");
self_log.notice("----------------------------------------------------"); self_log.notice("----------------------------------------------------");
for(unsigned int i = 0; i < secinfo_arr.size(); i++) for(unsigned int i = 0; i < m_seg_ext_hdr.size(); i++)
secinfo_arr[i].Show(); m_seg_ext_hdr[i].Show();
self_log.notice("----------------------------------------------------"); self_log.notice("----------------------------------------------------");
self_log.notice("SCE version info"); self_log.notice("SCE version info");
self_log.notice("----------------------------------------------------"); self_log.notice("----------------------------------------------------");

View File

@ -85,14 +85,13 @@ struct program_identification_header
void Show() const; void Show() const;
}; };
struct SectionInfo struct segment_ext_header
{ {
u64 offset; u64 offset; // Offset to data
u64 size; u64 size; // Size of data
u32 compressed; u32 compression; // 1 = plain, 2 = zlib
u32 unknown1; u32 unknown; // Always 0, as far as I know.
u32 unknown2; u64 encryption; // 0 = unrequested, 1 = completed, 2 = requested
u32 encrypted;
void Load(const fs::file& f); void Load(const fs::file& f);
void Show() const; void Show() const;
@ -454,7 +453,7 @@ class SELFDecrypter
std::vector<Elf32_Phdr> phdr32_arr{}; std::vector<Elf32_Phdr> phdr32_arr{};
// Decryption info structs. // Decryption info structs.
std::vector<SectionInfo> secinfo_arr{}; std::vector<segment_ext_header> m_seg_ext_hdr{};
SCEVersionInfo scev_info{}; SCEVersionInfo scev_info{};
std::vector<ControlInfo> ctrlinfo_arr{}; std::vector<ControlInfo> ctrlinfo_arr{};