diff --git a/patcher/Cargo.lock b/patcher/Cargo.lock index 157bfe2..63e65d5 100644 --- a/patcher/Cargo.lock +++ b/patcher/Cargo.lock @@ -35,6 +35,7 @@ dependencies = [ [[package]] name = "androscalpel" version = "0.1.0" +source = "git+ssh://git@git.mineau.eu/histausse/androscalpel.git?rev=610347554d7e46a9213f45b09b76ba7e2bce201b#610347554d7e46a9213f45b09b76ba7e2bce201b" dependencies = [ "adler", "androscalpel_serializer", @@ -50,6 +51,7 @@ dependencies = [ [[package]] name = "androscalpel_serializer" version = "0.1.0" +source = "git+ssh://git@git.mineau.eu/histausse/androscalpel.git?rev=610347554d7e46a9213f45b09b76ba7e2bce201b#610347554d7e46a9213f45b09b76ba7e2bce201b" dependencies = [ "androscalpel_serializer_derive", "log", @@ -58,6 +60,7 @@ dependencies = [ [[package]] name = "androscalpel_serializer_derive" version = "0.1.0" +source = "git+ssh://git@git.mineau.eu/histausse/androscalpel.git?rev=610347554d7e46a9213f45b09b76ba7e2bce201b#610347554d7e46a9213f45b09b76ba7e2bce201b" dependencies = [ "proc-macro2", "quote", @@ -126,6 +129,7 @@ dependencies = [ [[package]] name = "apk_frauder" version = "0.1.0" +source = "git+ssh://git@git.mineau.eu/histausse/androscalpel.git?rev=610347554d7e46a9213f45b09b76ba7e2bce201b#610347554d7e46a9213f45b09b76ba7e2bce201b" dependencies = [ "androscalpel_serializer", "flate2", diff --git a/patcher/Cargo.toml b/patcher/Cargo.toml index af4829f..6a12040 100644 --- a/patcher/Cargo.toml +++ b/patcher/Cargo.toml @@ -6,8 +6,8 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -androscalpel = { git = "ssh://git@git.mineau.eu/histausse/androscalpel.git", rev = "ff2d630", features = ["code-analysis"] } -apk_frauder = { git = "ssh://git@git.mineau.eu/histausse/androscalpel.git", rev = "ff2d630"} +androscalpel = { git = "ssh://git@git.mineau.eu/histausse/androscalpel.git", rev = "610347554d7e46a9213f45b09b76ba7e2bce201b", features = ["code-analysis"] } +apk_frauder = { git = "ssh://git@git.mineau.eu/histausse/androscalpel.git", rev = "610347554d7e46a9213f45b09b76ba7e2bce201b"} anyhow = { version = "1.0.95", features = ["backtrace"] } clap = { version = "4.5.27", features = ["derive"] } env_logger = "0.11.6" diff --git a/patcher/src/lib.rs b/patcher/src/lib.rs index 5ad7596..dc73901 100644 --- a/patcher/src/lib.rs +++ b/patcher/src/lib.rs @@ -657,13 +657,7 @@ pub fn labeling(_mth: &IdMethod, ins: &Instruction, addr: usize) -> Option { - if addr == 0 { - Some(format!("DEBUG_{addr:08X}")) - } else { - None - } - } + _ => None, } } @@ -869,6 +863,7 @@ pub fn transform_method(meth: &mut Method, ref_data: &ReflectionData) -> Result< } } } + let ins_size = code.ins_size(meth); let code = meth .code .as_mut() @@ -880,37 +875,37 @@ pub fn transform_method(meth: &mut Method, ref_data: &ReflectionData) -> Result< if !meth.is_static { // Non static method take 'this' as first argument code.insns.push(Instruction::MoveObject { - from: code.registers_size - code.ins_size + i + register_info.get_nb_added_reg(), - to: code.registers_size - code.ins_size + i, + from: code.registers_size - ins_size + i + register_info.get_nb_added_reg(), + to: code.registers_size - ins_size + i, }); i += 1; } for arg in &meth.descriptor.proto.get_parameters() { if arg.is_class() || arg.is_array() { code.insns.push(Instruction::MoveObject { - from: code.registers_size - code.ins_size + i + register_info.get_nb_added_reg(), - to: code.registers_size - code.ins_size + i, + from: code.registers_size - ins_size + i + register_info.get_nb_added_reg(), + to: code.registers_size - ins_size + i, }); i += 1; } else if arg.is_long() || arg.is_double() { code.insns.push(Instruction::MoveWide { - from: code.registers_size - code.ins_size + i + register_info.get_nb_added_reg(), - to: code.registers_size - code.ins_size + i, + from: code.registers_size - ins_size + i + register_info.get_nb_added_reg(), + to: code.registers_size - ins_size + i, }); i += 2; } else { code.insns.push(Instruction::Move { - from: code.registers_size - code.ins_size + i + register_info.get_nb_added_reg(), - to: code.registers_size - code.ins_size + i, + from: code.registers_size - ins_size + i + register_info.get_nb_added_reg(), + to: code.registers_size - ins_size + i, }); i += 1; } } - if i != code.ins_size { + if i != ins_size { warn!( "Method {} argument do not match code ins_size ({})", meth.descriptor.__str__(), - code.ins_size + ins_size ); } // Add the new code