一个喜欢在各个技术领域到处浪的人
(增加了一键脚本在末尾) 首先得看官方文档,大部分操作步骤就是那样,我就不翻译了,只做补充。https://code.google.com/p/chromium/wiki/AndroidBuildInstructions 1.
上http://www.youtube.com或者优酷搜些视频听听就知道正确读音了。不管怎么说,移动开发都是外国的牛人多些,要做好交流,单词读音的正确性很重要。
现在很多for Mobile的HTML5网页内都有快速滚动和回弹的效果,看上去和原生app的效率都有得一拼。 要实现这个效果很简单,只需要加一行css代码即可: -webkit-overflow-scrolling : touch;可用以...
SVN客户端: http://wiki.rabbitvcs.org/wiki/install/ubuntu。貌似这个最像windows的TortoiseSVN了,居然叫RabbitVCS,龟兔赛跑……不过这兔子的效率一般,建议用终端checkout。
Ubuntu: 首先要到ubuntu官网http://www.ubuntu.com/download/desktop下载安装包。 最好是安装大多数开发者在用的版本,不然你遇到问题也没人回答,所以装的是12,不是13(不过我装了13也没发现什么问题)。
mark一下吧,只是个人经验。 Xcode,IDE gdb,lldb,命令行调试工具 Simulator,模拟器 Application Loader,(上传app store用) Instruments,各种开发辅助工具,性能测试...
官网的介绍: The JavaScript Core framework (JavaScriptCore.framework) provides Objective-C wrapper classes for many standard JavaScript objects.
WebEvent是iOS专有的类,负责封装和携带从UIKit得到的系统事件信息,并由WebKit层的WAKResponder子类传递到WebCore的EventHandler。
Mobile Safari是开源的Mac Safari的iOS版本,然而iOS WebKit并不完全开源,只公开了部分的WebCore和JavaScriptCore。
最近看到不少文章都建议程序员写技术博客,可是这事儿有时候不是程序员一个人做得了主的,公司是否支持也是个问题,因为技术博客的内容会牵涉到公司的利益。 只说软件技术,我想到有三点: 1.担心泄密。
WebView的私有API请查看《UIWebView体系结构(七)WebView》。 先上代码吧 - (void)modifyUA { id webView = [aUIWebViewInstance valueForKeyPath:@"_internal.
各种Clients会有些共性: 1.WebCore会声明抽象基类,各Controller持有基类类型的指针 2.由第三方创建Client并传递指针给Controller,Controller析构时会通知Client,Client此时删除自身。
请先阅读《iOS Safari/WebKit对DeviceOrientationEvent的实现》,本文是姐妹篇。 简单地描述一下区别,后面会更详细对比: DeviceOrientationEvent是获取方向,得到device静止时的绝对值; DeviceMotionEvent是获取移动速度,得到device移动时相对之前某个时间的差值比。
背景知识: Apple官方只发现一个文档: https://developer.apple.com/library/safari/#documentation/SafariDOMAdditions/Reference/DeviceOrientationEventClassRef/DeviceOrientationEvent/DeviceOrientationEvent.html 连个例子都没有,还是自己实践吧。
背景知识: Safari Web Content Guide中关于orientationchange的文档: http://developer.
在《iOS WebCore的wak目录》中证实了iOS的WebKit是想尽可能复用Mac上的代码,所以WebView在iOS和Mac上差不多。 Mac WebView的参考文档: https://developer.
首先,这个工具是开源的。作者网站:http://stevenygard.com/projects/class-dump/ 用途: 分析库文件或可执行文件,得到Objective-C类和部分C结构体的信息。
2013年 6月 5日 星期三 16时52分43秒 CST 最新完整update的webkit代码。 cloc是开源的,下载地址 http://sourceforge.net/projects/cloc/ 下载了perl版。
在第三节 函数表示与搜索函数 提到block函数和普通的OC函数不同。 反汇编分析前需要理解block的实现原理,故推荐先看看这几篇文章及其所引用的参考资料: Block介绍(一)基础Block介绍(二)内存管理与其他特性block介绍(三)揭开神秘面纱(上)block介绍(四)揭开神秘面纱(下) block函数的命名与上文提到类似。
越写越多,整理不完,也许思维导图都不是最好的承载工具了,以后再继续补充。 分辨率为2042*3917,点击查看大图: 转载请注明出处:http://blog.csdn.net/hursing
iOS多用OC(Objective-C)编程,Mac也类似,所以IDA for Mac对OC的支持似乎强些。Windows的IDA在反汇编某些SDK库文件时会识别不出OC的函数名,而且对OC运行时的结构体也没识别出来。
C++类的实质是个结构体。先举个例: class TestClass { int m_val1; int m_val2; public: int getVal1(); int getVal2(); }; i...
交叉引用cross reference是指 这个地址的 数据或代码 引用了哪个地址 以及 被哪些地址的代码所引用。引用了哪个地址,在反汇编就能看出来,一行汇编代码自然只会引用一个地址。
此为xcode4的方法,xcode3的方法请查看 Xcode3创建和使用iOS的dylib动态库 找到两个目录,最好用两个finder窗口分别打开: 目录一: /Applications/Xcode.
反编译是IDA最让人振奋的功能,它的本质是IDA的一个插件,不过会被当做hex-rays的另一个产品。既然是产品,那当然就另外收费,demo版是没有的。
首先看看windows IDA和xcode的反汇编有什么不同。因为不确定直接分析UIKit的代码会不会有法律问题,还是自己写个例子吧。分析UIKit的时候因为没有完整的debugging symbols,所以得到的反汇编信息会比自己写的代码较少。
打开IDA一般都是去搜索函数,可以说函数是IDA工程的基本单位吧,数据结构什么的都是为函数服务而已。函数列表在界面左侧的Functions Window: 可以看到,UIKit有27789个函数呢。
之前老是得输入image lookup -r -s来搜索函数,好烦,认真看了下lldb Tutorial,学到不少方便的好东西,至少alias就满足我了。
启动windows版的IDA,在Quickstart界面点击New,弹出一个对话框选择文件。也可以按取消后再把文件拖进IDA。由于Mac版的IDA没注册,没有save功能,所以只好先把Mac上的东西拷贝到windows再打开了。
上个月写了一系列文章《xcode反汇编调试iOS模拟器程序》,是使用xcode来动态反汇编分析iOS模拟器程序的。这个系列则是静态分析,用到IDA来做反汇编/反编译。
最近和一位产品经理聊天,总觉得有哪里不对劲,可惜当时未能识别出来,也许当面反馈会更有意义。 应该是出于岗位的习惯,产品经理总需要向他人推销自己的想法,在和我的聊天中,有几次听到“我曾经”这样的句子。
《iOS的WebThread》中提到: iOS的WebCore开源码,6.1版本的下载地址为:http://opensource.apple.com/release/ios-61/ 比起webkit.org上的Mac开源码,会多了个wak目录,内有21个文件。
打开iOS4.3上的iPad Safari,再跟iOS6.1上的对比,也许你会觉得4.3没有标签栏,不够好用,但那个多窗口的设计却又非常酷。 iPhone上的Safari 4.3也和iPad差不多。
当用到UIWebView、UITextField、UITextView等类时,就会看到WebThread线程: 在lldb中搜索 (lldb) image lookup -r -s [wW]ebThread会有超过一百个结果。
当UIWebView播放视频时,可以看到view hierarchy里有FigPluginView的身影。这个类来自于QuickTime Plugin,plugin的路径为: /Applications/Xcode.
开刀的类名叫 PluginWidgetIOS,利用lldb可以得到: (lldb) image lookup -r -s PluginWidgetIOS 7 symbols match the regular expression 'PluginWidgetIOS' in /Applications/Xcode.
UIWebView的实际成员变量都由UIWebViewInternal保存,UIWebViewInternal的声明如下: @interface UIWebViewInternal : NSObject { UIScrollView...
_UIWebViewScrollView的继承链为:_UIWebViewScrollView->UIWebScrollView->UIScrollView。
UIWebBrowserView的声明如下:(代码好长,点此跳过) @interface UIWebBrowserView : UIWebDocumentView { UIWebFormAccessory *_accessory;...
WebView是UIWebDocumentView最重要的组合对象,先讲WebView吧。 WebView的声明如下:(代码好长,点此跳过) @interface WebView : WAKView { WebViewPrivat...
UIWebTiledView是UIWebBrowserView->UIWebDocumentView->UIWebTiledView继承链中的老爷子,但这三个类的职能却是MVC的关系,UIWebBrowserView是Controller,UIWebDocumentView是Model,UIWebTiledView是View。
UIWebView属于UIKit,封装了WebKit.framework的WebView; WebView组合管理了WebCore.framework的Page,并提供了各种Clients; Page管理了Main Frame,Main Frame管理了sub Frame(FrameTree)。
掌握了基本技巧后,基本上已不难理解所有的反汇编结果。授之以鱼不如授之以渔: 通过观察自己写的代码的反汇编来掌握各种代码的反汇编结果,从而逆向推测系统代码的源码。
首先自己写一段代码,加好断点,分别在Build Configuration为Debug和Release下运行,查看反汇编 - (void)test { UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(10.
引用第二节的例子: 函数的入口处,通常都是把esp的值传给ebp保存,然后下面的操作以ebp为基准做偏移量引用。因为esp作为栈指针,push和pop都会自动修改其值,所以用ebp可以不受影响。
反汇编调试objective-c,遇到最多的就是objc_msgSend这函数了,本节主要讲讲它的实现以及调试过程的一些技巧。 以UIWebView为例子,看看它在loadRequest时做了什么。
IDA 6.1 预破解版 种子下载地址 http://thepiratebay.se/torrent/7686769/。 如果不能下了,谷歌搜索 “Hex-Rays Ida Pro Advanced Edition v6.1.1 PreCracked”。
知道怎么查看后,先看看有什么实际应用,拿NSNotificationCenter来做实践吧。 首先在某个容易进入的地方加断点,并停在那,例如main函数。
两个命令都是搜索函数的。 gdb的info functions是在内存中的symbol table查找,结果中的地址是内存里的地址,所以得到结果后,直接b(break,添加断点)这个地址,即可正确加断点。
这个是以前情况才实用: 1. 没有debug symbol的类 2. 类被很多宏隔开了,都说不清楚那些宏的启用的 3. Category和Extension隔开了 整理函数: 1. 把程序运行起来,点击调试工具的暂停。