WEB开发网
开发学院手机开发iPhone 开发 iPhone逆向基础 阅读

iPhone逆向基础

 2010-06-04 13:52:00 来源:WEB开发网   
核心提示:-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk -framework Foundation Talker.m hello.m -o build/iphone_hello但建立一个Makefile会比较酷,哈哈

-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.sdk

-framework Foundation

Talker.m hello.m

-o build/iphone_hello

但建立一个Makefile会比较酷,哈哈

DEV = /Developer/Platforms/iPhoneOS.platform/Developer

SDK = $(DEV)/SDKs/iPhoneOS3.1.3.sdk

ARCH = armv6

CC = $(DEV)/usr/bin/gcc

CFLAGS = -arch $(ARCH)

-I”$(SDK)/usr/include”

-I”$(DEV)/usr/lib/gcc/arm-apple-darwin9/4.2.1/include”

-F”$(SDK)/System/Library/Frameworks”

LD = $(CC)

LDFLAGS = -arch $(ARCH) -lobjc

-framework Foundation

-L”$(SDK)/usr/lib”

-F”$(SDK)/System/library/Frameworks”

all: HelloApp

HelloApp: hello.o Talker.o

$(LD) $(LDFLAGS) -v -o $@ $^

%.o: %.m

$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

clean:

rm -f *.o HelloApp

注意: 虽然http://www.opensource.apple.com/source/objc4/objc4-371.1/runtime/objc.h里面有typedef char *STR; 的定义

但编译ARM版本不能通过

原理解释:

Phone系统是

1个所有的进程都以root权限运行的FreeBSD系统

所有的应用都以Objective-C创建

类似于COCOA的UIKit框架

文件系统重新组织过的FreeBSD Unix

Objective-C 调用一个方法,就是 往一个对象发送一个”方法名”的消息.

[obj doSomething];

这种发消息的机制, 可以发送任何消息给对象,即使接收消息的对象不能响应该消息. 这不同于静态类型的语言C++或者Java,

一个对象要调用的方法,必须预先定义好.

Objetvice-C的 接口与实现,必须放到不同的代码块里.

一个对象接收到消息,有3种处理方法: 转寄, 忽略,或者处理

OBJC_MSGSEND 的角色

在不同的类和方法之间的连续的消息流. 这个消息流 被_ObjC_MsgSend()函数处理.

编译器将 [foo doit]; 的语句 转换称 下面这样的C风格的函数调用

Tags:iPhone 逆向 基础

编辑录入:coldstar [复制链接] [打 印]
赞助商链接