【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 字节 ;


目录
相关文章
|
23天前
|
Linux Android开发
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
测试程序之提供ioctl函数应用操作GPIO适用于Linux/Android
22 0
|
23天前
|
Android开发
Android Makefile中inherit-product函数和include的区别
Android Makefile中inherit-product函数和include的区别
15 0
|
23天前
|
Android开发
Android构建系统:Android.mk(2)函数详解
Android构建系统:Android.mk(2)函数详解
23 1
|
23天前
|
芯片
ARM hint instruction-WFI(Wait For Interrupt)指令的一些笔记
ARM hint instruction-WFI(Wait For Interrupt)指令的一些笔记
121 0
|
8月前
|
Java 编译器 测试技术
安谋科技(Arm China)刘庆川:借助Arm SIMD指令提升Java应用性能
2023年9月22日,系列课程收官的最后一节《借助Arm SIMD指令提升Java应用性能》正式上线,由安谋科技(Arm China)高级工程师刘庆川主讲,内容涵盖:SIMD 指令及 Java VM介绍、如何在 Java 应用中使用 SIMD 指令、Java Vector API在 倚天上的案例分析。本期节目在阿里云官网、阿里云微信视频号、阿里云钉钉视频号、InfoQ 官网、阿里云开发者微信视频号、阿里云创新中心直播平台 & 微信视频号同步播出,同时可以点击【https://developer.aliyun.com/topic/ecs-yitian】进入【倚天实例迁移课程官网】了解更多内容。
安谋科技(Arm China)刘庆川:借助Arm SIMD指令提升Java应用性能
|
12月前
|
Java Android开发
Java、Android 新建类自动添加头部注释以及如何添加函数注释模板和快捷键
Java、Android 新建类自动添加头部注释以及如何添加函数注释模板和快捷键
|
存储 Java Android开发
|
7天前
|
Android开发 开发者 UED
探索安卓应用开发中的UI设计趋势
随着移动应用市场的不断发展和用户需求的变化,安卓应用的UI设计趋势也在不断演进。本文将深入探讨当前安卓应用开发中的UI设计趋势,包括暗黑模式、原生化设计、动效设计等方面的发展趋势,为开发者提供参考和启发。
|
7天前
|
安全 网络安全 量子技术
网络安全与信息安全:漏洞、加密技术与安全意识的探索安卓应用开发中的内存管理策略
【5月更文挑战第31天】随着互联网的普及,网络安全问题日益严重。本文将深入探讨网络安全漏洞、加密技术以及安全意识等方面的问题,以期提高公众对网络安全的认识和防范能力。
|
7天前
|
机器学习/深度学习 算法 Android开发
安卓应用开发:打造高效通知管理系统
【5月更文挑战第31天】在移动应用的海洋中,用户经常被各种推送通知所困扰。一个精心设计的通知管理系统对于提升用户体验至关重要。本文将探讨如何在安卓平台上开发一个高效的通知管理系统,包括系统设计原则、实现机制以及性能优化策略,旨在为开发者提供一套可行的解决方案,以减少用户干扰并提高应用的用户留存率。