ios逆向工程-静态分析
最近在学习IOS逆向工程,查看网络上的资料也不是太多,边学边总结一下。
首先学习资料:
念茜(大神)的博客: http://nianxi.net
《ios应用逆向工程 分析与实战》
----------------------------------------------------凌乱的分割线------------------------------------------
其次讲讲要用到的工具(ios安装工具使用Cydia中搜索安装,有些需要数据源可以自行查找):
已经越狱的IOS设备:这是必须的
OpenSSH(数据源:http://apt.saurik.com):用于远程登录ssh和文件传输scp
class-dump-z: 用于简单分析出工程中的类名和函数名
IDA:强大的反编译工具
Hopper Disassembler:类似IDA 我比较喜欢,能简单转换成OC的功能
Reveal:UI层解析工具
iFunBox 、 iTools :两个都是强大的ios设备管理工具,越狱后能轻松读取应用文件等功能
----------------------------------------------------凌乱的分割线------------------------------------------
恩,差不多就这么多了!上面的工具大部分都是收费的,不过都是有试用版的,接下来我们一个个分析:
ios设备越狱,这个我就不讲了吧,不过我要赞@盘古团队一个,目前所有ios系统都可以越狱(包括ios8.x)
在ios设备上下载OpenSSH (数据源:http://apt.saurik.com),然后用电脑远程登录ios:
|
1
|
ACA80166:~ yuchenghai$ ssh root@172.168.1.100 |
然后输入密码,@后面是手机的IP号,越狱后默认密码好像是123456.
传输文件的命令是
|
1
2
|
scp gdbinit root@172.168.1.100:/var/rootscp root@172.168.1.100:/var/root/123.txt ~/ |
3. class-dump-z 是一个强大的函数提取工具,非常好用,也是基础工具
下载地址:http://stevenygard.com/projects/class-dump
https://code.google.com/p/networkpx/wiki/class_dump_z
可以发到手机里调用,也可以在电脑上调用,要解析的文件是在应用目录下x.app(里面还有用到的所有文件资源)下面的x(x是你要分析的应用名)以唱吧为例,用ifunbox找到应用进入应用目录就可以看到ktv.app了打开包文件就能找到ktv。
|
1
2
|
$ class-dump-z ktv > ktv.txt //导出所有内容到文件$ class-dump-z -H ktv -o ktvdir/ //导出所有内容目录到文件夹(首先要创建ktvdir文件夹) |
*这里会有一个问题,就是从app store下载的应用解析出来会是乱码,因为应用被加密了。解决办法

去渠道上下应用如同步推、91
解密工具 如AppCrackr(源http://cydia.xsellize.com)、Crackulous、Clutch
class-dump 只能解析出类名和函数名,不能看到具体的实现逻辑。但是很直观
4.IDA和Hopper Disassembler差不多,能看到每个函数的具体逻辑(但是-都是汇编)IDA很强大,能在后面标记的oc的函数名,但是我更喜欢Hopper Disassembler,因为他能简单的模拟出oc源码,但是也是非常简单的。两者按空格键都能显示出分支逻辑来。
汇编非常难看懂,我们需要的是耐心+耐心。后面可以加上动态工具联合分析能更有效

5.Reveal的功能就更强大了,能表明出UI的具体结构来,告诉你每个View的类型是什么,这通常也是我们常用的分析一个app的切入点。
下载地址:http://revealapp.com
下载完后打开reveal在菜单目录中help-show reveal library in finder打开库文件,将两个文件发到手机里

|
1
2
|
scp -r /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/Reveal.framework root@192.168.0.X:/System/Library/Frameworksscp /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib root@192.168.0.X:/Library/MobileSubstrate/DynamicLibraries |
接下来编辑libReveal.plist文件
在/Library/MobileSubstrate/DynamicLibraries/下创建文件libReveal.plist,指定app的Bundle,可以指定多个
|
1
2
3
4
5
|
{ Filter = { Bundles = ("com.changba.ktv"); }; } |
同学们会问了,app 的bundleID怎么查看呢,我们还是用ifunbox工具找到应用目录,在x.app文件夹中会有info.plist文件,打开就能找到。
最后重启设备-打开想分析的应用-电脑打开reveal接口,就可以点击分析了

总结一下吧,分析一个应用的逻辑是这样的:
拿个越狱机-下好工具
去越狱平台下个想分析的应用(或者去app store下,用解密工具解密一下)
导入reveal分析页面,得到想要的知道的具体视图类或者大致范围
分析class-dump中,找到想要的类和函数
在IDA中找到具体函数,查看逻辑
单纯的静态分析只能知道个大概,想知道框架和具体内容还需要动态分析(下面分析)的帮助。不过想知道一个应用用到了什么库,界面是什么结构,有什么图片资源,上面的绝对够用了。总之逆向工程是比较枯燥无味的东西,资料又少,需要的是。。。。。加油
ios逆向工程-静态分析的更多相关文章
- IOS_ios逆向工程-静态分析
返回博客列表 原 ios逆向工程-静态分析 余成海 发布时间: 2014/11/03 19:17 阅读: 11201 收藏: 17 点赞: 5 评论: 6 最近在学习IOS逆向工程,查看网络上的资料也 ...
- iOS逆向工程概述(转)
逆向工程一词,对很多人来说可能很陌生,在android领域,我们经常会听到“反编译某个apk”,那么逆向工程从某种角度讲也包括反编译这项技术,这样一对比,可能我们就更容易理解逆向工程的定义了. 我们引 ...
- iOS逆向工程资料
链接: 基于iOS逆向工程的微信机器人 - 猫友会大讲坛第1期 我的失败与伟大 —— 创业必备的素质(狗神经验谈)
- 我也要学iOS逆向工程--全局变量
大家好!很久不见了.我之前去音乐学院进修爵士吉他去了.现在回来了.之前我一直在学windows开发和逆向.后来到了音乐学院,老师推荐了1个录音软件叫logic prox.可惜啊!当时我只有个索尼的笔记 ...
- iOS逆向工程,(狗神)沙梓社大咖免费技术分享。
序言 简介:本文针对于广大iOS开发者,作为一名开发者,仅仅专注于一门语言可能已经不适用现在的市场需求,曾经因高薪和需求量巨大,而火爆一时的移动端开发者(Android,ios),如今的路却是不再那么 ...
- ios 逆向工程文档汇总
iOS逆向工程工具集 http://www.jianshu.com/p/7f9511d48e05 移动App入侵与逆向破解技术-iOS篇 http://blog.csdn.net/heiby/arti ...
- ios逆向工程
原 ios逆向工程-内部钩子(Method Swizzling) Method+Swizzling ios hook Method Swizzling(方法调配) 怎么说呢,先了解什么是钩子为什么 ...
- IOS 逆向工程之砸壳
在<iOS应用逆向工程>4.6.2节中,我们曾推荐使用iPhoneCake源的AppCrackr 1.7版给App砸壳.这种方式简单粗暴,省时省力,但正是因为它过于方便有木有,导致几乎所有 ...
- ios逆向工程-动态分析
先说说为什么要分析应用吧,如果你想从一个ios应用中获取有用的信息,或者你想修改该应用的一些功能,前提当然是要先知道该app的逻辑和结构了. 动态分享工具比较少,我们先分析个简单的,全民工具Cycri ...
随机推荐
- HTTP-API-DESIGN 怎样设计一个合理的 HTTP API (二)
接上篇 HTTP-API-DESIGN 怎样设计一个合理的 HTTP API (一) 整个 ppt 可以去这里下载. 这一篇主要从服务端应该如何返回合理的返回值的角度,讨论如何设计一个合理的 HTTP ...
- java 枚举的写法
1.第一种形式: public interface PrealertConstants { enum platformCodeEnum{ CAINIAO(1), CLOSED(-5), OFFLINE ...
- 运行UART的程序
1 捎程序的时候,注意,捎入的是norflash,此时的按钮应该在norFlash.2 当捎入成功的时候,开始运行程序时,应该把按钮按回nandflash,因为程序的启动就是在nandflash,他把 ...
- SSM 框架搭建 idea环境
参考: https://www.cnblogs.com/toutou/p/ssm_springmvc.html https://www.cnblogs.com/toutou/p/ssm_springm ...
- 在.net中运用HTMLParser解析网页的原理和方法
本文介绍了.net 版的一个HTMLParser网页解析开源类库(Winista.HTMLParser)的功能特性.工作原理和使用方法.对于使用.net进行Web信息提取的开发人员进行了一次HTMLP ...
- 性能测试TPS目标值确定-二八原则
在性能测试中通常使用二八原则来量化业务需求. 二八原则:指80%的业务量在20%的时间里完成. TPS(QPS)=并发数/响应时间 例:如某个公司1000个员工,在周五下午3点-5点有90%的员工登陆 ...
- [洛谷U62364]三次函数极值
U62364 三次函数极值 题面 给定一个三次函数\(f(x)=a_3x^3+a_2x^2+a_1x+a_0\) 求其极值. 格式 输入包括一行四个整数\(a_3,a_2,a_1,a_0\) 输出包括 ...
- 第八天 1-7 实战:创建一个root无法删除的文件
实战:创建一个root无法删除的文件 简介:Linux文件的最底层(内核级别)属性的查看与修改 命令:lsattr.chattr Linux文件除了具有基本权限rwx,及特殊权限(SUID.SGID. ...
- 关于mybatis mapper.xml中的if判断
场景: 页面上有搜索框进行调节查询,不同搜索框中的内容可以为空. 过程: 点击搜索,前端把参数传给后台,这是后台要把为空的参数过滤掉. 做法: 通常我们在dao层即mapper.xml中进行过滤判断操 ...
- http请求的GET和POST请求:查询和新增(server.php)
<?php //设置页面内容是html编码格式是utf-8 header("Content-Type: text/plain;charset=utf-8"); //heade ...