最近在学习IOS逆向工程,查看网络上的资料也不是太多,边学边总结一下。

首先学习资料:

  1. 念茜(大神)的博客: http://nianxi.net

  2. 《ios应用逆向工程 分析与实战》

----------------------------------------------------凌乱的分割线------------------------------------------

其次讲讲要用到的工具(ios安装工具使用Cydia中搜索安装,有些需要数据源可以自行查找):

  1. 已经越狱的IOS设备:这是必须的

  2. OpenSSH(数据源:http://apt.saurik.com):用于远程登录ssh和文件传输scp

  3. class-dump-z: 用于简单分析出工程中的类名和函数名

  4. IDA:强大的反编译工具

  5. Hopper Disassembler:类似IDA 我比较喜欢,能简单转换成OC的功能

  6. Reveal:UI层解析工具

  7. iFunBox 、 iTools :两个都是强大的ios设备管理工具,越狱后能轻松读取应用文件等功能

----------------------------------------------------凌乱的分割线------------------------------------------

恩,差不多就这么多了!上面的工具大部分都是收费的,不过都是有试用版的,接下来我们一个个分析:

  1. ios设备越狱,这个我就不讲了吧,不过我要赞@盘古团队一个,目前所有ios系统都可以越狱(包括ios8.x)

  2. 在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/root
scp 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下载的应用解析出来会是乱码,因为应用被加密了。解决办法

  1. 去渠道上下应用如同步推、91

  2. 解密工具 如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/Frameworks
scp /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接口,就可以点击分析了

总结一下吧,分析一个应用的逻辑是这样的:

  1. 拿个越狱机-下好工具

  2. 去越狱平台下个想分析的应用(或者去app store下,用解密工具解密一下)

  3. 导入reveal分析页面,得到想要的知道的具体视图类或者大致范围

  4. 分析class-dump中,找到想要的类和函数

  5. 在IDA中找到具体函数,查看逻辑

单纯的静态分析只能知道个大概,想知道框架和具体内容还需要动态分析(下面分析)的帮助。不过想知道一个应用用到了什么库,界面是什么结构,有什么图片资源,上面的绝对够用了。总之逆向工程是比较枯燥无味的东西,资料又少,需要的是。。。。。加油

ios逆向工程-静态分析的更多相关文章

  1. IOS_ios逆向工程-静态分析

    返回博客列表 原 ios逆向工程-静态分析 余成海 发布时间: 2014/11/03 19:17 阅读: 11201 收藏: 17 点赞: 5 评论: 6 最近在学习IOS逆向工程,查看网络上的资料也 ...

  2. iOS逆向工程概述(转)

    逆向工程一词,对很多人来说可能很陌生,在android领域,我们经常会听到“反编译某个apk”,那么逆向工程从某种角度讲也包括反编译这项技术,这样一对比,可能我们就更容易理解逆向工程的定义了. 我们引 ...

  3. iOS逆向工程资料

    链接: 基于iOS逆向工程的微信机器人 - 猫友会大讲坛第1期 我的失败与伟大 —— 创业必备的素质(狗神经验谈)

  4. 我也要学iOS逆向工程--全局变量

    大家好!很久不见了.我之前去音乐学院进修爵士吉他去了.现在回来了.之前我一直在学windows开发和逆向.后来到了音乐学院,老师推荐了1个录音软件叫logic prox.可惜啊!当时我只有个索尼的笔记 ...

  5. iOS逆向工程,(狗神)沙梓社大咖免费技术分享。

    序言 简介:本文针对于广大iOS开发者,作为一名开发者,仅仅专注于一门语言可能已经不适用现在的市场需求,曾经因高薪和需求量巨大,而火爆一时的移动端开发者(Android,ios),如今的路却是不再那么 ...

  6. ios 逆向工程文档汇总

    iOS逆向工程工具集 http://www.jianshu.com/p/7f9511d48e05 移动App入侵与逆向破解技术-iOS篇 http://blog.csdn.net/heiby/arti ...

  7. ios逆向工程

    原 ios逆向工程-内部钩子(Method Swizzling)   Method+Swizzling ios hook Method Swizzling(方法调配) 怎么说呢,先了解什么是钩子为什么 ...

  8. IOS 逆向工程之砸壳

    在<iOS应用逆向工程>4.6.2节中,我们曾推荐使用iPhoneCake源的AppCrackr 1.7版给App砸壳.这种方式简单粗暴,省时省力,但正是因为它过于方便有木有,导致几乎所有 ...

  9. ios逆向工程-动态分析

    先说说为什么要分析应用吧,如果你想从一个ios应用中获取有用的信息,或者你想修改该应用的一些功能,前提当然是要先知道该app的逻辑和结构了. 动态分享工具比较少,我们先分析个简单的,全民工具Cycri ...

随机推荐

  1. 机器学习笔记—EM 算法

    EM 算法所面对的问题跟之前的不一样,要复杂一些. EM 算法所用的概率模型,既含有观测变量,又含有隐变量.如果概率模型的变量都是观测变量,那么给定数据,可以直接用极大似然估计法,或贝叶斯估计法来估计 ...

  2. How to implement multiple constructor with different parameters in Scala

    Using scala is just another road, and it just like we fall in love again, but there is some pain you ...

  3. thinkphp getField("xxxxx", true); 得到一个字段所有值组成的的数组

    很多时候我们只需要一张表里某个字段的值,组成的数组 $Channel = D('channel');$channelList = $Channel->order('user_name')-> ...

  4. transform对定位元素的影响

    1.温故知新 absolute:生成绝对定位的元素,相对于除position:static 定位以外的第一个有定位属性的父元素进行定位,若父元素没有定位属性则相对于浏览器窗口的左上角定位,定位的元素不 ...

  5. raid write back / write throught

    RAID write back指的是raid控制器能够将写入的数据写入自己的缓存中,并把它们安排到后续再执行,这样做的好处就是不需要等实际写入磁盘再返回,因此写入更快.对于数据库而言,这一点更为重要, ...

  6. JAVA常用数据结构API

    Quene

  7. anaconda的一些命令

    先安装好TensorFlow. 1.安装sklearn 本安装方式是在anaconda prompt上用命令来更新 (1)激活TensorFlow:activate tensorflow (2)查看是 ...

  8. mongodb安装与权限配置

    mongodb下载地址:官方下载IDE工具:Robo 3T:官方下载 windows系统要求64位,最低2g内存,推荐8g内存及以上 安装过程没有需要配置的地方,直接下一步到结束,如果想要方便可以在环 ...

  9. httplib模块,测试cdn节点文件同步

    httplib模块是一个专门用于http的模块,urllib和urllib2也都是基于对它进行了更上层次的封装 我记得刚开始的时候,公司用的cdn有段时间抽风,全球40多个节点总是有那么几个节点不同步 ...

  10. 021——VUE中变异方法 push/unshift pop/shift

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...