From 9f6c18949e0edbeb3f72f8823829f3dfed7a8513 Mon Sep 17 00:00:00 2001 From: "381848900@qq.com" Date: Fri, 13 Dec 2024 13:11:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=96=B0=E8=8A=82VA?= =?UTF-8?q?=E7=9A=84=E8=AE=A1=E7=AE=97=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-tauri/src/app_state.rs | 14 +++++++++++--- src/components/FileHeader/FileHeader.tsx | 2 +- src/components/NTHeader/NTHeader.tsx | 2 +- src/components/OptionalHeader/OptionalHeader.tsx | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src-tauri/src/app_state.rs b/src-tauri/src/app_state.rs index 170ab60..bee9d17 100644 --- a/src-tauri/src/app_state.rs +++ b/src-tauri/src/app_state.rs @@ -215,7 +215,7 @@ impl AppState { rw_mmap[new_section_header_offset..new_section_header_offset + 8] .copy_from_slice(§ion_name_bytes); // 写入节的VA - // TODO: 新节的VA应该是最后一个节的VA + section_size对齐后的大小 + // TODO: 新节的VA应该是最后一个节的VA + 最后一个节的SizeOfRawData对齐后的大小 let last_section_header_offset = section_table_offset + 40 * (number_of_sections - 1) as usize; let last_section_va = u32::from_le_bytes( @@ -223,8 +223,16 @@ impl AppState { .try_into() .unwrap(), ); - // 对齐后的VA, 对齐方式(last_section_va + section_size) 和section_alignment进行对齐 - let aligned_va = (last_section_va + section_size as u32 + section_alignment - 1) + let last_sction_size = u32::from_le_bytes( + rw_mmap[last_section_header_offset + 16..last_section_header_offset + 20] + .try_into() + .unwrap(), + ); + let last_section_alignment_size = (last_sction_size + section_alignment - 1) + & !(section_alignment - 1); + + // 对齐后的VA, 对齐方式(last_section_va ) 和section_alignment进行对齐 + let aligned_va = ((last_section_va + last_section_alignment_size) + section_alignment - 1) & !(section_alignment - 1); rw_mmap[new_section_header_offset + 12..new_section_header_offset + 16] diff --git a/src/components/FileHeader/FileHeader.tsx b/src/components/FileHeader/FileHeader.tsx index 7396c8b..18f1642 100644 --- a/src/components/FileHeader/FileHeader.tsx +++ b/src/components/FileHeader/FileHeader.tsx @@ -260,7 +260,7 @@ export default function FileHeader() { return ( ); diff --git a/src/components/NTHeader/NTHeader.tsx b/src/components/NTHeader/NTHeader.tsx index e7b4f32..849f6b1 100644 --- a/src/components/NTHeader/NTHeader.tsx +++ b/src/components/NTHeader/NTHeader.tsx @@ -57,7 +57,7 @@ export default function NTHeader() { return ( diff --git a/src/components/OptionalHeader/OptionalHeader.tsx b/src/components/OptionalHeader/OptionalHeader.tsx index 5da07e1..8de07a9 100644 --- a/src/components/OptionalHeader/OptionalHeader.tsx +++ b/src/components/OptionalHeader/OptionalHeader.tsx @@ -530,7 +530,7 @@ export default function OptionalHeader() { return ( );