【Android 逆向】函数拦截 ( GOT 表拦截 与 插桩拦截 | 插桩拦截简介 | 插桩拦截涉及的 ARM 和 x86 中的跳转指令 )

简介: 【Android 逆向】函数拦截 ( GOT 表拦截 与 插桩拦截 | 插桩拦截简介 | 插桩拦截涉及的 ARM 和 x86 中的跳转指令 )

文章目录

一、GOT 表拦截与插桩拦截

二、插桩拦截简介

三、插桩拦截涉及的 ARM 和 x86 中的跳转指令





一、GOT 表拦截与插桩拦截


函数拦截有 2 22 种方式 :


使用 GOT 表进行函数拦截 : 修改 GOT 表实现函数拦截 ;

插桩拦截 : 该方法就是 在实际被调用的函数中添加跳转代码实现函数拦截 ;

在 【Android 逆向】函数拦截原理 ( 通过修改 GOT 全局偏移表拦截函数 | 通过在实际被调用的函数中添加跳转代码实现函数拦截 ) 博客中分析到 , " 使用 GOT 表进行函数拦截 " 方法不能保证 100% 成功 , 插桩拦截 可以实现 100% 拦截成功率 ;



" 插桩拦截 " 由于需要 修改代码 , 可能会 被反调试工具发现 , 如果是游戏 , 账号估计就凉了 ; 反调试工具 不可能监控所有的函数 , 一个应用的函数个数都是以万进行计算的 ;






二、插桩拦截简介


插桩拦截 : 在要 调用的实际函数 的入口处 , 写入跳转代码 , 跳转到 我们自定义的 拦截函数中 , 在拦截函数中 , 执行 处理函数 , 处理函数再次调用实际函数 或 自己执行一些其它函数 ;



image.png





三、插桩拦截涉及的 ARM 和 x86 中的跳转指令


插桩拦截 时 , 在 实际函数 入口处写入的 跳转代码 就是 汇编中的 跳转指令 ;


跳转指令 可以理解为 " 指令 " 或 " 机器码 " , 指令是人看到的 汇编指令 , 机器码是给 CPU 执行的 二进制机器码 ; 二者是等效的 ;



x86 架构下的跳转指令 : 下面的二进制数都是十六进制数 ; 32 3232 位指令 ;


E9 00 00 00 00 , JMP target ;


JMP 是强制跳转指令 , E9 是对应的机器码 ;



ARM 架构下的跳转指令 : 下面的二进制数都是十六进制数 ; 32 3232 位指令 ;


04 F0 1F E5 00 00 00 00 , B target ;


B 指令是无条件跳转指令 , 04 F0 1F E5 是对应的机器码 ;



x86 架构是 复杂指令集 , ARM 架构是 精简指令集 , 从上面的机器码可以看出区别 , x86 架构中指令有 1 11 字节 , ARM 架构中 指令只有 4 44 字节 ;


目录
相关文章
|
11月前
|
存储 机器学习/深度学习 数据库
阿里云服务器X86/ARM/GPU/裸金属/超算五大架构技术特点、场景适配参考
在云计算技术飞速发展的当下,云计算已经渗透到各个行业,成为企业数字化转型的关键驱动力。选择合适的云服务器架构对于提升业务效率、降低成本至关重要。阿里云提供了多样化的云服务器架构选择,包括X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器以及高性能计算等。本文将深入解析这些架构的特点、优势及适用场景,以供大家了解和选择参考。
1444 61
|
9月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
592 11
|
9月前
|
人工智能 Android开发 iOS开发
安卓版快捷指令,加了AI语音可以一句话操作v0.2.7
Shortcuts for Android(SFA)是一款安卓自动化工具,支持语音创建快捷指令,实现听歌、导航、发消息等操作。操作简单,提升效率,快来体验语音控制的便捷!
1165 0
安卓版快捷指令,加了AI语音可以一句话操作v0.2.7
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
6750 4
|
12月前
|
存储 机器学习/深度学习 算法
阿里云X86/ARM/GPU/裸金属/超算等五大服务器架构技术特点、场景适配与选型策略
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、高性能计算可选,有的用户并不清楚他们之间有何区别。本文将深入解析这些架构的特点、优势及适用场景,帮助用户更好地根据实际需求做出选择。
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器ECS架构区别及选择参考:X86计算、ARM计算等架构介绍
在我们选购阿里云服务器的时候,云服务器架构有X86计算、ARM计算、GPU/FPGA/ASIC、弹性裸金属服务器、高性能计算可选,有的用户并不清楚他们之间有何区别,本文主要简单介绍下这些架构各自的主要性能及适用场景,以便大家了解不同类型的架构有何不同,主要特点及适用场景有哪些。
1978 10
|
机器学习/深度学习 弹性计算 人工智能
阿里云服务器架构有啥区别?X86计算、Arm、GPU异构、裸金属和高性能计算对比
阿里云ECS涵盖x86、ARM、GPU/FPGA/ASIC、弹性裸金属及高性能计算等多种架构。x86架构采用Intel/AMD处理器,适用于广泛企业级应用;ARM架构低功耗,适合容器与微服务;GPU/FPGA/ASIC专为AI、图形处理设计;弹性裸金属提供物理机性能;高性能计算则针对大规模并行计算优化。
1200 7
|
程序员 开发工具 Android开发
Android|WebView 禁止长按,限制非白名单域名的跳转层级
如何限制 WebView 仅域名白名单网址能随意跳转,并禁用长按选择文字。
414 2
|
Docker 容器
docker:记录如何在x86架构上构造和使用arm架构的镜像
为了实现国产化适配,需将原x86平台上的Docker镜像转换为适用于ARM平台的镜像。本文介绍了如何配置Docker buildx环境,包括检查Docker版本、安装buildx插件、启用实验性功能及构建多平台镜像的具体步骤。通过这些操作,可以在x86平台上成功构建并运行ARM64镜像,实现跨平台的应用部署。
11349 3
|
存储 移动开发 C语言
【ARM汇编速成】零基础入门汇编语言之指令集(三)
【ARM汇编速成】零基础入门汇编语言之指令集(三)
528 2

热门文章

最新文章

下一篇
开通oss服务