博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS逆向工程理论篇续
阅读量:6113 次
发布时间:2019-06-21

本文共 1312 字,大约阅读时间需要 4 分钟。

编写自己的tweak

我们要编写tweak的目标往往是引起我们兴趣的软件, 而这个引起我们兴趣的软件元素一般是: 功能和数据.

  1. 从UI入手, 找出UI函数

    对于App, 我们感兴趣的现象往往体现在UI上, UI展示了函数的执行过程和结果. 如果能拿到UI对象, 那么取到它对应的函数也很简单. 我们称这个函数是UI函数. 这个过程我们一开始可以利用cycript工具. 后面会介绍一个很强大的工具. 这里只是熟悉下cycript的简单使用.

    下面我以微信这个界面为例:

  • 用Cycript注入到目标的进程, 这里以微信的注册界面为例.

  • 查看当前的UI层次结构, 定位到我们要寻找的控件, 这里我们以寻找 下一步 按钮为例.

  • 然后输入如下命令:

    [[UIApp keyWindow] recursiveDescription].toString()复制代码

    UIApp 是[UIApplication sharedApplication] 的简写

    调用这个方法即可打印keyWindow的视图结构:

  • 可以看到每个视图的信息都被展示在 <>里, 其中缩进的多少体现了视图间的关系.缩进少的视图是缩进多视图的父视图 .然后通过#操作符号 + 控件地址, 就可以拿到任意的控件:

  • 通过UI表现上看我们要找的控件有可能是按钮, 所以我们搜索UIButton这个类, 然后利用控件的hidden属性查找目标对象.

由于过程简单所以这里不展示寻找过程, 最后找到目标是 FixTitleColorButton 这个类.

可以看到baseClass是UIButton, 证明我们猜测对了.

  • 下面就开始获取这个按钮的点击方法:

UIControl类提供了actionsForTarget:forControlEvent: 方法获取UIControl的响应方法. 所以只要目标控件是UIControl子类就可以通过这个方法获取响应函数.

可以看到我们的目标控件点击的时候调用这个方法:

[FixTitleColorButton实例 onNext]复制代码

由于在查找目标控件的过程过于麻烦, 所以介绍一个很好用的工具FLEXLoader. 通过Cydia搜索并下载. 然后在设置界面打开它, 并配置可以操作的App.

然后打开目标App就可以看到FLEXLoader工具栏.

可以看到FLEXLoader工作界面很简洁, 具体使用也很简单.

首先点击select, 然后就可以选择我们的控件了.对应的也会显示控件类. 如果我们要找的控件被覆盖, 那么可以通过views查看图层.

可以看到我们要找的FixTitleColorButton被UIImageView覆盖了. 当我们点击FixTitleColorButton后就会看到我们选中的控件.

如果感觉选中的不是目标控件, 那么可以通过move这个功能移动所选控件来查看是不是目标控件. 然后继续循环这个操作来查找到目标控件.

找到了目标控件类, 然后在去通过cycript做具体操作即可.

转载于:https://juejin.im/post/5b30b7baf265da5989593f3b

你可能感兴趣的文章
java~springboot~gradle里的docker集成
查看>>
python装饰器1:函数装饰器详解
查看>>
杭电2054
查看>>
杭电2061
查看>>
IntelliJ IDEA常用快捷键
查看>>
Linux打包下载命令
查看>>
Idea 2018版破解
查看>>
(原創) 为什么GridView的DataSource可指定DataTable,亦可指定DataTable的DefaultView? (高级) (.NET) (ADO.NET)...
查看>>
关于现在手上做的项目的数据库设计思考
查看>>
getaddrinfo的用法
查看>>
Palindrome
查看>>
weixin
查看>>
webstorm 注册码
查看>>
GitLab版本管理
查看>>
swt,jface,rcp
查看>>
iOS之小功能模块--彩虹动画进度条学习和自主封装改进
查看>>
[LeetCode] Strobogrammatic Number II 对称数之二
查看>>
maven pom.xml具体解释(整理)
查看>>
通过Java字节码发现有趣的内幕之String篇(上)(转)
查看>>
第十七章 springboot + devtools(热部署)
查看>>