文章目录

  • 背景
    • 定位思路
    • 定位技巧
    • 定位实践
    • 系统库分析
    • 参考

背景

本文主要通过分享一些静态分析定位关键函数的技巧,实际上逆向分析本质上就是在寻找关键点,因此有好的关键定位方法则能事半功倍

定位思路

  1. 通过Log分析找到关键词
  2. 通过弹框分析定位关键定

定位技巧

从某个按钮触发逻辑,怎么从该链路找到具体实现的逻辑?

  • 调试定位?
  • 字符串定位
  • 函数名类名定位
  • 通过监控UI事件的响应定位关键代码 ?
  • 通过监控底层API的调用定位关键代码(如网络访问接口、文件读写接口等)?
  • 通过观察数据的变化来定位关键代码和地址?

定位实践

  1. 利用Frida-Dump-Ui,分析UI控件类型
  2. 利用UI控件类型分析一些函数,如初始化,显示等
  3. Hook之后 打印调用栈即可定位到
    附录 dump-ui.js
//Credit: http://blog.itselectlab.com/?p=10485
console.warn("[*] Started: Dumping UI")
if (ObjC.available)
{var current_window = ObjC.classes.UIWindow.keyWindow()console.log(current_window.recursiveDescription().toString());
}
else
{console.log("Objective-C Runtime is not available!");
}
console.warn("[*] Completed: Dumping UI")

系统库分析

  1. 无符号系统库位置
    /Users/xxx/Library/Developer/Xcode/iOS DeviceSupport/14.0.1 (18A393)/Symbols/System/Library/Frameworks
  2. 系统库头文件位置 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreML.framework/Headers
  3. 有符号模拟器系统库位置 (推荐✅)
    /System/Volumes/Data/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/CoreML.framework/CoreML
  • 背景
        有时候在分析某个 crash 时,或者对某个系统功能感兴趣时,会需要分析特定版本的 iOS 系统库的实现,例如UIKit.framework Foundiation.framework。可以在iOS-System-Symbols下载对应的系统库。
        真机的系统库和模拟器的有些差别。系统库在真机上经过了很多编译优化,去除了大部分私有的函数符号,交叉引用也不像模拟器版本的那样直接。真机上的所有系统 framework 都被整合成了一个大文件,名为dyld_shared_cache_arm64或者dyld_shared_cache_armv7。函数在寻址时,是基于整个dyld_shared_cache_xxx文件进行寻址的。
        当你把真机连接到 Xcode,Xcode 会把真机上的系统库拷贝到~/Library/Developer/Xcode/iOS DeviceSupport,从dyld_shared_cache_xxx中切分出每个单独的 framework。但是当你反编译这些 framework 时,会发现代码里会使用很多无效地址的函数指针,难以分析。这是因为在dyld_shared_cache_xxx中,一个 framework 引用另一个 framework 中的函数时,是相当于在一个库中直接引用的,直接跳转到对应的地址,而不是再用函数符号经过 lazy binder 进行调用。当 framework 从dyld_shared_cache_xxx中切分出来后,这些函数调用的地址就会指向 framework 外,无法追踪。
        所以在分析真机的系统库时,最好是配合模拟器版本的系统库辅助分析,可以看到私有的符号,也可以看到更明确的交叉引用。或者用 IDA 直接分析整个 dyld_shared_cache_xxx文件,不过这样做需要反汇编整个文件,耗时很大。

参考

iOS逆向之给腾讯视频App添加快进手势
iOS逆向指南:静态分析-黑超熊猫zuik

