iOS安全

ASLR (Address Space Layout Randomization),即地址空间随机布局。ASLR特性是为了防御攻击对已经地址的攻击才加入的,程序在运行时加载的地址都是随机的,正因如此,所以我们在调试程序的时候下断点要用程序的文件偏移加上加载到内存的随机地址。 有ASLR特性的程序在Mach-o文件头都会有PIE的标识。 同时运行时加载的内存地址是随机的。 我们现在要做的是去除这个特 […]

首先在本机新建文件编写如下代码: 1234567891011121314151617181920#include <stdio.h> #include <fcntl.h> #include <stdlib.h> #define FILE "/private/var/mobile/Library/Safari/Bookmarks.db" int […]

这篇讲的是如何使用Logify.pl 来跟踪函数的调用,以及获取调用的参数。 这里用到的例子还是MethodSwizzlingDemo,我们要通过Log来跟踪ViewController中的函数调用过程。 首先dump出头文件。 然后我们使用logify.pl脚本把我们要跟踪的头文件ViewController.h转换成Tweak.xm: /opt/theos/bin/logify.pl View […]

Theos的安装请参考这里:http://iphonedevwiki.net/index.php/Theos/Getting_Started 其中要注意的地方:将IOS设备上的/Library/Frameworks/CydiaSubstrate.framework/CydiaSubstrate复制到Mac中,然后运行以下命令,替换无效的libsubstrate.dylib: sudo mv -f […]

直入正题,例子还是原来的那个,有两个登陆都是有验证的,前面我们分析了如何动态调试获取账号密码,以及绕过验证。下面我们使用静态反汇编修改汇编逻辑来绕过验证。 使用Hopper打开可执行文件,前面通过dump头文件可以可以分辨loginTapped:和login2Tapped:这两个方法就是登陆按钮响应执行的方法,我们来到login2Tapped:处, 上面部分验证用户名,验证失败跳转到0xaace处 […]

上一篇中已经分析了Mach-o文件的基本结构,otool工具的原理也是这样。 下面我继续来讲讲如何从Mach-o文件中分析出类名和方法名,也让我们了解下class-dump的原理。 Demo还是原来的:https://github.com/AloneMonkey/MethodSwizzlingDemo Mach-o结构有两个节:__objc_classname 和 __objc_methname […]

我们知道Windows下的文件都是PE文件,同样在OS X和iOS中可执行文件是Mach-o格式的。 所以我们如果要进行逆向分析,首先要熟悉Mach-o文件结构。 Mach-o包含三个基本区域: 头部(header structure)。 加载命令(load command)。 段(segment)。可以拥有多个段(segment),每个段可以拥有零个或多个区域(section)。每一个段(seg […]

由于GDB在使用上会遇到很多的BUG,让人用起来很是郁闷,而且Xcode也使用lldb作为调试工具,所以我们就用lldb来调试下我们的应用程序。 1.下载ldid:http://joedj.net/ldid 2.将iOS中的/Developer/usr/bin/debugserver拷贝到OSX中,为其减肥。假定你的iDevice处理器是armv7,则运行: lipo -thin armv7 de […]

今天来简单讲下如何使用introspy来实时追踪IOS应用。 首先introspy的下载地址:https://github.com/iSECPartners/Introspy-iOS/releases 下载完成后,上传到你的设备上面,使用:dpkg -i com.isecpartners.introspy-v0.4-iOS_7.deb 来安装。 安装完成之后,来到设置界面,你会看到有两个新的选项 […]

Snoop-it允许我们进行运行时分析和对iOS应用进行黑盒安全评估。 官网:https://code.google.com/p/snoop-it/ 上面可以看到它的功能。 首先添加源(http://repo.nesolabs.de)搜素snoop-it然后安装。 安装完成之后桌面上会出现一个图标,点击它,你会看到: 点击设置,默认就好,也可以去掉验证: 然后在电脑上访问上面的地址,选择你要监控的 […]