improve html layout

This commit is contained in:
Jean-Marie 'Histausse' Mineau 2026-02-11 15:50:55 +01:00
parent 4eae524e5f
commit b79d6151ce
Signed by: histausse
GPG key ID: B66AEEDA9B645AD2
2 changed files with 24 additions and 6 deletions

View file

@ -62,7 +62,7 @@ impl DexFile {
)); ));
} }
current_line.push(format!( current_line.push(format!(
"<td class=\"{}\">{:02x}</td>", "<td id=\"cell_{i:08x}\" class=\"{}\">{:02x}</td>",
classes.join(" "), classes.join(" "),
raw[i as usize] raw[i as usize]
)); ));
@ -80,6 +80,7 @@ impl DexFile {
let table = lines.join("\n"); let table = lines.join("\n");
let mut chunk_style_lines = vec![]; let mut chunk_style_lines = vec![];
let mut data_lines = vec![]; let mut data_lines = vec![];
let mut unreferenced_lines = vec![];
for (off, size, dscr) in &self.layout_map { for (off, size, dscr) in &self.layout_map {
let classname = format!("chunk_{off}_{size}"); let classname = format!("chunk_{off}_{size}");
chunk_style_lines.push(format!( chunk_style_lines.push(format!(
@ -89,11 +90,27 @@ impl DexFile {
"html:has(.{classname}:hover) .dscr_{classname} {{ display: block; }}" "html:has(.{classname}:hover) .dscr_{classname} {{ display: block; }}"
)); ));
data_lines.push(format!( data_lines.push(format!(
"<pre class=\"dex_dscr dscr_{classname}\"><code>{dscr}</code></pre>" "<pre class=\"dex_dscr dscr_{classname}\"><code>0x{off:08x}: {dscr}</code></pre>"
)) ));
if dscr == "Unreferenced Data" {
unreferenced_lines.push(format!(
"<li><a href=\"#cell_{off:08x}\">offset: 0x{off:08x}, size: 0x{size:x}</a></li>"
));
}
} }
let chunk_style = chunk_style_lines.join("\n "); let chunk_style = chunk_style_lines.join("\n ");
let data = data_lines.join("\n "); let data = data_lines.join("\n ");
let unreferenced = unreferenced_lines.join("\n ");
let unreferenced = if !unreferenced_lines.empty() {
format!(
"<h3>Unreferenced Data:</h3>
<ul>
{unreferenced}
</ul>"
)
} else {
"".into()
};
format!( format!(
"<html> "<html>
@ -105,6 +122,7 @@ impl DexFile {
</style> </style>
</head> </head>
<body> <body>
{unreferenced}
<table class=\"hex_table\"> <table class=\"hex_table\">
{table} {table}
</table> </table>

View file

@ -71,7 +71,7 @@ impl<'a> DexFileReader<'a> {
.expect("Failed to acquire mutex lock on layout_map") .expect("Failed to acquire mutex lock on layout_map")
.insert( .insert(
(0, tmp_file.header.size()), (0, tmp_file.header.size()),
format!("{:x?}", tmp_file.header), format!("{:#x?}", tmp_file.header),
); );
if tmp_file.header.map_off != 0 { if tmp_file.header.map_off != 0 {
tmp_file.map_list = tmp_file.get_struct_at_offset(tmp_file.header.map_off)?; tmp_file.map_list = tmp_file.get_struct_at_offset(tmp_file.header.map_off)?;
@ -433,7 +433,7 @@ impl<'a> DexFileReader<'a> {
.lock() .lock()
.expect("Failed to acquire mutex lock on layout_map") .expect("Failed to acquire mutex lock on layout_map")
.entry((pos as u32, size)) .entry((pos as u32, size))
.or_insert_with(|| format!("{item:x?}")); .or_insert_with(|| format!("{item:#x?}"));
} }
} }
Ok(list) Ok(list)
@ -479,7 +479,7 @@ impl<'a> DexFileReader<'a> {
.lock() .lock()
.expect("Failed to acquire mutex lock on layout_map") .expect("Failed to acquire mutex lock on layout_map")
.entry((offset, size)) .entry((offset, size))
.or_insert_with(|| format!("{r:x?}")); .or_insert_with(|| format!("{r:#x?}"));
} }
r r
} }