《九阴真经: iOS黑客攻防秘籍》新书发布,干货满满,快来看看吧!

iOS 安全论坛 - 专注于研究 iOS 安全

 找回密码
 立即注册
查看: 199|回复: 3

【分享】通过自己的学习,在iOS8+上通过代码连接到...

[复制链接]

5

主题

11

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2019-10-15 23:47:57 | 显示全部楼层 |阅读模式
本帖最后由 zkh11123 于 2019-10-15 23:49 编辑

WiFiNetwork *network = [[[WiFiNetwork alloc]init] initWithWirelessDict:[[NSDictionary alloc]init]];
[network setName: @"your sid"];
[network setPassword: @"your password"];
[[WiFiManager sharedInstance]joinNetwork:network];

这段代码 可以连接到指定的WiFi。

思路:
(1)最初的现象是:在设置打开WiFi连接,输入密码后,点击加入,就能连接WiFi。
(2)通过cycript 定位到”加入“按钮。打印出它的 action 为:joinButtonClicked:
(3)ida打开 PreferencesBundles/AirPortSetting.反编译,找到这个方法。看代码,一直跟踪,最终到了 WiFiManager 的joinNetwork:方法。
(4)通过lldb在joinNetwork:的函数起始位置下断点。查看到 $r2的类型为:WiFiNetwork。
(5)再返回ida查看这个入参的来源。来源在APOtherNetworkController._network查看这个 controller的 初始化方法。
(6)初始化方法为:[[[WiFiNetwork alloc]init] initWithWirelessDict:[[NSDictionary alloc]init]];
(7)通过ida调试得到 WiFiNetwork 对应的WiFi名称字段为name 密码字段为:password。
(8)class-dump PreferencesBundles/AirPortSetting. 得到 WiFiNetwork.h 证明了字段的存在,找到这两个字段的 set方法。然后赋值。
(9)最后调用[[WiFiManager sharedInstance]joinNetwork:network]; 完成了连接WiFi。

特意分享给大家。
在学习逆向的过程中,刚开始看ida的汇编,完全是一脸闷逼。lldb都不敢去尝试使用。但是慢慢的接触了tweak学习了《九阴真经》《iOS应用逆向编程》 之后,写一些有趣的东西,
根据书上的代码,慢慢的读了之后,回头再来看ida,感觉思路非常的清晰。
当想要做一个什么事情的时候,先从现象开始,然后分析内部如何运行。通过ida看看执行流程。lldb确定执行过程。找到最终我们想要的结果。分析出一个内部私有方法,可能需要看好多好多代码。调试好多次。最后在成功做出来之后,一种满满的成就感就油然而生,我们一定会享受着这种感觉-------一种进步的感觉。


回复

使用道具 举报

8

主题

37

帖子

155

积分

注册会员

Rank: 2

积分
155
发表于 2019-10-16 00:24:41 | 显示全部楼层
顶楼主!想问一下楼主分析的是系统设置(Preferences)吗?还有WiFiNetwork是在哪个Framework里?
回复

使用道具 举报

86

主题

262

帖子

1049

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1049
发表于 2019-10-16 12:52:20 | 显示全部楼层
唯有逆向探索未知的秘密。感谢分享!
回复

使用道具 举报

3

主题

21

帖子

81

积分

注册会员

Rank: 2

积分
81
发表于 2019-10-16 14:15:48 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|iOSHacker

GMT+8, 2019-11-15 10:17 , Processed in 0.046888 second(s), 19 queries .

iOS安全论坛

© 2017-2019 iOS Hacker Inc.

快速回复 返回顶部 返回列表