IOS逆向-静态分析相关推荐

  1. android微信逆向工程,iOS逆向 - 微信自动添加好友

    相关源码:Github地址 一.前言 本篇主要实现在微信上自动添加好友,从而熟悉 iOS 逆向分析的过程. 二. 工具 2.1 MacBook 软件 制作 Tweak 的工具 端口转发,可以让我们通过 ...

  2. iOS逆向-微信自动添加好友

    前言 上次完成了 macOS 版微信小助手,现在终于有(xian)时(de)间(huang)来说说 iOS 逆向了.本篇主要实现在微信上自动添加好友(即自动验证新的朋友申请),从而熟悉 iOS 逆向分 ...

  3. iOS逆向实战与工具使用(微信添加好友自动确认)

    iOS逆向实战与工具使用(微信添加好友自动确认) 原文链接 源码地址 WeChatPlugin-iOS Mac OS 版微信小助手(远程控制.消息防撤回.自动回复.微信多开) 一.前言 本篇主要实现在 ...

  4. iOS逆向(1)——利用ipa重签名,3分钟iPhone安装多个微信

    本文要达成如图效果,在一台iPhone上安装第二个微信: 准备: Xcode 微信ipa(可通过iTool进行下载) 重签名脚本 步骤 打开Xcode,新建Single View App项目,名字可以 ...

  5. android r 编译找不到头文件_「投稿」iOS逆向——砸壳与反编译

    作者:疯狂的蛋神 近来对iOS逆向十分感兴趣,就在业余时间里自己在上网找了各种资料学习,发现许多资料对于一些细节描述的不够详细,所以也踩了很多坑,我也将自己踩的一些坑总结出来,希望对大家有所帮助. 注 ...

  6. iOS逆向之自动化重签名

    iOS逆向之自动化重签名 准备工作 非越狱的iPhone手机 用PP助手下载: 微信6.6.5(越狱应用) 步骤 新建工程"自动化签名",在工程目录下新建APP文件夹放置需要重签名 ...

  7. iOS 逆向 - 收藏集 - 掘金

    分分钟让你在 微信运动 霸占榜首 - iOS - 掘金 为了纪念我失去的已越狱iPad, 不得不写点什么. 所以...以下内容 不需要越狱. 微信运动 6万步是什么概念,我不知道,因为我没走过,不过有 ...

  8. IOS 逆向开发(一)密码学 非对称加密RSA

    IOS 逆向开发(一)密码学 RSA 1. 密码学发展简介 2. 非对称加密RSA产生过程 3. RSA 数学原理 3.1 离散对数问题 3.1.1 原根 3.2 欧拉函数Φ 3.3 欧拉定理 3.4 ...

  9. IOS逆向(1)IOS越狱

    前段时间学习完JS逆向后,准备入门IOS逆向了.打算写在博客中记录下学习的过程,也会把踩过的坑记录下来让大家一起交流学习.JS逆向相关的基础网上比比皆是,后续会分享一些关于JS逆向相关的项目,就不从基 ...

  10. 【iOS逆向与安全】iOS插件开发光速入门

    前言 经过之前的学习,相信你已经能熟练的使用Frida-trace.IDA Pro等逆向工具.不过,仅仅到这肯定是不够的.接下来,学会把你逆向的结果打包成插件并运行,那iOS逆向,你也就真正的入门了. ...

最新文章

  1. 第六章:内核数据结构
  2. 项目开发中常用JS表单取值方法
  3. 如何用SAP Cloud for Customer的手机App创建销售订单
  4. leetcode31. 下一个排列
  5. 用div代替textarea,实现在文本框中使用回车br和设置字体功能
  6. Python解释器配置设置
  7. 学生体温打卡系统Java+MySQL
  8. MMORPG开发之七日创世说(二)
  9. 互联网12个创业派系500强,你认识多少?
  10. 小米扫地机器人漏灰_#原创新人#一次失败的改装:MI 小米 扫地机器人 改装湿拖功能...
  11. 【沃顿商学院学习笔记】宏观经济学——09欧元区Euro Zone
  12. Something about ...
  13. mysql insert on duplicate_一条Insert on duplicate引发的血案
  14. php怎么给视频加水印,视频怎么加水印 添加文字水印和图片水印 给视频加水印的软件...
  15. 项目的成功标准如何衡量?【一杯咖啡谈项目】
  16. 每日一结(11.1)
  17. 2021年中国棘轮手柄市场趋势报告、技术动态创新及2027年市场预测
  18. 配置软路由-同时连接内网和外网
  19. 四足机器人champ项目和高程图构建elevation_mapping联合使用(Ubuntu18.04)
  20. 南大科院大数据Hadoop工程实训

热门文章

  1. ad7606中文资料_AD7606-6 pdf,AD7606-6中文资料,AD7606-6应用电路-华秋商城
  2. 条件数、奇异值与海森矩阵
  3. 用于热水器行业气密性检测的五款快速密封接头
  4. 作曲大师2019破解版|作曲大师音乐梦想家2019破解版下载 v2019.9(附安装破解图文教程)
  5. VMware虚拟机中大小写不停切换的问题
  6. (机器学习)绘制PR曲线
  7. 数据结构 将两个有序的链表合并为一个新链表
  8. 中兴交换机8912E配置
  9. LVDS接口定义详解
  10. android集成华为push 6003错误,以及华为低版本crash问题