上个月写了一系列文章《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(阿达)语言,以纪念这位“世界上第一位软件工程师”。
目录
(一)话说IDA
(二)加载文件与保存数据库
(三)函数表示与搜索函数
(四)反汇编的符号信息与改名
(五)F5反编译
(六)交叉引用
(七)识别类的信息
(八)IDA for Mac
(九)block

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

  1. xcode反汇编调试iOS模拟器程序

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow http://bl ...

  2. 反编译获取任何小程序源码——看这篇就够了

    一 准备工具 1 node.js 运行环境 下载地址:Node.js 2 反编译的脚本 源码链接:https://download.csdn.net/download/wanlitengfei/867 ...

  3. java如何编译和反编译,JAVA 如何反编译的自己的程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 JAVA 如何反编译的自己的程序 反编译的工具有好多, 在众多的JAVA反编译工具中,有几种非常著名的工具使用了相同的核心引擎--JAD,其中主要包括:F ...

  4. NX二次开发-C++使用IDA Pro反编译dll,追踪查看里面使用的UFUN API函数(三部曲1)

    一年前我写过一个C#反编译dll查看代码系列 NX二次开发-C#使用DllImport调用libufun.dll里的UF函数(反编译.net.dll)调用loop等UF函数(三部曲1) NX二次开发- ...

  5. 安卓模拟器反编译获取微信小程序源码。

    认识一下.wxapkg文件 先来想想一个很简单的问题,小程序的源文件存放在哪? ● 当然是在微信的服务器上. ● 但是在微信服务器上,普通用户想要获取到,肯定是十分困难的,有没有别的办法呢? ● 简单 ...

  6. so文件反汇编反编译到C源码

    动态库*.so在linux下用c和c++编程时经常会碰到,下面我来介绍一下怎么把so文件反编译成C语言 so文件反汇编.反编译主要借助工具IDA Pro,下面简单介绍其使用步骤. 打开IDA Pro: ...

  7. 反编译获取微信小程序源码(包含错误解决办法)

    PS:本文章仅用于分享自己反编译的过程以及解决办法,切勿小程序反编译成功后做一些违反人伦的事情! 一. 前言 最近在搞学校的一个晚签到小程序的时候遇到了一个MD5加密问题,试了好多方法都没有解决,所以 ...

  8. IDA无法反编译 and 提示错误

    情况一: 有的时候IDA的函数点进去 ,发现无法去反编译,可能是代码出问题了,考察我们对汇编的阅读 能力例如下面: aaa指令明显错误(注:CODE CREF代码交叉引用) 我们把这里jbe和aaa ...

  9. android 独立插件,最新反编译任何微信小程序,以及独立分包、插件的处理方式...

    本篇文章将详细讲解如何对线上的微信小程序进行解包反编译,并处理独立分包加载.插件等情况下的解决方法,最终获得他的源码以用来学习,没错,就是学习.

最新文章

  1. 第一次亲密接触vim编辑器
  2. 报道 | 1899篇论文、1329个机构、6012位作者,NeurIPS 2020谁在独领风骚?
  3. kmeans中的k的含义_聚类分析:kmeans 算法簇个数的确定
  4. java数组扩容arraylist,ArrayList--扩容机制
  5. 只有3%的猿能完全看懂的高端漫画
  6. 事务处理与事务的隔离级别
  7. Laravel 打造一个完整的项目
  8. 【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类...
  9. 多无人机协同三维路径规划的蛇优化算法Snake Optimizer(提供MATLAB代码)
  10. python获取浏览器cookie_python3实现读取chrome浏览器cookie
  11. Sketch for mac v78 矢量绘图软件
  12. mysql io 优化_mysql 中io优化
  13. Transition过渡动画
  14. android o bln-al10,华为荣耀BLN-AL10是什么型号
  15. android突然断电丢失程序,a2sd+状态下应用程序丢失的解决方法详细解析
  16. chia官方矿池常见问题
  17. JAVA中初始化线程的两种方法_java中最简单的方式新起一个线程
  18. Fabric 测试网络 - 商业票据
  19. R安装WGCNA包(MacOS M1芯片)及impute包安装报错的解决方法【已成功】
  20. 深度学习工作站由于显卡驱动问题导致不能使用GPU

热门文章

  1. HTML---->常用标签链接特殊符号
  2. Public Private Protect Inheritance and access specifiers
  3. linux能否批量重命名,linux批量重命名方法
  4. Adobe Premiere Pro快速入门教程
  5. 03-sketch基本工具使用
  6. Android OpenCV(四十五):图像修复
  7. 青楼残梦-第一次被投诉后感
  8. linux命令ps aux|grep xxx详解
  9. Xcode10 报错 target xxx(project 'xxx')has copy command from ‘xxx/xxx’ to ''xxx/xxx.app/COPYING'解决方案
  10. 网校系统是怎样搭建的?