-
-
[分享]C++逆向工程实战之grandMA2 OnPC
-
发表于:
2017-5-20 19:46
13730
-
[分享]C++逆向工程实战之grandMA2 OnPC
C++逆向工程实战之grandMA2 OnPC
C++逆向工程是一件非常考验耐心的事情, 它需要程序员除了掌握的基本知识包括C++语言及其实现原理(参考C++对象模型)、汇编语言外, 还要有一个坚持不懈的心。当然,如果有了适当的工具和适当的辅助信息的话, 会起到事半功倍的效果。这里我们介绍实际在对于在舞台灯光控制领域逆向德国GrandMA的OnPC软件,展示一些经验和技巧,供学习用。
一、常用工具
⑴. IDA The Interactive Disassembler
HEXRAY公司推出著名的反汇编工具, 最重要的是他能为你提供反编译功能(Decompiler), 能够将汇编用伪代码的形式表述出来, 这极大的提高了逆向的效率。该软件大家可以在网络上搜索轻松获得。
⑵. Visual Studio 2013
微软公司著名的开发套件, 对C++开发时编辑、调试等非常方便。这里介绍到他的主要一点是,他提供了DIA SDK的一个工具, 通过这个工具能够非常方便的将被逆向的程序对应的PDB数据库文件中所有信息(C++类定义、结构体、枚举、函数名称、源代码文件名称等等)Dump出来。当然前提是有这个PDB文件存在, 如果在的话那恭喜你,可以说整个逆向工程成功了一半。
二、准备工作
我们这里用MA2 OnPC作为举例程序, 因为它是个典型的基于C++语言开发,开发平台是Visual Studio, 另外就是它提供了PDB调试数据库信息文件在安装程序中。首先我们下载gMA2onPC_[2.4.3][]_v2.4.3.2.exe (下载见https://pan.baidu.com/s/1bp5Z7Cb)这个安装包,并安装到电脑上。
安装完成后,可以在安装目录下看到程序和符号文件
可以看到,主程序文件gma2onpc.exe和对应的pdb文件。然后启动IDA工具, 打开主程序进行分析(IDA对于PDB数据库的支持已经很完善了)。
点击OK确定
选择Yes自动加载pdb数据库
等待分析完成后,所有的函数都会显示在函数窗体中, 注意都是带函数名称的,这对后面的逆向可谓非常便捷。
如果要查看所有的结构体、枚举定义信息,打开View->Open Subvies->Local Types窗体,里面列出了所有的信息。
三、F5举例
等待着IDA分析完成后,我们便可以进入到实际的逆向工作中, 看看F5到底能为我们做什么。在Functions Window中找到并点击WinMain函数, 右边IDA View-A视图中会将其汇编代码显示出来
看着汇编是不是很繁琐? 那就试试F5功能吧
有没有觉得好多了!! 后面我们只要按照伪代码的顺序优化一下就能得到可编译的函数代码。
四、搭建基础项目框架
上述只是简单的介绍了基本概念,那如果你要为正式逆向整个工程的话,需要建立项目源码目录、文件、及C++类声明。如果手动去做的话会很繁琐, 但如果我们利用微软提供的DIA SDK工具的话就能很方便的通过PDB中的数据自动将原始项目的设计框架生成出来。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课