IDA反汇编/反编译静态分析iOS模拟器程序(一)话说IDA

简介: 上个月写了一系列文章《xcode反汇编调试iOS模拟器程序》,是使用xcode来动态反汇编分析iOS模拟器程序的。这个系列则是静态分析,用到IDA来做反汇编/反编译。

上个月写了一系列文章《xcode反汇编调试iOS模拟器程序》,是使用xcode来动态反汇编分析iOS模拟器程序的。这个系列则是静态分析,用到IDA来做反汇编/反编译。一些概念不会在此重复,遇到时可回读xcode反汇编系列。

之前有提到一些IDA的常识和下载地址,可看 《IDA Pro权威指南》读书笔记,同时这本书也是更深入挖掘IDA的参考书,只不过书里不会提到Objective-C。本系列使用的是Windows IDA 6.1和Mac IDA 6.4。

详细的关于IDA的介绍还是由官方自己说吧:https://www.hex-rays.com/products/ida/index.shtml。毕竟连官方都说“很难说清楚”,呵呵。

What is IDA all about?

IDA is a Windows, Linux or Mac OS X hosted multi-processor disassembler and debugger that offers so many features it is hard to describe them all. Just grab an evaluation version if you want a test drive.

另外官网也提供demo下载https://www.hex-rays.com/products/ida/support/download_demo.shtml,可以使用最新版。Mac版的IDA没找到crack,只能用demo了。

IDA是逆向工程的重要工具,它既能杀人也能救人。本系列只会谈怎么救人,即目的是弄懂iOS系统的底层实现,查找更多私有API。逆向真机的ARM指令程序就不会提及了。因此这个系列仍然是对iOS模拟器程序来做分析,即32位的x86程序,并以SDK做分析例子。其实学会x86也很容易类比到ARM上,IDA都支持,不过别人发布的apps都不会包含symbol file,所以用到的逆向工程知识会远比这里介绍的多。

这里再补充一下反汇编和反编译这两个概念的区别。反汇编是把机器语言形成的文件内容“翻译”成汇编语言,这些文件主要包括可执行文件/链接库文件/中间目标文件。反编译则是把汇编语言“转换”成高级语言,转换的结果也叫伪码,语言则是C语言(C++和Objective-C都可以用C来实现)。由于机器语言是针对特定CPU的,所以反汇编工具也需要识别各种CPU指令。


IDA能完成xcode做不到的事情有:

  • 跳转查看特定地址代码,包括静态存储区的信息、vtable等
  • 部分地自动计算出偏移地址处的symbol含义
  • 反编译
  • 记录自己添加的信息
  • 查看交叉引用
xcode比IDA好的地方有:
  • 确定运行时的数据数值
  • 清晰地显示调用堆栈
当然,IDA也是支持动态调试iOS程序的,不过我感觉用不上。官方教程: https://www.hex-rays.com/products/ida/support/tutorials/remote-debugging.shtml

PS:IDA图标上的女子:Ada Lovelace
简介:
  阿达·奥古斯塔,19世纪诗人拜伦的女儿,数学家。穿孔机程序创始人,建立了循环和子程序概念。为计算程序拟定“算法”,写作的第一份“程序设计流程图”,被珍视为“第一个给计算机写程序的人”。
  生平:
  1815年生于伦敦,她是英国著名诗人拜伦(L.Byron)的女儿。因父母婚姻破裂,出生5星期后就一直跟随母亲生活。母亲安娜·密尔班克(A.Millbanke)是位业余数学爱好者,阿达没有继承父亲诗一般的浪漫热情,却继承了母亲的数学才能。
  阿达19岁嫁给了威廉·洛甫雷斯伯爵,因此,史书也称她为洛甫雷斯伯爵夫人(Lady Lovelace)。由于巴贝奇晚年因喉疾几乎不能说话,介绍分析机的文字主要由阿达替他完成。阿达的生命是短暂的,她对计算机的预见超前了整整一个世纪。阿达早逝,年仅36岁,与她父亲拜伦相似。根据她的遗愿,她被葬于诺丁汉郡其父亲身边。
  阿达设计了巴贝奇分析机上解伯努利方程的一个程序,并证明当时的19世纪计算机狂人巴贝奇的分析器可以用于许多问题的求解。她甚至还建立了循环和子程序的概念。由于她在程序设计上的开创性工作,Ada Lovelace被称为世界上第一位程序员。当时的阿达甚至不顾自己已是三个孩子的母亲,坚定地投身于分析机研究,成为巴贝奇的合作伙伴。在1843年发表的一篇论文里,阿达认为机器今后有可能被用来创作复杂的音乐、制图和在科学研究中运用,这在当时确是十分大胆的预见。以现在的观点看,阿达首先为计算拟定了“算法”,然后写作了一份“程序设计流程图”。这份珍贵的规划,被人们视为“第一件计算机程序”。
  美国国防部据说花了10年的时间,把所需软件的全部功能混合在一种计算机语言中,希望它能成为军方数千种电脑的标准。1981年,这种语言被正式命名为ADA(阿达)语言,以纪念这位“世界上第一位软件工程师”。
目录
相关文章
|
1月前
|
存储 运维 安全
iOS加固原理与常见措施:保护移动应用程序安全的利器
iOS加固原理与常见措施:保护移动应用程序安全的利器
28 0
|
3月前
|
存储 运维 安全
iOS加固原理与常见措施:保护移动应用程序安全的利器
iOS加固原理与常见措施:保护移动应用程序安全的利器
38 0
|
3月前
|
监控 测试技术 iOS开发
查看ios 应用程序性能
查看ios 应用程序性能
37 0
|
30天前
|
iOS开发 开发者
iOS移动应用程序的备案与SHA-1值查看
iOS移动应用程序的备案与SHA-1值查看
36 2
|
2月前
|
iOS开发 开发者 索引
批量上传 iOS 应用程序截图的实用技巧
批量上传 iOS 应用程序截图的实用技巧
|
3月前
|
JSON JavaScript 安全
iOS 应用程序数据保护:如何保护 iOS 应用程序中的图片、资源和敏感数据
iOS 应用程序数据保护:如何保护 iOS 应用程序中的图片、资源和敏感数据
|
3月前
|
安全 Java 数据安全/隐私保护
Android和iOS应用程序加固方法详解:混淆、加壳、数据加密、动态加载和数字签名实现
Android和iOS应用程序加固方法详解:混淆、加壳、数据加密、动态加载和数字签名实现
70 0
|
iOS开发
XCode 5 “ios模拟器未能安装此应用程序”解决办法
<p style="color:rgb(54,46,43); font-family:Arial; font-size:14px; line-height:26px"> 首先,提示界面如下:</p> <p style="color:rgb(54,46,43); font-family:Arial; font-size:14px; line-height:26px"> <img src
1388 0
|
iOS开发
ios模拟器未能安装此应用程序
网上介绍了很多方法,觉得有些不太靠谱。这里只解释我试验过的最简单最粗暴的方法:   删除模拟器上旧的APP 以外,也可以做 CLEAN (cmd+shift+K) 把旧的build 删掉。 微信公众号: 猿人谷 如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】 如果您希望与我交流互动,欢迎关注微信公众号 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
727 0