文章 2022-02-16 来自:开发者社区

[IDA] 分析for循环的汇编代码

    在程序设计语言里面,循环是三种语言流程之一(顺序,分支,循环),这其中循环又是编程这件事中最具魅力的,它发挥了人在思维和计算机在计算方面的双方优势,体现了程序员的技巧和智慧,也体现了代码的简洁,优雅和优美。循环中最常用的应该是 for 循环,其他几种例如while,do while又基本上可以等效写成 for 循环。同时 for 循环又可以被等效改写为递归函数。本文首先通过VC创建一个含....

文章 2022-02-16 来自:开发者社区

IDA反汇编/反编译静态分析iOS模拟器程序(二)加载文件与保存数据库

启动windows版的IDA,在Quickstart界面点击New,弹出一个对话框选择文件。也可以按取消后再把文件拖进IDA。由于Mac版的IDA没注册,没有save功能,所以只好先把Mac上的东西拷贝到windows再打开了。 能拖进IDA的文件可以是静态库、动态库、可执行程序等。对ios而言,可执行程序通常是build出来的.app包里的同名文件,当然,也可以是系统自带的程序。库文件主要是S....

文章 2022-02-16 来自:开发者社区

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

上个月写了一系列文章《xcode反汇编调试iOS模拟器程序》,是使用xcode来动态反汇编分析iOS模拟器程序的。这个系列则是静态分析,用到IDA来做反汇编/反编译。一些概念不会在此重复,遇到时可回读xcode反汇编系列。 之前有提到一些IDA的常识和下载地址,可看 《IDA Pro权威指南》读书笔记,同时这本书也是更深入挖掘...

文章 2022-02-16 来自:开发者社区

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() { ...

文章 2022-02-16 来自:开发者社区

IDA反汇编/反编译静态分析iOS模拟器程序(六)交叉引用

交叉引用cross reference是指 这个地址的 数据或代码 引用了哪个地址 以及 被哪些地址的代码所引用。引用了哪个地址,在反汇编就能看出来,一行汇编代码自然只会引用一个地址。但被引用是一对多的关系,正如一个函数可以被很多函数在内部调用。查看“被引用”是静态分析中得到堆栈的方法,当然,因为一对多的关系,还需要猜。这主要是看分析的目的是什么,与运行时动态分析相比各有好处,静态分析能得到完整....

文章 2022-02-16 来自:开发者社区

IDA反汇编/反编译静态分析iOS模拟器程序(五)F5反编译

反编译是IDA最让人振奋的功能,它的本质是IDA的一个插件,不过会被当做hex-rays的另一个产品。既然是产品,那当然就另外收费,demo版是没有的。反编译的快捷键是F5,菜单位置在 顶部菜单View->Open Subviews->Pseudocode。(有网友问到为什么按照第一篇的地址下载IDA后也没有F5,最终是发现他自己装了python,设了环境变量,这会令IDA工作不正常....

文章 2022-02-16 来自:开发者社区

IDA反汇编/反编译静态分析iOS模拟器程序(四)反汇编的符号信息与改名

首先看看windows IDA和xcode的反汇编有什么不同。因为不确定直接分析UIKit的代码会不会有法律问题,还是自己写个例子吧。分析UIKit的时候因为没有完整的debugging symbols,所以得到的反汇编信息会比自己写的代码较少。 一个在命名空间ANameSpace的类DataInternal,一个DataModel的C++类,一个继承自UIButton的TestButton。演....

文章 2022-02-16 来自:开发者社区

IDA反汇编/反编译静态分析iOS模拟器程序(三)函数表示与搜索函数

打开IDA一般都是去搜索函数,可以说函数是IDA工程的基本单位吧,数据结构什么的都是为函数服务而已。函数列表在界面左侧的Functions Window: 可以看到,UIKit有27789个函数呢。在搜索前要先知道函数的表示方式。 Objective-C函数的表示: 拿UIView来做例子吧。在xcode documentation中,UIView的函数会有这样的表示: + (void)be...

文章 2022-02-16 来自:开发者社区

IDA反汇编/反编译静态分析iOS模拟器程序(九)block

在第三节 函数表示与搜索函数 提到block函数和普通的OC函数不同。 反汇编分析前需要理解block的实现原理,故推荐先看看这几篇文章及其所引用的参考资料: Block介绍(一)基础Block介绍(二)内存管理与其他特性block介绍(三)揭开神秘面纱(上)block介绍(四)揭开神秘面纱(下) block函数的命名与上文提到类似。函数内部定义的block会以scope命名,如: @i...

文章 2022-02-16 来自:开发者社区

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....

本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。