首页 > 其他分享 >Android Base

Android Base

时间:2024-10-16 22:59:43浏览次数:1  
标签:文件 string Base 偏移 处理器 Android 函数

四大组件

Activity:面向用户应用组件或者用户操作可视化界面,基于Activity基类,底层由ActivityManager统一管理,也负责处理应用内或应用间发送的Intent消息
Broadcast Receiver:接受并过滤广播信息的组件,应用想显示的接收广播信息,需在Manifest清单文件中注册一个receiver,用Intent filter过滤特定类型的广播信息/应用内通过registerReceiver在运行时动态注册
Service:通常用于处理后台耗时逻辑,用户不直接与Service对应的应用进程交互,通过IPC机制接收和发送Intent。使用Service必须在Manifest清单注册,Service可以通过Intent进行启动,停止,绑定。
Content Provider:应用程序间数据共享的组件。

APK文件结构

目录名 文件 解释
mainfest.mf 清单文件
meta-inf目录 cert.rsa 应用签名文件
cert.sf 资源列表及对应的SHA-1签名
armeabi 所有ARM处理器相关文件
armeabi-v7a ARMv7及以上处理器相关文件
lib目录 arm64-v8a 所有ARMv8处理器下的arm64相关文件
(又称库目录) x86 所有x86处理器相关文件
x86_64 所有x86_64处理器相关文件
mips MIPS处理器相关文件
res目录 没有编译至resources.arsc中的其他资源文件
assets目录 能通过AssetManager访问访问到的资源文件
AndroidManifest.xml Android组件清单文件,包括应用名称,版本,权限等信息,以二进制XML文件格式存储,通过apktool,AXMLPrinter2等工具转换成XML明文格式
classes.dex Android运行时可执行文件
resources.arsc 包含编译好的部分资源文件

Dex文件格式

Dex文件包含该可执行文件所有Java代码

hearder部分包含文件大小,校验码,各数据类型表的偏移和大小等数据
string表:每一表项都指向一个string数据偏移。string数据由两部分组成,起始位置为uleb128算法编码的变长string长度,后面紧跟string具体数据,由'\0'结尾
type表:存储各type在string表中的索引
proto表:每项包含3个元素,分别为函数原型简写,返回类型索引,参数偏移,参数偏移处第一个元素类型为uint,表示参数个数
field表:每个表项用3个元素描述一个变量,分别为该变量所属的类,该变量所属类型和该函数名字
method表:每个表项用3个元素描述一个函数,分别为该函数所属类,该函数原型和该函数名
class表:每个表项用8个元素来描述一个函数,分别为类名,类属性access flag,父类偏移,接口偏移,源文件索引,类注释,类数据偏移,静态变量偏移
maps表:保存上述各表大小和起始偏移,系统能够通过该表快速定位到各表

Java代码演示

Android编程语言由Java,在2017年5月修改为Kotlin,Android入口函数为onCreat函数,
AndroidMainfest.xml文件包括该应用的入口,权限,可接受参数,最低支持API版本和编译使用API版本

public class MainActivity extends ActionBarActivity{
    /** Called when the activity is first created. */
    public void onCreat(Bundle savedInstanceState){
        super.onCreat(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i("CTF","Hello world Android");
    }
}

AndroidMainfest.xml

<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package = "com.ctf.test">
        <user-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <user-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
        <application
            android:allowBackup = "true"
            android:icon = "@mipmap/ic_launcher"
            android:label = "@string/app_name"
            android:supportRtl = "true"
            android:theme = "@style/AppTheme">
        <activity android:name = ".MainActivity">
            <intent-filter>
                <action android:name = "android.intent.action.MAIN" />
                <category android:name = "android.intent.category.LAUNCHER" />
            <intent-filter>
        </activity>
    </application>
</manifest>

标签:文件,string,Base,偏移,处理器,Android,函数
From: https://www.cnblogs.com/N1ng/p/18471123

相关文章

