iOS逆向学习四:符号表还原

本文的部分理论支持,节选自这里:iOS符号表恢复

前言

符号表历来是逆向工程中的“必争之地”,而iOS应用在上线前要裁去符号表,以避免被逆向分析。

这些可以通过配置xcode的编译选项来达到效果。具体操作请看这:Xcode中和symbols有关的几个设置

Xcode显示调用堆栈中符号时,只会显示符号表中有的符号。为了我们调试过程的顺利,我们有必要把可执行文件中的符号表恢复回来。

先来看一眼无符号表和有符号表的可执行文件调试区别:
无符号表
有符号表
符号表有多好用,一目了然。

什么是符号表?

我们要恢复符号表,首先要知道符号表是什么,他是怎么存在于 Mach-O 文件中的?由于这块涉及到的知识较多,还原符号表的作者讲解的很好,所以希望大家认真研究一下这篇文章。对 就是开篇提到的链接。

这里是:项目开源地址
工具的配置和使用说明,也在作者的博客中。

有了这些工具,再回过头来研究一下,为什么我们在第二篇文章中重写了doSearch方法,却没有生效的原因。

doSearch打断点的时候,showLoading函数已经被执行了,但我们点击搜索没有反应,所以应该是后面调用了stopLoading函数。这个函数正好在FindContactSearchViewCellInfo类里实现了(在class-dump导出的头文件里看到的)。所以我们就大胆尝试一下,通过br -n "[FindContactSearchViewCellInfo stopLoading]"命令,断点该函数。
再次在输入框输入0921,bingo,断点执行了。

从函数堆栈调用顺序(图片出了点问题,就不贴图了,后面我会附上其他app的函数调用栈效果截图),我们可以看到doSearch之后,执行了另一个函数:
- (void)MessageReturn:(id)arg1 Event:(unsigned int)arg2
该函数也是FindContactSearchViewCellInfo类中的。
移步IDA工具,看该函数实现:
在这里插入图片描述
惊不惊喜,怪不得重写了网络请求的创建,依然搜不到想要的结果。而且我也曾试着重写过wx的getSearchBarText方法,仍然不起作用。
原来是消息回来之后,wx拿searchBar.text 跟 request的请求参数(userName就是)做了比对,最终丢掉了这次的请求包。最后又stopLoading了。

我怀疑这是wx来了一个新人,不知道该类有getSearchBarText方法,所以直接自己手动取值了。导致正常的微信用起来会有一个bug:点击搜索的瞬间,删除一位搜索框的内容。loading就停不下了。

哦对了,附上别人的符号表还原效果图:
在这里插入图片描述
我们断点到stopLoading以后,也是这种效果。

至此,调试三方app就跟调试自己的app一样了。

这篇可能有点烂尾,实在是符号表还原的理论知识太多,而且作者讲的我无法超越,只能虚心引用了。

那么,加油吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
稀缺资源 iOS应用逆向工程: 分析与实战是iOS应用逆向工程方面的权威著作,三位作者都是iOS领域内的专家,拥有扎实的理论知识和丰富的实践经验。本书内容以工具+代码的形式全面、系统地展开知识点,由浅入深,图文并茂地带着读者一步步探索常规iOS App之外的世界。 《iOS应用逆向工程:分析与实战》分为大部分,分别是概念、工具、理论和实战。前三部分介绍iOS逆向分析领域的背景、知识体系,以及相应的工具集、理论知识;第部分则通过4个实际案例来将前面的知识以实战的方式展开。第一部分为概念篇,简单介绍iOS逆向分析的概念以及iOS平台系统架构。第二部分为工具篇,介绍一系列基于Mac和iOS平台的配套工具,并且重点讲解其中的class-dump、Theos、Reveal、IDA、GDB等5个工具的使用方法,前3个侧重于使用,后2个侧重于分析。第三部分为理论篇,主要讲述iOS逆向/越狱方向的进阶必备理论知识。第部分为实战篇,通过对3个App Store App及1个系统App进行逆向分析的实战操作,让读者能够了解并同步实践已掌握的知识。 iOS应用逆向工程:分析与实战 目录: 推荐序一 推荐序二 自序 前言 第一部分 概念篇 第1 章  iOS 逆向工程简介 2 1.1  iOS 软件逆向工程的要求 2 1.2  iOS 软件逆向工程的作用 2 1.2.1  与安全相关的iOS 逆向工程 4 1.2.2  与开发相关的iOS 逆向工程 5 1.3  iOS 软件逆向工程的一般过程 6 1.3.1  系统分析 7 1.3.2  代码分析 7 1.4  iOS 软件逆向工程用到的工具 8 1.4.1  监测工具 8 1.4.2  开发工具 9 1.4.3  反编译器 9 1.4.4  调试器 10 1.5  小结 11 第2 章 越狱iOS 平台简介 12 2.1  iOS 系统架构 12 2.1.1  iOS 目录结构 13 2.1.2  iOS 文件权限 15 2.2  iOS 程序类型 16 2.2.1  Application 16 2.2.2  Dynamic Library 19 2.2.3  Daemon 19 2.3  小结 20 第二部分 工具篇 第3 章 Mac 工具集 22 3.1  class-dump 22 3.1.1  class-dump 介绍及下载 22 3.1.2  class-dump 使用演示 23 3.1.3  关于class-dump 的补充说明 25 3.2  Theos 25 3.2.1  Theos 简介 25 3.2.2  Theos 安装及编译 26 3.2.3  Theos 用法简介 28 3.2.4  Theos 开发tweak 示例 47 3.3  Reveal 49 3.3.1  Reveal 简介 49 3.3.2  Reveal 安装及功能扩展 50 3.4  IDA 55 3.4.1  IDA 简介 55 3.4.2  IDA 使用说明 56 3.4.3  IDA 分析示例 65 3.5  其他工具 68 3.5.1  iTools 68 3.5.2  dyld_decache 69 3.5.3  MesaSQLite 69 3.6  小结 70 第4 章 iOS 工具集 71 4.1  SBSettings 71 4.2  MobileSubstrate 72 4.3  OpenSSH 73 4.4  GDB 74 4.4.1  GDB 简介 74 4.4.2  GDB 的使用说明 74 4.5  Cycript 85 4.6  其他常用工具 88 4.6.1  BigBoss RecommendedTools 88 4.6.2  AppCrackr 88 4.6.3  iFile 89 4.6.4  MobileTerminal 89 4.6.5  Vi IMproved 90 4.6.6  SQLite 90 4.6.7  top 91 4.6.8  syslogd 92 4.7  小结 92 第三部分 理论篇 第5 章  Objective-C 相关的iOS逆向理论基础 94 5.1  tweak 的作用原理 94 5.1.1  Objective-C 语言的特性 94 5.1.2  MobileSubstrate 96 5.2  tweak 的编写套路 97 5.2.1  灵感的来源 98 5.2.2  分析文件,寻找切入点 99 5.2.3  定位目标函数 102 5.2.4  测试函数功

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值