《ANDROID 逆向专题》在android中运行 elf程序

Android平台ELF文件格式简单介绍 命令输出的信息中包含“Section to Segment mapping”项数据,该项信息代表了section到segment的映射关键,例如:标号为2的Load段包含了: “.fini_array”、“.init_array”、“.dynamic”、 “.got”、“.data”、“.bss”六个节信息。上图中标为蓝色的数据为ELF文件头二进制内存数据,最右边可明显看出有“ELF”字符串,读者也许已猜到数据对应ELF文件标志,即判断是否为ELF文件表示。 阅读详情

我们已经知道,android的底层是linux。本质上,其实android就是一个经过特殊裁剪处理的linux系统,裁剪是为了让我们有限的移动端硬件能够更好地运行这个linux。

相对linux,很多人更加熟悉window。这里我们来做个对比。

                          windows              linux

可执行文件         exe                      elf

静态链接库         .lib                       .a

动态链接库          .dll                     .so

这里说的不太准确,比如windows 下可执行程序不仅仅只有.exe,还有.com、.sys等(这里重点不是这个,杠精请忽略)。虽说在linux中,不像windows那样通过文件后缀来判断文件名,但是依旧是可以使用文件后缀的,而且使用后缀也能帮助我们快速分辨文件类型。

ps:这里插入一个小拓展。原生程序的类型,其实可以大致分为三类。

1、可重定位文件(relocatable file)。通常是.o结尾的目标文件

2、原生可执行文件(executable file)

3、共享的目标文件(shared object file)

 

这里我们注意到,在apk中,经常会出现有so文件,它之所以会执行,也就是因为linux的内核中,so是作为动态链接库或者可执行程序的。也就是说,so还是elf 可执行文件,但是这种情况下,so的后缀一般是不显示的。

这里我们脑洞打开

android 的原生开发,我的理解本质上就是在android 中跑 C/C++ 代码。

因为android 是linux 系统。所以我想的是,换句话说,就是在linux 下跑C/C++ 代码。

如此,我们是否可以把一个linux文件放到我们的android 系统上去运行呢??

瞎搞开始了,我打开我的ubuntu,然后用gedit写了一个hello world

然后,找到压箱底很久的 《C程序设计》,终于按照上面的方法编译得到了可执行文件。而且成功用运行了。

对,就是成功打印出来了 "hello world"

我们使用hex 文件查看器来看看我们生成的hello 文件。可以清楚发现,文件头是有.ELF标记的,也就是hello 确实就是linux下的可执行文件

验证我们想法的时候到了,我们将这个hello 文件上传到android 手机上,让android 来运行它。

安卓SO文件逆向分析:ELF结构解析与动静结合实战 SO文件是Android原生层核心逻辑的载体,本质为遵循System V ABI的ELF格式共享对象。理解其文件头、程序头、节头与.dynamic段结构,是定位函数入口、还原调用约定、突破混淆和实现符号重建的基础。ARM架构下的调用约定(AAPCS)、ASLR基址偏移、GOT/PLT机制及strip后符号缺失等问题,直接决定静态反汇编的可信度;而QEMU-user模拟调试与真机GDB联动,则构成验证数据流、捕获系统调用、闭环逻辑还原的关键路径。本文聚焦安卓SO逆向中的ELF结构穿透、IDA校准、ARM汇编语 阅读详情

相关推荐

ANDROID 逆向专题

今天创建了一个新的android 逆向专题,接下来会不定期整理android 逆向的一些资料,希望我能坚持下去。 主要是记录一下自己的学习过程,分享出来帮助自己回忆。水平不高难免会有一些错误的地方,如果有路过的大佬能指点出来,小弟不胜感激。 因为我的pc是windows ,所以本系列的文章都是基于windows系统的,后面不再说明 《ANDROID 逆向专题》 目录: 预备篇: 逆向前...

lin___的博客 264

简单ctf逆向题

文章目录xctf 逆向 getitxctf 逆向 csaw2013reversing2xctf 逆向 no-strings-attachedbugku 逆向 逆向入门bugku 逆向 游戏过关bugku 安卓逆向 First_Mobile(xman)bugku 安卓逆向 HelloSmali2 xctf 逆向 getit 载入IDA,shfit+F12查找字符串: 得知 s 为c61b68366edeb7bdce3c6820314b7498 t 为 53h+harifCTF{???}: F5查看s和t所

qq_40663734的博客 2804

apk逆向思路_安卓逆向和手游辅助学习路线

一.安卓逆向基础(建议1周)1. 学习安卓逆向第一步必须先把环境搭建好,这是你学习安卓逆向的开始,环境搭建好后表示正式迈入安卓逆向。在环境安装的工程中会遇到很多细节上的问题。2. 第二步就是要了解我们要分析的是什么文件,很多0基础的同学都不知道安卓逆向分析的什么文件。我们要分析的是应用程序或者安装包(就是.apk文件),了解apk是怎么生成的以及如何安装到我们的手机里面,apk是怎么运行的,也是我...

