首页
社区
课程
招聘
[原创]IDA静态逆向分析模型原理透析
发表于: 2021-3-20 19:39 10411

[原创]IDA静态逆向分析模型原理透析

2021-3-20 19:39
10411

对原理的分析和学习,可以加深我们对技术的认知,同时,我相信技术的本质都有共同性。当我们掌握了它,是可以达成事半功倍的效果。



逆向分析的目标是理解一个系统中软件以便更容易地进行增强功能、更正、增加文档、再设计或者用其他的程序设计语言再编码。

下面是我通过搜集的资料,给大家分享一个关于IDA进行静态逆向分析的规则框架。



如上图所示,该模型框架分为预处理模块、函数识别模块、类识别模块、异常处理识别模块、综合分析模块。其中,预处理模块,是对二进制可执行代码进行反汇编和初步分析,去除软件保护机制,初步识别PE文件格式、资源及导入导出表、程序入口等信息。函数识别模块用于识别系统库函数和用户函数,包括对变量、表达式、语句、函数传参调用和函数执行流程的分析。类识别模块用于识别存在于二进制文件中的类布局、对象结构、RTTI信息、this指针的使用,从而分析出成员变量和成员函数,推导出原始的类结构。异常处理模块用于识别二进制可执行代码中存在的异常处理信息,包括SEH和C++异常。综合分析模块对于上述的三个模块的处理进行综合分析,推导出二进制可执行代码对应的源代码、软件架构、算法、设计模式和文档。

或许上面的内容,看不懂,然后这里有另一张详细模型。(这张图,可以详细解释IDA静态逆向分析模型)



这里我对上图的内容进行一个简单的解说。为了便于分析可执行代码,去除程序保护,需要先用外壳探测程序获得目标程序所用保护的类型,然后针对该类型使用解包器、破解、脱壳、调试、内存转储等,将实际执行的代码剥离出来。对于打包器或者加壳工具对源程序和导入表造成的破坏有,还需要我们使用相应的工具来恢复。

分析前处理,还可以识别程序编写的语言,这有助于程序内用到的编程语言相关的库函数的签名识别。

一般手工分析程序编写语言可以通过剖析入口点特征,能快读定位编程语言,甚至编写库。另外还有一种可能,就是入口点只是一层语言外壳。所以更通用的方式是使用IDA等专业工具的库函数签名机制。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 6
支持
分享
最新回复 (4)
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
这么复杂,这个图是怎么分析出来的?
2021-3-22 17:16
0
雪    币: 1859
活跃值: (2245)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
这是查阅资料,分析总结的结果。
2021-3-23 08:53
0
雪    币: 1636
活跃值: (653)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
清晰明了,大佬辛苦了,爱你
2021-3-24 09:45
0
雪    币: 461
活跃值: (307)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
5
给大佬跪了
2021-3-30 10:57
0
游客
登录 | 注册 方可回帖
返回
//