iOS安全

近来在微博上面关于在非官方渠道下载的 Xcode 编译出来的 app 被注入了第三方的代码的问题,笔者也跟进看了看。 看到这个问题,笔者首先找到这个木马样本的代码:位于带木马Xcode的/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/Library/Frameworks/Co […]

关于IOS安全这方面呢,能做的安全保护确实要比Android平台下面能做的少很多。 只要你的手机没越狱,基本上来说是比较安全的,当然如果你的手机越狱了,可能也会相应的产生一些安全方面的问题。就比如我在前面几篇博客里面所介绍的一些IOS逆向分析,动态分析以及破解方法。 但是尽管这样,对IOS保护这方面来说,需求还不是很乏,所有基于IOS平台的加固产品也不是很多,目前看到几种关于IOS加固的产品也有做 […]

在前面讲到过使用Theos进行越狱开发,但是流程太多太复杂了。通过使用iOSOpenDev,我们可以使用Xcode开发,生成,scp到设备上,killall SpringBoard等一系列操作一次完成。 首先安装Theos,然后配置export THEOS = /opt/theos ,iOSOpenDev需要这个环境。 然后下载iOSOpenDev,下载地址:http://iosopendev.c […]

fishhook是一个非常简单的库,它能动态替换运行在IOS模拟器或设备上Mach-o文件的符号表。是facebook的一个开源工具,github地址: https://github.com/facebook/fishhook 使用方法如下: 123456789101112131415161718192021222324252627282930313233343536373839404142434 […]

Object-c 运行时允许你修改selector(method name)到implementation(the method code itself)的映射,在不修改 iOS 系统类库或第三方类库的源码基础上,修改原有调用逻辑。 也就是说替换两个方法的实现,相当于Hook。 下面先看一个例子: 比如我们想替换NSObject中的lastObject方法,先定义替换方法: 12345- &#40 […]

符号表中有些符号是必须的,但是很多符号都是去掉的。 先来看一个正常的二进制文件的符号表: 从上面我们可以看到很多暴露的类名、函数名等,这让攻击者很容易看出你的程序中有哪些关键的逻辑。但是我们对该文件strip后,再来看它的符号表: strip MethodSwizzlingDemo  这时我们看到程序中定义的函数在符号表中都没有了。 而且这样在反汇编的代码中也不会存在符号。  

如果你的程序里有重要的计算过程不想被别人分析出来,那么就可以使用-O3编译选项来优化你计算逻辑。 一个没有优化的简单计算程序: 1234567891011#include <stdio.h> int main(int argc, const char * argv[]) {     int i;     […]

我们知道一般的函数调用都会通过call的方式来调用,这样让攻击很容易对一个函数做手脚,如果是以inline的方式编译的会,会把该函数的code拷贝到每次调用该函数的地方。而static会让生成的二进制文件中没有清晰的符号表,让逆向的人很难弄清楚逻辑。 下面我们来看看一个普通函数及其反汇编代码: 12345678910111213141516171819202122int isValidate&#4 […]

一、检测调试 当一个应用被调试的时候,会给进程设置一个标识(P_TRACED),我们可以通过检测该进程是否有设置这个标识来检测进程是否正在被调试以保护好我们的应用。 123456789101112131415161718192021222324#include <sys/types.h> #include <sys/sysctl.h> static int check_de […]