weixin_33146151的博客 2156

【Android 逆向】ELF 文件解析实战:010 Editor 插件 ELF.bt 的配置与使用指南

本文详细介绍了如何在Android逆向分析中配置和使用010 Editor的ELF.bt插件,以高效解析ELF文件结构。通过实战演示,指导读者获取、安装插件,并利用其可视化功能快速分析.so文件的文件头、程序头、节区头及动态符号表等核心信息,是学习Linux/Android底层二进制分析的必备工具指南。

weixin_29234423的博客 683

Android逆向之旅---SO ELF 文件格式详解

Android逆向之旅---SO ELF 文件格式详解

hgfujffg的博客 523

Android so文件解析:从ELF结构到JNI逆向实战

在Android开发与逆向工程中,解析.so动态库是理解Native层逻辑、排查崩溃与合规分析的关键技能。.so文件本质上是ELF格式的共享库,其结构包括文件头、程序头表与节头表,掌握这些基础概念是深入分析的入口。利用readelf、nm等命令行工具,可以快速提取动态符号、依赖关系与关键字符串,为后续的逆向定位提供方向。当需要还原函数逻辑时,IDA Pro与Ghidra等反汇编器则能辅助将机器码转化为可读的伪代码,配合addr2line可将崩溃地址映射为源码行。从JNI静态注册与动态注册的区别,到ARM64

weixin_29164185的博客 701

七自由度机械臂逆运动学实战:从几何简化到KDL库高效求解

本文深入探讨了七自由度机械臂逆运动学求解的实战方法。针对冗余自由度带来的挑战,文章对比了两种核心方案:一是利用任务约束进行几何简化,快速求解特定任务;二是基于DH参数法配置KDL库,实现通用高效的数值迭代求解。文中结合宇树H1机器人实例,详细阐述了从模型解析、参数提取到代码实现与验证的全流程,并提供了几何法与KDL库的适用场景对比与避坑指南。

weixin_29044713的博客 639

用Verilog搭出RISC-V架构单周期CPU

这是笔者学校暑期学期的必修课,难度并不高(仅追求及格的话),但相当耗时,对于在硬件设计方面完全不感冒的同学更是一场避不开的折磨,所以笔者想通过自己的成果和被折磨经验来帮助有此方面需求的同学,或是对于CPU设计有浓厚兴趣的人。

paticita的博客 1万+

Win11/Win10系统下,Proe5.0 M280终极版保姆级安装与激活指南(含SSQ补丁避坑)

本文提供Win11/Win10系统下Pro/E 5.0 M280终极版的详细安装与激活指南,涵盖环境配置、SSQ补丁应用及常见问题解决方案。通过系统调整、分步安装和性能优化,确保软件在现代操作系统上的稳定运行,特别适合机械设计用户参考。

weixin_30895059的博客 444

educoder中Hive综合应用案例 — 用户搜索日志分析

Hive综合应用案例 — 用户搜索日志分析

weixin_46026136的博客 4789

【笔记篇】Davinci Configurator OS模块(下)

AUTOSAR OS的配置项和Vevtor MICROSAR OS的特性

weixin_47571898的博客 1157

QT 实现QStackedWidget切换页面右移动画

首先截取当前界面的图片,渲染到一个QLabel上,然后设置QPropertyAnimation动画,动画的作用对象就是这个QLabel,不断的改变geometry;当动画结束的时候,隐藏并释放这个QLabel。以下是一个QStackedWidget,放了两个QPushButton在上面,点击切换不同的界面。为了方便查看动画特效,设置了每个界面的背景图片。

希望能帮助大家,希望大家多多支持,你们的支持是我前进的动力。 883

Trae 在代码审查场景的 3 大差异化能力:对比 Claude Code、Cursor 与 Codex 实测

揭示代码审查的核心矛盾是上下文断层而非找 Bug,介绍 Trae 通过跨文件符号追踪、意图-实现对齐校验、增量变更影响图谱生成三件事实现上下文校准,并对比其与 Claude Code、Cursor、Codex 在多模块 Java 项目中的实际审查差异

weixin_42525482的博客 152

vscode配置matlab工作环境

前面有两篇文章我们分别讲了在vscode里面如何配置C语言环境和python环境,那两篇文章总体来说比较复杂,当然这篇也有许多有趣的问题。 附上链接: 文章目录matlab简介基本要求code runner插件与matlab相关的插件添加路径小结code runner是否支持更多语言更多选择另一个选择 matlab简介 MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。 MATLAB是ma

Cachel Wood的博客 4541

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 《ANDROID 逆向专题》android 基础及linux指令
下一篇: 【ARM 汇编基础速成7】ARM汇编之栈与函数
lin___
博客等级 码龄12年 23粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值