IDA反汇编/反编译静态分析iOS模拟器程序
IDA Pro静态分析iOS模拟器程序,反汇编,反编译。学习系统实现,挖掘私有API
hursing
我不会告诉你他是一只葵鼠哒 O(∩_∩)O
展开
-
Objective-C头文件导出工具class-dump
首先,这个工具是开源的。作者网站:http://stevenygard.com/projects/class-dump/用途:分析库文件或可执行文件,得到Objective-C类和部分C结构体的信息。常见使用场景是得到系统SDK的私有API。头文件的例子请参考《UIWebView体系结构(六)UIWebView》原理:Objective-C类的信息会有字符串来对应描述,分析保存这些原创 2013-06-06 09:56:33 · 16064 阅读 · 0 评论 -
IDA反汇编/反编译静态分析iOS模拟器程序(九)block
在第三节 函数表示与搜索函数 提到block函数和普通的OC函数不同。反汇编分析前需要理解block的实现原理,故推荐先看看这几篇文章及其所引用的参考资料:Block介绍(一)基础Block介绍(二)内存管理与其他特性block介绍(三)揭开神秘面纱(上)block介绍(四)揭开神秘面纱(下)block函数的命名与上文提到类似。函数内部定义的block会以sco原创 2013-06-04 17:18:00 · 8385 阅读 · 5 评论 -
IDA反汇编/反编译静态分析iOS模拟器程序(八)IDA for Mac
iOS多用OC(Objective-C)编程,Mac也类似,所以IDA for Mac对OC的支持似乎强些。Windows的IDA在反汇编某些SDK库文件时会识别不出OC的函数名,而且对OC运行时的结构体也没识别出来。当然,因为我用的是6.1版的windows IDA, Mac上用的是6.4版,不知道是不是windows IDA 6.1的bug了。总之在界面操作流程上,感觉Mac IDA是对O原创 2013-06-04 10:23:17 · 29858 阅读 · 10 评论 -
IDA反汇编/反编译静态分析iOS模拟器程序(七)识别类的信息
C++类的实质是个结构体。先举个例:class TestClass{ int m_val1; int m_val2;public: int getVal1(); int getVal2();};int TestClass::getVal1(){ return m_val1;}int TestClass::getVal2(){原创 2013-05-31 11:35:26 · 11791 阅读 · 0 评论 -
利用IDA和LLDB探索WebCore的C++类的继承关系
开刀的类名叫 PluginWidgetIOS,利用lldb可以得到:(lldb) image lookup -r -s PluginWidgetIOS7 symbols match the regular expression 'PluginWidgetIOS' in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSim原创 2013-05-02 17:54:57 · 4590 阅读 · 0 评论 -
gdb的info functions和lldb的image lookup的区别
两个命令都是搜索函数的。gdb的info functions是在内存中的symbol table查找,结果中的地址是内存里的地址,所以得到结果后,直接b(break,添加断点)这个地址,即可正确加断点。lldb的image lookup -s是在库文件中查找,结果中的地址是在library中的偏移地址,b这个地址是不能正确break的。正因为这个区别,gdb会比lldb更快得到结果。原创 2013-04-01 10:30:41 · 6115 阅读 · 0 评论 -
IDA反汇编/反编译静态分析iOS模拟器程序(六)交叉引用
交叉引用cross reference是指 这个地址的 数据或代码 引用了哪个地址 以及 被哪些地址的代码所引用。引用了哪个地址,在反汇编就能看出来,一行汇编代码自然只会引用一个地址。但被引用是一对多的关系,正如一个函数可以被很多函数在内部调用。查看“被引用”是静态分析中得到堆栈的方法,当然,因为一对多的关系,还需要猜。这主要是看分析的目的是什么,与运行时动态分析相比各有好处,静态分析能得到完整的原创 2013-05-30 14:43:10 · 20907 阅读 · 2 评论 -
IDA反汇编/反编译静态分析iOS模拟器程序(五)F5反编译
反编译是IDA最让人振奋的功能,它的本质是IDA的一个插件,不过会被当做hex-rays的另一个产品。既然是产品,那当然就另外收费,demo版是没有的。反编译的快捷键是F5,菜单位置在 顶部菜单View->Open Subviews->Pseudocode。在显示反汇编的窗口中按F5,经过分析后,会多了一个标签栏Pseudocode-A:继续上一节(可用两个浏览器窗口对比)的示原创 2013-05-16 17:20:22 · 24133 阅读 · 9 评论 -
IDA反汇编/反编译静态分析iOS模拟器程序(四)反汇编的符号信息与改名
首先看看windows IDA和xcode的反汇编有什么不同。因为不确定直接分析UIKit的代码会不会有法律问题,还是自己写个例子吧。分析UIKit的时候因为没有完整的debugging symbols,所以得到的反汇编信息会比自己写的代码较少。一个在命名空间ANameSpace的类DataInternal,一个DataModel的C++类,一个继承自UIButton的TestButton。演原创 2013-05-16 11:34:45 · 9684 阅读 · 2 评论 -
IDA反汇编/反编译静态分析iOS模拟器程序(三)函数表示与搜索函数
打开IDA一般都是去搜索函数,可以说函数是IDA工程的基本单位吧,数据结构什么的都是为函数服务而已。函数列表在界面左侧的Functions Window:可以看到,UIKit有27789个函数呢。在搜索前要先知道函数的表示方式。Objective-C函数的表示:拿UIView来做例子吧。在xcode documentation中,UIView的函数会有这样的表示:+ (原创 2013-05-14 18:40:23 · 14252 阅读 · 0 评论 -
IDA反汇编/反编译静态分析iOS模拟器程序(二)加载文件与保存数据库
启动windows版的IDA,在Quickstart界面点击New,弹出一个对话框选择文件。也可以按取消后再把文件拖进IDA。由于Mac版的IDA没注册,没有save功能,所以只好先把Mac上的东西拷贝到windows再打开了。能拖进IDA的文件可以是静态库、动态库、可执行程序等。对ios而言,可执行程序通常是build出来的.app包里的同名文件,当然,也可以是系统自带的程序。库文件主要是S原创 2013-05-14 09:56:39 · 14167 阅读 · 0 评论 -
IDA反汇编/反编译静态分析iOS模拟器程序(一)话说IDA
上个月写了一系列文章《xcode反汇编调试iOS模拟器程序》,是使用xcode来动态反汇编分析iOS模拟器程序的。这个系列则是静态分析,用到IDA来做反汇编/反编译。一些概念不会在此重复,遇到时可回读xcode反汇编系列。之前有提到一些IDA的常识和下载地址,可看 《IDA Pro权威指南》读书笔记,同时这本书也是更深入挖掘IDA的参考书,只不过书里不会提到Objective-C。本系列使用的原创 2013-05-13 14:58:15 · 7200 阅读 · 0 评论 -
《IDA Pro权威指南》读书笔记
IDA 6.1 预破解版 种子下载地址 http://thepiratebay.se/torrent/7686769/。 如果不能下了,谷歌搜索 “Hex-Rays Ida Pro Advanced Edition v6.1.1 PreCracked”。Names窗口:F,常规函数L, 库函数I,导入的名称。与库函数的区别:没有代码G,命名代码D,数据A,字符串原创 2013-04-03 10:44:37 · 8952 阅读 · 1 评论