  • Android 音频采集/音频播放【AudioTrack、AudioRecord】
    项目中遇到需求,采集音频上传至公司编译的sdk内,播放sdk传递过来的音频,所以自行实现了一个采集音频与播放音频的方法代码:importandroid.Manifestimportandroid.app.Activityimportandroid.content.pm.PackageManagerimportandroid.media.AudioFormatimportandroid.me......
  • 2024最新最强保活方案,支持android14
    2024年最强Android保活方案分享!区别于常规一像素等方案,本方案即使用户点击强制停止也无法杀死应用,它是基于文件锁、ptrace等黑科技保活技术,直达Android保活尽头。实现App永生。耗电低,不占用CPU,保活持续时间理论上不卸载可达永久。杀不死。安装app后无需打开进程自动启动手机......
  • 百词斩CTO:核心学习记录库上云,存储空间节省80%,运维效率提升|OceanBase DB大咖说 (十四)
    OceanBase《DB大咖说》第14期,我们邀请到了百词斩的首席技术官敬宓作为嘉宾。百词斩是一款专为英语学习设计的“图背单词”应用,满足不同年龄段和英语水平的用户需求,旨在让单词记忆变得有趣。敬宓是一位资深的技术专家,曾在百度、迅雷等公司任职,对分布式架构、数据库等领域......
  • 【PYTHON】图片和base64互转实践
    目录1导入依赖2image_to_base643base64_to_image1导入依赖importbase64fromPILimportImageimportio2image_to_base64defimage_to_base64(image_path):"""将图片文件转换成Base64编码的字符串:paramimage_path:图片文件的路径:retu......
  • basectf
    misc哇!珍德食泥鸭(wordxml隐写)题目是一个动图binwalk可以解压出很多东西通过打开文件发现里面的doucment.xml知道这个压缩包是docx文件,改名后进去发现这个图片其实没什么,我们可以发现这个文档特别长,但是往下拉啥都没有,这时候可以全选然后点击清除格式,拉到最后发现flagB......
  • Android开发滑动悬停效果
    Android开发滑动悬停效果Android开发滑动悬停效果,有点难度,但源码中我已经加入相应注释,你只要修改布局即可。很常见的需求一、思路:自定义悬停控件LetterStickyNavLayout,它是继承LinearLayout二、效果图:看视频更直观点:Android开发教程实战案例源码分享-滑动悬停效......
  • 在 Android 开发中,如何实现蓝牙连接设备?
    在Android开发中,实现蓝牙连接设备通常通过BluetoothAdapter、BluetoothDevice、BluetoothSocket等类来实现。你可以使用这些API来搜索蓝牙设备、配对设备以及通过蓝牙进行通信。以下是实现蓝牙连接设备的详细步骤,包含设备扫描、连接以及数据传输的Java代码示例。1.......
  • Android Studio开发系统APK(引入framework.jar及系统签名)
    在开发过程中,我们需要开发一些功能的独立APK,当然某些简单的功能可以依附于Settings或SystemUI等系统有源码的APK,但是一些逻辑功能较为复杂的APK用AndroidStudio开发就比较的好一点。一、新建项目新建如MyDemo一定要选择EmptyViewsActivity,只有这个才是干净的用java/ko......
  • 论文阅读-AI meets Database- AI4DB and DB4AI
    论文标题:AIMeetsDatabase:AI4DBandDB4AI作者:李国良(清华),XuanheZhou,LeiCao关键词:综述,AI4DB,DB4AI论文发布时间:2021摘要数据库和人工智能是可以相互促进的。一方面,AI可以可以让数据库更智能(AI4DB)。传统的数据库优化技术(例如代价估计、连接顺序选择、旋钮调优、索引和......
  • android开发修复第三方库生成的so库名称不是以so结尾的解决方法
    需要ubuntu安装patchelf软件:sudoapt-getinstallpatchelf1.先使用readelf-d查看so内容结构先使用readelf-dlibpsl.so.5.3.5查看libpsl.so.5.3.5库类型是NEEDED和SONAME的对应的名称是不是以.so结尾的,比如下面的图,libc.so的名称是以.so结尾的我们就不用管,libpsl.so.5不......