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会比较酷,哈哈
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风格的函数调用
- ››iphone图片拉伸的几种方法
- ››iphone正则表达式的简单使用
- ››iPhone开发Unresolved Symbols CAKeyframeAnimati...
- ››IPhone开发-“此证书是由未知颁发机构签名”解决方...
- ››IPhone开发-整合私钥和证书,生成.p12文件
- ››iPhone应用开发-UIPickerView选取器详解
- ››iphone 获取屏幕的宽度和高度
- ››iPhone读取工程包中的二进制文件
- ››iPhone新手机 不挂YouTube APP
- ››iPhone 获取指定格式的时间和日期
- ››iPhone版PPS走进生活 观赏体验媲美PC版
- ››iPhone两种不同的应用程序:两种方法的哲学思想
更多精彩
赞助商链接