原 ios逆向工程-静态分析
  • 发布时间: 2014/11/03 19:17
  • 阅读: 11201
  • 收藏: 17
  • 点赞: 5
  • 评论: 6

最近在学习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:

ACA80166:~ yuchenghai$ ssh root@172.168.1.100

然后输入密码,@后面是手机的IP号,越狱后默认密码好像是123456  或者(alpine).

传输文件的命令是

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。

$ 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打开库文件,将两个文件发到手机里

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,可以指定多个

{   
    Filter = {  
         Bundles = ("com.changba.ktv");   
    };   
}

同学们会问了,app 的bundleID怎么查看呢,我们还是用ifunbox工具找到应用目录,在x.app文件夹中会有info.plist文件,打开就能找到。

最后重启设备-打开想分析的应用-电脑打开reveal接口,就可以点击分析了

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

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

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

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

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

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

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

转自:http://my.oschina.net/iq19900204/blog/340297

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

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

    最近在学习IOS逆向工程,查看网络上的资料也不是太多,边学边总结一下. 首先学习资料: 念茜(大神)的博客: http://nianxi.net <ios应用逆向工程 分析与实战> --- ...

  2. android程序逆向工程

    随着智能手机的普及,功能越来越强大.程序也越来多和复杂化.研究一下android系统的逆向工程也是挺有意思的. 目前android逆向工程还处于初级阶段.表现在于: 1.没有完整的动态调试程序.目前由 ...

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

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

  4. 逆向中静态分析工具——IDA初学者笔记

    逆向中静态分析工具——IDA初学者笔记 //****************************************************************************** ...

  5. Android 程序分析环境搭建-静态分析环境搭建

    1.2 静态分析环境搭建 这里主要讲一些用的比较顺手的工具,一并列出来,Uaa,等环境配置, 2,notepad++ ,everything , Jdgui ,idea, ida ,Fiddler , ...

  6. RE 逆向工程初学者指南:方法和工具

    简评: RE 两种分析,静态.动态.好好分析静态因为能够解决 70 % 的问题.介绍了一些工具和方法.Enjoy yourself. 最近几天,我决定试水逆向工程,即使在计算机和编程相关领域有一定的基 ...

  7. 缓冲区溢出分析第07课:MS06-040漏洞研究——静态分析

    前言 我在之前的课程中讨论过W32Dasm这款软件中的漏洞分析与利用的方法,由于使用该软件的人群毕竟是小众群体,因此该漏洞的危害相对来说还是比较小的.但是如果漏洞出现在Windows系统中,那么情况就 ...

  8. 1.关于逆向工程(RE、RCE)-笔记

    名词 逆向工程(Reverse Engineering,简称RE):代码逆向工程(Reverse Code Engineering,简称RCE). 逆向分析方法 静态分析:不执行代码,观察外部特征.获 ...

  9. IDEA 中生成 MyBatis 逆向工程实践

    IDEA 逆向 MyBatis 工程时,不像支持 Hibernate 那样有自带插件,需要集成第三方的 MyBatis Generator. MyBatis Generator的详细介绍 http:/ ...

随机推荐

  1. RAID技术介绍

    RAID技术介绍 简介 RAID是一个我们经常能见到的名词.但却因为很少能在实际环境中体验,所以很难对其原理 能有很清楚的认识和掌握.本文将对RAID技术进行介绍和总结,以期能尽量阐明其概念. RAI ...

  2. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  3. 解决 PhpStorm 对 用单例模式实例化PHP类时,代码自动提示功能失效 的问题

    大部分PHP框架中,为了防止一个类被重复实例化,往往采用“单例模式”实例化类.我们的项目框架是这样做的: 先写好一个基类 /framework/Base.class.php,内容如下: <?ph ...

  4. 【荐】PDO防 SQL注入攻击 原理分析 以及 使用PDO的注意事项

    我们都知道,只要合理正确使用PDO,可以基本上防止SQL注入的产生,本文主要回答以下几个问题: 为什么要使用PDO而不是mysql_connect? 为何PDO能防注入? 使用PDO防注入的时候应该特 ...

  5. 最大堆 最小堆 解决TOPK问题

    堆:实质是一颗完全二叉树,最大堆的特点:父节点值均大于子节点:最小堆的父节点值均小于子节点: 一般使用连续内存存储堆内的值,因而可以根据当前节点的索引值推断子节点的索引值: 节点i的父节点为(i-1) ...

  6. java基础 字符串 “==” 和 “equals” 比较

    demo: public class TestStringEquals { public static void main(String[] args) { String a = "test ...

  7. C++ STL模板

    C++中的STL(Standard Template Library)用起来挺方便的,这里我们来做一下总结. 一.set set是STL中一种标准关联容器 (vector,list,string,de ...

  8. SQL Server 阻止了对组件 'Ole Automation Procedures' 的 过程'sys.sp_OACreate' 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configur

    参见:http://msdn.microsoft.com/zh-cn/library/ms191188(SQL.105).aspx Ole Automation Procedures 选项 [本主题为 ...

  9. js自动更新时间+星期

    <div class="top_bar" id="cao" height="28px"><script> setIn ...

  10. jquery手写实现单页滚动导航

    效果说明:点击tab导航,页面滑动到下方相应板块.并且当页面通过鼠标滚动下去时,上方的tab也可以自动切换到当前位置的板块上. 代码说明:js中对两个动作分别写,一个是tab点击下滑到相应板块位置:一 ...