iOS逆向(三)-逆向的基本思路和cycript的使用演示

Cycript工具介绍

  • Cycript是一款脚本语言,可以看作是Objective-JavaScript,它可以帮助我们轻松测试和验证函数效果。
    • 在越狱手机中可以通过注入方式在第三方应用中运行
    • 也可以用静态库的方式把cycript集成到自己的应用中(MonkeyDev,可以给非越狱iOS第三方App写插件,但是权限受沙盒限制)
  • 在越狱手机中安装Cycript
    • 方式一:在Cydia上搜索Cycript进行安装
    • 方式二:使用 APT 0.6 Transitional包管理工具,SSH登录iPhone设备,输入安装Cycript命令:$apt-get install cycript
  • Cycript使用(注入到第三方进程空间)
    • 注入Cycript模块到第三方进程
/** 确认进程名或者PID */
iPhone6Test0:~ root# ps -e | grep WeChat
654 ??         0:06.94    /var/containers/Bundle/Application/D28A1C43-2F50-435D-AD0E-DDB14992D63B/WeChat.app/WeChat
1527 ttys001    0:00.01 grep WeChat

/** 打开方式 1*/
cycript -p WeChat
/** 打开方式2  勾住进程id */
cycript -p 654

/** 退出cycript */
Control + D
  • Cycript实战演练
    对微信app界面进行修改 输入代码后回车 即可注入
/** 显示通知个数 */
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:100] 
/** 隐藏状态栏 */
 [[UIApplication sharedApplication] setStatusBarHidden:YES]

对手机界面进行修改

查看SpringBoard 进行信息
$ ps -e | grep SpringBoard
  298 ??         1:54.86 /System/Library/CoreServices/SpringBoard.app/SpringBoard
 1601 ttys001    0:00.01 grep SpringBoard
勾住SpringBoard
iPhone6Test0:~ root# cycript -p SpringBoard

/** 屏幕闪紫色光 */
[[SBScreenFlash mainScreenFlasher] flashColor:[UIColor magentaColor] withCompletion:nil] 

iOS应用(Store App)沙盒目录

  • Application Bundle包含应用可执行文件和资源文件
如何获取iOS上微信程序的Bundle路径 :$ps -e | grep appname
如上面的微信,前提是你需要先下载app解压获取app包名
iPhone6Test0:~ root# ps -e | grep WeChat
654 ??         0:06.94    /var/containers/Bundle/Application/D28A1C43-2F50-435D-AD0E-DDB14992D63B/WeChat.app/WeChat
1527 ttys001    0:00.01 grep WeChat
  • Application Data 包含App运行生产的数据和配置信息等
如何获取iOS上微信程序的Data路径,同样可以通过cycript工具
iPhone6Test0:~ root# cycript -p WeChat
cy# directory = NSHomeDirectory()
@"/var/mobile/Containers/Data/Application/E9232D81-80E3-4684-BB0E-FC3643703947"

查看Data目录结构

iPhone6Test0:~ root# cd /var/mobile/Containers/Data/Application/E9232D81-80E3-4684-BB0E-FC3643703947
iPhone6Test0:/var/mobile/Containers/Data/Application/E9232D81-80E3-4684-BB0E-FC3643703947 root# ls
Documents  Library  StoreKit  tmp

==:)Document 存放应用运行时生成的并且需要保存的数据。注:iTunes或iCloud同步设备时会备份该目录

==:)Library/Caches 存放应用运行时生成的并且需要保存的数据。iTunes或iCloud不同步。

==:)Library/Preferences 存放偏好设置。iOS的偏好设置(settings)应用也会在该目录查找应用的设置信息。NSUserDefaults保存在该目录下。iTunes或iCloud同步设备时备份该目录。

==:)tmp 存放应用运行时所需的临时数据。当某个应用没运行时,iOS系统可能会清除该目录下的文件。但不可依赖这种自动清除机制,应该及时手动清除。

逆向的基本思路

  • 正向工程(Forward Engineering)
    抽象的逻辑设计 ==》具体的物理实现
    设计概念和算法 ==》编写源代码 ==》编译成二进制机器码
    将想法和设计理念变成具体实现的过程

  • 逆向工程(Reverse Engineering)
    具体的物理实现 ==》抽象的逻辑设计
    反编译机器码 ==》汇编代码(类似的高级语言代码)==》理解其算法和设计概念
    从二进制码中提取设计概念和算法

  • 程序的编译和反编译
    高级语言(C/C++/OC/Java/Python/C#)==》中间语言(如:汇编等)==》目标代码(exe/lib/dll/sys/dylib等二进制文件)
    高级语言 ===》(编译链接)===》机器码
    高级语言 《===( 反汇编/反编译)《===机器码

  • 逆向的思路

    • 逆向必须是有目的的、有针对性的(明确你要做的事情)
    • 先熟悉你要逆向的目标程序,从正向的思路去猜测他的可能的实现方法(使用的框架、调用的系统API等)
    • 定位关键代码
      • 通过监控UI事件的响应定位关键代码
      • 通过监控底层API的调用定位关键代码(如网络访问接口、文件读写接口等)
      • 通过观察数据的变化来定位关键代码和地址

逆向是一个试错的过程,需要不停的猜测、查找和进行验证,既考验耐心也考验动手能力

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

推荐阅读更多精彩内容

  • [TOC] ==iOS逆向环境介绍== *** 越狱环境:iphone5s iOS 8.3*** 1.Drawin...
    锦鲤跃龙阅读 1,384评论 2 2
  • 如果你看完书中的所有例子,你很可能已经做完你的实验和在已经越狱的iPhone上的研究。因为和许多人一样,几乎所有的...
    fishmai0阅读 15,946评论 2 42
  • iOS安全攻与防 本地数据攻与防 https UIWebview 第三方sdk与xcode 反编译与代码混淆 越狱...
    天机否阅读 10,621评论 8 66
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,012评论 25 707
  • 曾想仗剑走天涯,快意恩仇, 闲云野鹤,煮酒林间,一世清梦,人自在; 奈何梦醒落凡尘,世态炎凉, 人世鬼魅,步履匆匆...
    0e9f61dd88f3阅读 209评论 4 2