android linker入口

bionic linker代码分析(1) - linker自举 研究bionic是两年前做symbol hook时,分析了linker解析ELF文件的相关代码;去年底Android 7发布之后,为了解决dlopen系统目录下动态库的限制,研究了系统库访问权限的相关代码,彻底把linker自举和加载动态库的流程理清楚。 阅读详情

Android Linker Entry

通过实际编译的库文件,来反推linker entry

app进程入口

众所周知,androidapp进程,都是通过zygote fork出来的,而zygote进程的exec文件为(64位系统):app_process64
aosp编译出的系统,通过readelf查看app_process64program headers可见:

xuwakao@chiefhsing-PC:~/android-11.0.0_r29/out/target/product/crosshatch$ ~/Android/Sdk/ndk/20.0.5594570/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/aarch64-linux-android/bin/readelf -l ./system/bin/app_process64

Elf file type is DYN (Shared object file)
Entry point 0x3000
There are 12 program headers, starting at offset 64

Program Headers:
  Type           Offset 
第九章 Android 原生程序动态调试(三)(使用 IDA Pro 调试 Android 原生程序) 文章目录使用 IDA Pro 调试 Android 原生程序 使用 IDA Pro 调试 Android 原生程序 和 gdb、lldb 一样,用 IDA 调试原生程序时也要在设备上通过调试服务端进行远程连接。IDA 的 dbdsrv 目录存放着所有远程调试服务端程序: 目前 IDA 支持调试 x86、x86-64、ARM、ARM64 四种类型的 Android 原生程序。android... 阅读详情

相关推荐

android inker和Exe加载 : linker_main函数解释

