安卓手游逆向

一、环境安装

1.1、安装Java环境 

1.2、安装SDK环境 

1.3、安装NDK环境 

二、APK

2.1、文件结构

  

2.2、打包流程 

2.3、安装流程

应用安装涉及目录:

system/app ----->系统自带的应用程序,获得adb root权限才能删除。

data/app ------->用户程序安装的目录,安装时把apk文件复制到此目录。

 

data/data -------> 存放应用程序的数据

 

data/dalvik-cache ------>将apk中dex文件安装到dalvik-cache目录下(dex文件是dalvik虚拟机的可执行文件,其大小约为原始apk文件大小的四分之一) 。

安装过程:

复制apk安装包到data/app目录下,解压并扫描安装包,把dex文件保存到dalvik-cache目录,并data/data目录下创建对应的应用数据目录。

三、虚拟机

1、Java虚拟机--->Java字节码 ---->基于栈架构。

2、dalvik虚拟机(jit机制)---->android5.0以下---->dalvik字节码---->基于寄存器架构。

3、art虚拟机(aot机制)---->android5.0以上

注意:

.dex ---->dexopt--->.odex dalvik加载执行的odex文件。

.dex --->dex2oat --->.oat art加载执行的是oat文件。

四、Java逆向知识

4.1、dex文件反汇编工具

.java ---> .class ---->.dex ---->smail。

在这个过程中会使用三种工具

使用dx.jar工具将.class文件打包成.dex文件 

使用baksmail.jar工具将.dex文件反编译成.smail文件

使用smail.jar工具将.smail文件打包成.dex文件。

4.2、dalvik字节码

数据类型对应

dalvik            Java

V ------------->void

Z ------------->boolean           

B ------------->byte          

C ------------->char           

S ------------->short        

I ------------->int

J ------------->long

F------------->float

D------------->double

L------------->java类类型

