[WebKit]遭遇Mac OS私有API

WebKit并不是完全开源的, Apple封装了一部代码在一个静态库(libWebKitSystemInterfaceXXXX.a)中,并没有提供源代码。而且不同版本的OS (包括iOS),会有特定的版本。 这就是我今天从分析中了解到的, 觉得过程比较有趣,记录一下。 1. 在WebKit中有这样一段源代码 (Laguage.mm): static String httpSt...
阅读(3026) 评论(3)

Objective-C的方法替换

Objective-C的方法替换 (Method Replacement for Fun and Profit) 本文将要讨论Objective-C中的方法替换(method replacement)和swizzling(移魂大法)。   重写类的方法(Overriding Methods) Overriding methods在任何面向对象语言中都很常见,主要用于子类化中。在子...
阅读(10643) 评论(3)

[iOS逆向工程] 在汇编语言调试中获取当前实例句柄

在分析Safari行为的时候想到要用objective-c的特性随时可以语义化的查看一下UIView的各种状态,比如在UIView方法内部设了个断点,想看一下当前视图结构。只要得到当前实例的句柄就可以了。查了一些资料,记录一下。 函数参数的传递 iOS Simulator里应用是跑在32bits模式下的(在Activity Monitor可以看到),依据>里关于Intel 32...
阅读(5656) 评论(5)

Twitter广告平台的私有API

Promoted Tweets是Twitter的一个广告平台。本文作者是发现在Twitter官方的应用中并没有显示一些广告,而决定分析Twitter是不是做了什么手脚。没有详细的步骤,只是可以了解一些工具的使用和Twitter的一个小动作。   Mac上的Twitter有些奇怪的行为: Timeline上的一些内容被过滤掉了. 下图就是一个对比,相较网页版本,其中"howabo...
阅读(2084) 评论(0)

[Mac OS/iOS]反汇编工具Hopper分析Crash Log

在Mac OS下分析Crash Log有很多种方法,这里不是要说明如何分析的Crash Log, 主要是展示下Hopper的使用。 强大的IDA大家可能已经知道,但它的Mac OS版本又让人回到了DOS时代。幸运的是Mac OS有了一个小巧的替代品:Hopper, 基本上满足了工作上的反汇编的需要,包括伪代码以及控制流图(Control Flow Graph),支持ARM指令集并对Objectiv...
阅读(15741) 评论(1)

iOS:应用程序的线程安全性

本文在于说明iOS应用的Objective-C代码的线程安全性。先是简单介绍一下线程安全的基本知识,然后通过一个小例子来观察非线程安全代码,最后会稍稍介绍一个可以用来分析线程安全隐患的工具。 1) 基础知识 (Threading Basics) 当启动一个应用时,iOS会对应创建一个进程(process)和一块为之分配的内存。简单地说,一个应用进程的内存包括三个部分: (更详细...
阅读(10442) 评论(4)

[Objective-C]为现有对象增加额外的实例变量/数据

想到要如何为所有的对象增加实例变量吗? 使用Category可以很方便地为现有的类增加方法,但却无法直接增加实例变量(有为此使用查表法的,也算曲线救国吧)。不过从Mac OS X v10.6开始,系统提供了Associative References,这个问题就很容易解决了。 我根据Objective-C Reference中的示例修改了一下,直接上代码了。重点是其中objc_setAs...
阅读(3129) 评论(0)

【iOS/Mac OS】程序崩在objc_msgSend(),怎么办?

程序崩在objc_msgSend(),怎么办?   最可能的原因是,当你向一个已经释放的对象发送消息时,或者虽然指针是正确的,却被别的对象破坏了内容(比如内存越界),再或者使用了悬摆指针(dangling pointer)。偶尔的时候也会是因为内存错误导致运行时的数据结构被破坏,但通常问题还是在接收者本身。   无论用Debugger还是通过崩溃日志(crash log),都可以得到远比b...
阅读(13927) 评论(3)

拦截MPMoviePlayerController的点击事件

为了解决在MPMovieController上添加一个和控制栏一起显示的按钮,特别研究了一下MPMoviePlayerController的结构 (controlStyle是default,为了便于查看,省去了部分输出): (lldb) po [m_view recursiveDescription] (id) $1 = 0x179529f0 >    |    |    |...
阅读(9627) 评论(6)

Objective-C中Extension与Category的使用

Objective-C 2.0增加了class extensions用于解决两个问题: 允许一个对象可以拥有一个私有的interface,且可由编译器验证。支持一个公有只读,私有可写的属性。 私有接口(Private Interface) Objective-C 2.0以前, 若要定义私有函数,通常是在实现文件中声明一个"Private" category: @interface My...
阅读(11145) 评论(1)

混合使用Objective-C,C++和Objective-C++

之前有段时间,我参与了一项使用了C++库的Objective-C项目。写了一篇关于混编的文章,结果却出乎意料的成为Google搜索中关于Objective-C++的最靠前的结果之一。 后来,Apple将基于LLVM的clang做为主选编译器。其作用之一就是可以保证Objective-C的演化,而GCC的进化却太慢了。之前文章就不太适用了,而且在这个过程,我也收到了一些回馈,这些都促使我写...
阅读(55885) 评论(9)

XCODE 4.0.2 & 4.1分布式编译

转载请注明出处:http://blog.csdn.net/horkychen (译注:我一直思考如何把旁边的电脑也用来一起编译一个大工程,今天发现了这份资料。先翻译一下,找时间实践。) 不知道是什么原因,XCode 4.x似乎不支持分布式编译了。虽然可以通过定义distcc服务器启用分布式编译,但基本上还是在本地工作。 仔细看看编译日志: setenv DISTCC_H...
阅读(4150) 评论(1)

为XCode 4加速

转载请注明出处:http://blog.csdn.net/horkychen          1. XCode 4打开时,自动加载上次的工程,需要较长时间。      这是因为Lion提供了新功能让应用程序恢复上次关闭时的状态。如果仅是临时不希望下去打开时不要打开现在使用的项目,可以在退出使用CMD+Q+OPTION代替CMD+Q。    如果默认不希望再打开,就可以使用下面的指令:...
阅读(8175) 评论(2)

Cocos2D-HTML5开源2D游戏引擎

转自:http://www.programmer.com.cn/12198/ 文/林顺 Cocos2D-HTML5是基于HTML5规范集的Cocos2D引擎的分支,于2012年5月发布。Cocos2D-HTML5的作者林顺将在本文中介绍Cocos2D-HTML5的框架、API、跨平台能力以及强大的性能。Cocos2D-HTML5是Cocos2D系列引擎随着互联网技术演进而产生的一个分支...
阅读(2277) 评论(0)

小心,Mac OS也有类似万能密码!

上次系统故障,差点要重装系统。好在找到了一个方法同大家分享。 如果你有了一台苹果电脑,但还不清楚如何设置Firmware password(类似BIOS密码,默认是空的),那你还是要了解一下。 开机按Alt不松,进RecoveryHD, 再进终端,输入resetpassword,然后你就可以随便改掉系统用户的密码。所以有空在启用下吧!  *当你忘记了系统用户密码,这个也能救你。...
阅读(6219) 评论(0)
23条 共2页1 2 下一页 尾页
    个人资料
    • 访问:1533742次
    • 积分:17123
    • 等级:
    • 排名:第637名
    • 原创:221篇
    • 转载:30篇
    • 译文:47篇
    • 评论:375条
    微博/MSN/EMail

    新浪微博:Horky
    QQ:324014340
    Mail:horky.chen@gmail.com
    微信公众号 (聚焦软件开发):
    博客专栏
    最新评论