Linker和Exe加载 : linker_main函数解释 linker main执行的任务前,在linker重定位,libc初始化,主线程初始化等一些列操作完成后,进程的用户空间已经具备动态链接的能力,开始可以动态链接exe相关的依赖了。 linker main源码 static ElfW(Addr) linker_main(KernelArgumentBlock& args, const char* exe_to_load) { ProtectedDataGuard guard; #if

chiefhsing的专栏 620

[RK3568 Android12] Linux 解释器ld-linux-aarch64.so.1 && /system/bin/linker

此时可以看出已经不在报告:/system/bin/sh: 错误了。此时想想,此文件是怎么编译而来,我这边使用的是aarch64-poky-linux- 来编译的。在设置了:export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH 之后,aplay可以正常运行。从上面的信息可以知道:此二进制文件的解释器使用的是:/lib/ld-linux-aarch64.so.1。用的解析器是:/system/bin/linker。5:设置库搜索路径LD_LIBRARY_PATH。

OpenWrt/WLAN/驱动/Android/嵌入式开发总结 1692

Android稳定性系列8 Native crash处理流程

一 Native Crash 从系统全局来说,Crash分为Framework/App Crash, Native Crash,以及Kernel Crash。 对于framework层或者app层的Crash(即Java层面Crash),那么往往是通过抛出未捕获异常而导致的Crash,这个内容在本文的姊妹篇理解Android Crash处理流程已详细介绍过。 至于Kernel Crash,很多情况是发生Kernel panic,对于内核崩溃往往是驱动或者硬件出现故障。 Native Crash,即C/C+

liuwg1226的专栏 1750

运行程序报错 system/bin/linker: No such file or direct

使用CLion写了一个测试程序, cmake 编译完成后 , ./test 运行程序报错system/bin/linker: No such file or direct。

x995630736的博客 621

so文件相关

上图可以看到plt节是作为一个中转的跳转(在跳转过程中存在一些首次运行got中函数问题,这里不做深入探讨),这样在so文件加载时可大幅减少启动时间,类似于Android7.0以后的运行时编译机制,官方翻译为plt的延迟绑定机制。程序加载so时,会将got表中的函数地址与全局变量全部回填到汇编代码中,如果程序启动只是需要用到该so中的小部分函数,这样会大大增加启动时间,plt节因此被创造。got:全局变量和函数地址表,用于处理全局变量和函数调用的地址解析。plt:函数调用表,用于处理动态链接中的函数调用。

jinganggiao的博客 589

Android O发生crash,提示/system/bin/linker64(备忘)

错误提示: 2010-01-01 08:24:29.913 20251-20251/com.anwsdk.service W/linker: library "libsqlite.so" ("/system/lib64/libsqlite.so") needed or dlopened by "/data/app/com.anwsdk.service-fxMKx2QTE5_p3zxuHHTxEA==/lib/arm64/libanwbtdatabase.so" is not accessible for

sui1005316018的博客 2587

android linker加载

linkerandroid的加载器和连接器,同时也是其自身的加载器。bionic/linker/arch/arm64/begin.S29#include <private/bionic_asm.h>3031ENTRY(_start)32  mov x0, sp33  bl __linker_init3435  /* linker init returns the _entry add...

zkuili的博客 2441

android linker自举

Android Linker Bootstrap linker作为动态链接器,但本身也是一个共享库,那么它由谁来链接? 1. linker自举 linker的链接是由它本身完成的,称为自举(bootstrap)。 linker不能依赖其他共享库,其内部的全局和静态变量等的relocation必须由其自身完成。 2. 自举实现 linker入口函数,即为其自举执行的入口,即_start: ENTRY(_start) // Force unwinds to end in this function.

chiefhsing的专栏 689

理解Native Crash处理流程

本文是基于Android 7.0源码,来分析Native Crash流程。 转自 http://gityuan.com/2016/06/25/android-native-crash/ 一、Native Crash 从系统全局来说,Crash分为Framework/App Crash, Native Crash,以及Kernel Crash。 对于framework层或者app层的Cr

明潮的BLOG 7039

Android Native 程序逆向入门(一)—— Native 程序的启动流程

八月的太阳晒得黄黄的,谁说这世界不是黄金?小雀儿在树荫里打盹,孩子们在草地里打滚。八月的太阳晒得黄黄的,谁说这世界不是黄金?金黄的树林,金黄的草地,小雀们合奏着欢畅的清音:金黄的茅舍,金黄的麦屯,金黄是老农们的笑声。 ——徐志摩·八月的太阳 ilocker:关注 Android 安全(新手) QQ: 2597294287 在生成 native 程序时,在链接阶段会传入一个链接脚本,在该脚本中...

weixin_30687587的博客 381

Android虚拟机章节——1.3.2 ELF的加载和动态链接过程

android 虚拟机 ELF 动态链接 原理

林学森的技术专栏 2491

从ELF嵌套到DEX解密:深度拆解某商业加固方案的三层防御体系

本文深度剖析了一款商业Android应用加固方案的三层防御体系。通过逆向工程,详细拆解了其从Java层StubApp引导、Native层ELF嵌套加载与自实现Linker,到最终DEX多阶段解密的完整流程分析,揭示了其对抗静态与动态分析的核心技术原理。

food6的博客 491

基于linker实现so加壳补充从dex中加载so

基于linker实现so加壳技术(补充) 总述 之前的文章给大家展示了一个so文件加壳的整体方法,而且给了一个比较简单的例子,后来我实现了一下将so写在dex中然后通过hook关键函数的方式得到so的地址。但是在实际使用过程中我发现了一个问题,就是有些got表中的变量,通过plt调用使用了页对其指令,这就要求我们的so必须在一块对其的内存上,如下图,并且inline hook也好难实现,而且dex是以只读的方式加载到内存中的,我还需要hook掉关键函数改掉它的属性,基于这三个问题,写了这篇补充 1:so地址

大数据安全技术学习 1089

android 编译bin文件,android – “/ system / bin / linker:没有这样的文件或目录”错误尝试编译TensorFlow...

我正在尝试为运行the building script的Android编译te​​nsorflow-lite,但构建过程因此错误而停止:/system/bin/linker: No such file or directory我可以理解构建过程是如何工作的(compilation + linking)但我无法弄清楚为什么需要这个’/ system / bin / linker’.此链接器不存在于S...

weixin_33470084的博客 1217

android linker 浅析

  Android 的加载/链接器linker 主要用于实现共享库的加载与链接。它支持应用程序对库函数的隐式和显式调用。对于隐式调用,应用程序的编译与静态库大致相同,只是在静态链接的时候通过--dynamic-linker /system/bin/linker 指定动态链接器,(该信息将被存放在ELF文件的.interp节中,内核执行目标映像文件前将通过该信息加载并运行相应的解释器程序linke

dinuliang的专栏 3万+

android】静态链接器/加载器(ld) 动态加载器(/system/bin/linker)+动态加载接口(dlopen)

android linker 浅析  Android动态连接器linker与静态连接器ld

tuhuolong的专栏 3627

Android ART VM可执行文件格式-ELF(二)

ART虚拟机,通过dex2oat将dex预编译成机器码的oat文件,是基于linux中的可执行文件格式ELF所做的扩展。ELF(Executable and Linkable Format)的处理流程:它至少支持三种文件形态:可重定向文件(Relocatable File),可执行文件(Executable File),可共享的对象文件(Shared Object File)。Relocatabl...

lin20080410的专栏 1214

基于linker实现so加壳技术下

《基于linker实现so加壳技术基础》下篇 获得linker维护的本so的soinfo 但是问题又来了如何获得当前so的soinfo指针的基址呢?翻阅网上的资料说可以dlopen打开self,我看了一下那是安卓7之前的方法安卓8.1不支持了(555这不是坑人嘛咋搞),于是我阅读安卓源码发现了获得soinfo的方法,这是一套组合拳,可以先dlopen自己然后再用soinfo_from_handle函数来把handle转换成soinfo,正当我性高彩烈的打开ida查看它的symble的时候,发现没有这个函数,

大数据安全技术学习 855
上一篇: dex字节码介绍和二进制译码分析
下一篇: android linker自举
malihom
博客等级 码龄16年 10粉丝 47原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值