iOS逆向基础

准备
  • 一台越狱iOS设备
    可通过爱思助手,内部集成了unc0ver越狱工具,目前支持iOS11.0~iOS14.3的非完美越狱,需要使用6.1.2版本,6.2.0版本会提示越狱失败。
  • mac 安装程序
    爱思助手:越狱
    iFunBox:可访问或管理iOS设备文件系统(需要iOS越狱设备安装Apple File Conduit和AppSync)
  • iOS越狱设备安装程序
    Apple File Conduit:激活所有路径访问权限
    AppSync:关闭签名,可向iOS设备文件系统传输文件
    Filza File:可访问或管理iOS设备文件系统
    OpenSSH:远程传输协议工具
    usbmuxd:usbmuxd 是苹果的一个服务,这个服务主要用于在USB协议上实现多路TCP连接,将USB通信抽象为TCP通信。苹果的iTunes、Xcode,都直接或间接地用到了这个服务。(https://cgit.sukimashita.com/usbmuxd.git/
    Cycript:Cycript是由Cydia创始人Saurik推出的一款脚本语言,Cycript混合了Objective-C++、ES6(JavaScript)、Java等语法的混合物,可以用来探索、修改、调试正在运行的Mac\iOS APP。cycript的原理是动态库注入,它能够Hook正在运行的进程。
Cycript 逆向微信实战
  1. 找到下载的usbmuxd内部的python脚本tcprelay.py,并执行。
python tcprelay.py -t 22(openSSH端口号):目的端口号

Terminal输出:

sanweiguoye@sanweiguoyedeMacBook-Pro python-client % python tcprelay.py -t 22:2345
Forwarding local port 2345 to remote port 22 (正在转发本地2345端口到22端口)
  1. 通过openSSH登录iOS设备
ssh root@192.168.6.67 (通过局域网ip地址连接,延迟高)
ssh root@localhost -p 2345 (usbmuxd转发端口)

执行ps -A可查看当前设备正在执行的所有进程,通过grep参数筛选出微信进程。

iPad:~ root# ps -A|grep WeChat
10251 ??         0:25.67 /var/containers/Bundle/Application/D3A7DE37-EF05-4552-8E9C-0876C387B670/WeChat.app/WeChat
11242 ttys000    0:00.03 grep WeChat
  1. cycript注入微信
cycript -p WeChat
或
cycript -p 10251

李明杰老师提供了一系列cycript语言封装的函数,方便用于动态调试正在运行的App。
https://github.com/CoderMJLee/mjcript

通过scp执行或者iFunBox将mjcript.cy文件放到usr/lib/cycript0.9目录。
导入mjcript文件:

@import mjcript

cycript常见指令:

cy# MJFrontVc()
#"<WCAccountMainLoginViewController: 0x1450d9400>"
cy# UIApp
#"<UIApplication: 0x143e20650>"
cy# UIApp.delegate
#"<MicroMessengerAppDelegate: 0x2819e4dc0>"
cy# #0x2819e4dc0.window
#"<iConsoleWindow: 0x143f100f0; baseClass = UIWindow; frame = (0 0; 1024 768); gestureRecognizers = <NSArray: 0x2826a70c0>; layer = <UIWindowLayer: 0x282cdc800>>"
cy# MJInstanceMethodNames(#0x1450d9400)
[&"WCBaseInfoItemBeginEdit:",&"WCBaseInfoItemEndEdit:",&"WCBaseInfoItemPressReturnKey:",&"WCBaseInfoItemEditChanged:",&"setupWithData:",&"signMethod",&"onSignMethodSwitch:",&"setSignMethod:",&"onNext",&"vcResignFirstResponder",&"findCountryCode",&"showCountryCodePickerView",&"showCountryCode",&"checkNextBtnEnable",&"CountryCodePickerDidPickCountryCode:",&"useGrayBackgroundColor",&"userDidClickBack",&"userDidClickMore",&"showFooterViewWithSwitchBtnTitle:loginBtnTitle:",&"onSwitch",&"initMoreView",&"onBothDeviceClicked",&"getSignMethod",&"showPhoneLoginFooter",&"showUserLoginFooter",&"switchToUserLogin",&"showOtherMethodPageSheet",&"switchToPhoneLogin",&"bShowPhoneLoginViewFirst",&"setBShowPhoneLoginViewFirst:",&"init",&"didReceiveMemoryWarning",&"setDelegate:",&"viewDidLoad",&".cxx_destruct",&"dealloc",&"initTableView"]
cy# var app = UIApp.keyWindow
#"<iConsoleWindow: 0x143e79390; baseClass = UIWindow; frame = (0 0; 1024 768); gestureRecognizers = <NSArray: 0x2826222e0>; layer = <UIWindowLayer: 0x282c918a0>>"
cy# app.rootViewController
#"<MMUINavigationController: 0x1450c6a00> ChildViewControllers:(\n    \"<WCAccountMainLoginViewController: 0x1450d9400>\"\n)"
cy# choose(UILabel)  // 获取当前进程所有UILabel类型的实例对象(cycript自带函数)
[#"<MMUILabel: 0x143f4dca0; baseClass = UILabel; frame = (0 0; 0 36); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x2808ee670>>",#"<CTRichTextView: 0x143fa1b40; baseClass = UILabel; frame = (20 116; 464 33); opaque = NO; layer = <_UILabelLayer: 0x2808f2260>>",#"<CTRichTextView: 0x143fbcf80; baseClass = UILabel; frame = (20 116; 464 33); opaque = NO; layer = <_UILabelLayer: 0x2808f19f0>>",#"<MMUILabel: 0x143e57cc0; baseClass = UILabel; frame = (0 0; 0 36); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x2808b2ee0>>",#"<MMUILabel: 0x143e8ded0; baseClass = UILabel; frame = (0 0; 122 52); text = '\xe5\xb8\x90\xe5\x8f\xb7'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x2808d73e0>>",#"<MMUILabel: 0x143e9b120; baseClass = UILabel; frame = (0 0; 122 52); text = '\xe5\xaf\x86\xe7\xa0\x81'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x2808d6800>>",#"<MMUILabel: 0x143eea2f0; baseClass = UILabel; frame = (0 0; 122 52); text = '\xe5\x9b\xbd\xe5\xae\xb6/\xe5\x9c\xb0\xe5\x8c\xba'; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x2808f3ac0>>",#"<MMUILabel: 0x146204720; baseClass = UILabel; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x2808c3700>>"]

cycript 还可动态向方法添加代码,实时添加视图或修改属性,比如常见的去广告功能。

Reveal

准备:
Reveal免费版:https://mac.orsoon.com/Mac/150671.html
Reveal2Loader:安装完成后在设置中打开允许调试的App。
将Mac中Reveal库同步到/Library/Frameworks/RHRevealLoader,保持两端Reveal库版本一致。

顺利连接会出现以下图标,点击即可查看或修改视图结构。



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容