[------------->数组类型

字段

Lorg/cocos2dx/lua/AppActivity;->handler:Landroid/os/Handler;

   包名                      类名               变量名              类型

方法:                

Lpackage/name/ObjectName;->MethodName(III)Z

Lpackage/name/ObjectName:表示的是当前这个方法所在的类。

L是Java类类型,package/name/是包名,ObjectName是类名MethodName这部分表示的方法名

(III)Z:表示的是方法的签名信息,由方法参数列表(III)和返回值(Z)构成。

(III)表示三个int型参数;Z表示返回值类型为boolean。

4.3、dalvik指令集

基础字节码:名称后缀/字节码后缀 目的寄存器 源寄存“-”这个符号在有的指令里面没有的名称后缀是wide,表示数据宽度为64位,字节码后缀是from16,表示源寄存器为16位。

如move-wide/from16 vAA,VBBBB

move为基础字节码,即opcode、wide为名称后缀,标识指令操作的数据宽度为64位、from16为字节码后缀,标识源为一个16位的寄存器引用变量、vAA为目的寄存器,它始终在源的前面,取值范围为v0~v255 vBBBB为源寄存器,取值范围为v0~v65535。

dalvik指令集中大多数指令用到了寄存器作为目的的操作数或源操作数,其中A/B/C/D/E/F/G/H代表一个4位数值,AA/BB/CC...../GG代表一个8位的数值,A

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VSCode Continue 扩展踩坑记录

Trae 是一款很优秀的 AI 开发工具,但目前支持的平台还较少,比如不支持 Win7,不支持 Linux,为了在这些平台上进行开发,我需要寻找一个替代品。经过网上搜索,选择了 VSCode Continue 扩展,但在使…

Elasticsearch:AI 助理 - 从通才到专才

作者:来自 Elastic Thorben Jndling 在 AI 世界中,关于构建针对特定领域定制的大型语言模型(large language models - LLM)的话题备受关注 —— 不论是为了更好的安全性、上下文理解、专业能力,还是更高的准确率。这个…

【ARM】MDK烧录提示Error:failed to execute‘ ‘

1、 文档目标 解决在烧录程序的时候,因为选择了错误的烧录方式导致下载失败的情况。 2、 问题场景 在烧录程序的时候出现了提示:“Error:failed to execute ’ ”(如图2-1)。检测Target->Debug配置发现没有问题&a…

系统分析师(六)-- 计算机网络

概述 TCP/IP 协议族 DNS DHCP 网络规划与设计 逻辑网络设计 物理网络设计 题目 层次化网络设计 网络冗余设计 综合布线系统 IP地址 网络接入技术 其他网络技术应用 物联网

优化运营、降低成本、提高服务质量的智慧物流开源了

智慧物流视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本可通过边缘计算技术…

从One-Hot到TF-IDF:NLP词向量演进解析与业务实战指南(一)

从One-Hot到TF-IDF:词向量演进之路 开场白: 想象一下,你试图用Excel表格分析《红楼梦》的情感倾向——每个字词都是孤立的单元格,计算机看到的只有冰冷的0和1,而“黛玉葬花”的凄美意境却消失得无影无踪。这就是NLP工…

2. kubernetes操作概览

以下是 Kubernetes 的核心操作概览,涵盖常用命令、资源管理和典型场景的操作流程: 1. 核心操作工具 (1) kubectl 命令行工具 Kubernetes 的所有操作均通过 kubectl 实现,常用命令如下: 操作类型命令示例作用说明查看资源状态ku…

从Ampere到Hopper:GPU架构演进对AI模型训练的颠覆性影响

一、GPU架构演进的底层逻辑 AI大模型训练效率的提升始终与GPU架构的迭代深度绑定。从Ampere到Hopper的演进路径中,英伟达通过‌张量核心升级‌、‌显存架构优化‌、‌计算范式革新‌三大技术路线,将LLM(大语言模型)训练效率提升至…

p2p的发展

PCDN(P2P内容分发网络)行业目前处于快速发展阶段,面临机遇与挑战并存的局面。 一、发展机遇 技术融合推动 边缘计算与5G普及:5G的高带宽、低延迟特性与边缘计算技术结合,显著提升PCDN性能,降低延迟&#x…

计算机视觉与深度学习 | 视觉里程计(Visual Odometry, VO)学习思路总结

视觉里程计(Visual Odometry, VO)学习思路总结 视觉里程计(VO)是通过摄像头捕获的图像序列估计相机运动轨迹的技术,广泛应用于机器人、自动驾驶和增强现实等领域。以下是一个系统的学习路径,涵盖基础理论、核心算法、工具及实践建议:一、基础理论与数学准备 核心数学工具…

Ubuntu 24.04 中文输入法安装

搜狗输入法,在Ubuntu 24.04上使用失败,安装教程如下 https://shurufa.sogou.com/linux/guide 出现问题的情况,是这个帖子里描述的: https://forum.ubuntu.org.cn/viewtopic.php?t493893 后面通过google拼音输入法解决了&#x…

阿里云 MSE Nacos 发布全新“安全防护”模块,简化安全配置,提升数据保护

作者:张文浩 阿里云在其微服务引擎(MSE)注册配置中心 Nacos 上正式推出全新“安全防护”功能模块,旨在帮助企业用户有效管理安全状态和降低开启安全相关功能的学习成本,提升微服务架构的安全性。首期推出的“安全防护…

C#核心(23)StringBuilder

前言 我们先前已经了解了String的一些基本规则和常见的用法,今天就来讲一下和string有所区别的StringBulider。 在 C# 中,StringBuilder 类是一个非常有用的工具,特别是在需要频繁修改字符串时。与 String 类型不同,StringBuilder 类提供了一种动态字符串,可以在不创建新…

活动图与流程图的区别与联系:深入理解两种建模工具

目录 前言1. 活动图概述1.1 活动图的定义1.2 活动图的基本构成要素1.3 活动图的应用场景 2. 流程图概述2.1 流程图的定义2.2 流程图的基本构成要素2.3 流程图的应用场景 3. 活动图与流程图的联系4. 活动图与流程图的区别4.1 所属体系不同4.2 表达能力差异4.3 使用目的与语境4.4…

idea运行springboot项目,运行时不能生成target

1,问题 项目本来运行正常,突然重启项目运行时,提醒主类找不到,发现target未生成 2,解决办法 查看.idea里面的文件,正常是下面这样的 如果有缺失,删除.idea里面的文件,清除idea缓…

【unity游戏开发——Animator动画】Animator动画状态机复用——重写动画控制器 Animator Override Controller

注意:考虑到UGUI的内容比较多,我将UGUI的内容分开,并全部整合放在【unity游戏开发——Animator动画】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 一、状态机复用是什么?二、实战专栏推荐完结 一、状态机复…

山东大学软件学院创新项目实训(11)之springboot+vue项目接入deepseekAPI

因为该阶段是前后端搭建阶段,所以没有进大模型的专项训练,所以先用老师给的deepseek接口进行代替 且因为前端设计部分非本人负责且还没有提交到github上,所以目前只能先编写一个简易的界面进行功能的测试 首先进行创建model类 然后创建Cha…

FreeRTOS入门与工程实践-基于STM32F103(二)(互斥量,事件组,任务通知,软件定时器,中断管理,资源管理,调试与优化)

互斥量 一、互斥量(Mutex):解决多任务 “抢资源” 的问题 1. 是什么? 互斥量是一种 “任务间互斥访问资源” 的工具,本质是一个 只能被锁定(0)或释放(1)的二进制信号量…

软考笔记10——网络与信息安全基础知识

第十章节——网络与信息安全基础知识 网络与信息安全基础知识 第十章节——网络与信息安全基础知识一、网络概述1. 计算机网络概念2. 计算机网络分类3. 网络拓补结构4. ISO/OSI网络体系结构1. ISO/OSI参考模型 二、网络互联硬件1. 网络的设备2. 网络的传输介质 三、网络协议与标…

Tycoon2FA钓鱼工具包发布重大更新,强化反检测能力

钓鱼即服务(PhaaS)平台升级反检测功能 网络安全公司Sekoia于2023年发现的钓鱼工具包Tycoon2FA近期发布重大更新,显著提升了其反检测能力。该工具包现采用多项高级规避技术,包括通过HTML5 canvas实现的自定义验证码、混淆JavaScri…