手机端so反编译
⑴ Android如何调用反编译得到的so
反编译不可以,反汇编可以,这个网络一下你就知道了。反汇编,这没点功力肯定不行的。
如果你改不了这个so文件,要调用此so文件。那么你必须按之前工程的包名、类名、方法名来调用,也就是方法路径必须与原来的一致,因为如果不一致,native方法就不可用了,找不到。
⑵ Android/Linux so动态库分析和反编译
开发环境的搭建涉及友善smart-210开发板作为平台。在进行so动态库文件头分析时,需明确其本质为ELF文件,且利用Elf32_Ehdr结构体定义ELF32头文件。将armeabi-v7a类型的so动态库文件放置于Linux系统路径中,然后在Linux终端进入文件目录,执行"readelf -h xxxx.so"命令,以查看文件头部信息。
文件头部信息包括Magic/e_ident[]用于标识ELF目标文件,Class标记文件类型为32位ELF格式,Data指示数据组织格式为小端格式,Version为当前文件头版本号1。OS/ABI描述操作系统类,ABI Version为ABI版本号0。Type/e_type指明文件类型,这里是共享库(Shared Library)。Machine/e_machine显示机器平台类型为ARM类型,Version/e_version为当前目标文件版本号0x01。Entry point address/e_entry表示程序入口地址,Stars of program headers/e_phoff记录程序头表文件偏移,Stars of section headers/e_shoff记录节区头文件偏移。Flasgs/e_flags为处理器相关标识,Size of this header/e_ehsize表示ELF头文件大小,Size of program headers/e_phentsize表示程序头表头目大小。Number of program headers/e_phnum表示程序头表条目数量,Size of section headers/shentsize表示节区头表条目大小,Number of section headers/e_shnum为节区头表条目数量。节区头字符表索引/e_shstrndx。
程序头表通过Elf32_Phdr结构体描述,此表为数组,数组元素存储程序头表条目,描述段或其它信息以准备程序运行。文件段包含多个节区,程序头表仅在可执行文件或共享对象文件中有意义。
反编译so动态库方法采用IDA软件。首先解压安装包,安装时注意避免中文路径,随后根据ReadMe文档获取密钥。安装完成后,打开软件并点击“GO”按钮,拖拽so动态库文件至工作区,点击“OK”按钮等待反编译完成。反编译后,工作区显示包含机器码的Hex View-1窗口、汇编代码的IDA View-A窗口以及保存函数名的Function window窗口。通过双击函数名定位到对应函数的汇编代码。使用Ctrl+F搜索特定函数名,双击函数名查看汇编代码,按下F5即可转换为C代码。