java_asm_server/
lib.rs

1use crate::impls::apk_load::ApkAccessor;
2use enum_dispatch::enum_dispatch;
3use java_asm::smali::SmaliNode;
4use java_asm::{DescriptorRef, StrRef};
5
6pub mod server;
7
8pub(crate) mod impls;
9pub mod ui;
10
11pub struct AsmServer {
12    pub accessor: AccessorEnum,
13}
14
15#[enum_dispatch]
16pub enum AccessorEnum {
17    Apk(ApkAccessor),
18}
19
20#[enum_dispatch(AccessorEnum)]
21pub trait Accessor {
22    fn read_classes(&self) -> Vec<StrRef>;
23    fn exist_class(&self, class_key: &str) -> bool;
24    fn read_content(&self, class_key: &str) -> Option<SmaliNode>;
25}
26
27pub struct MethodMeta {
28    pub class_key: StrRef,
29    pub name: StrRef,
30    pub descriptor: DescriptorRef,
31}
32
33pub struct FieldMeta {
34    pub class_key: StrRef,
35    pub name: StrRef,
36}
37