预备知识
1.本文的数据段中涉及了有关stud_pe的使用方法和关于导入表的知识,因此建议先完成《pe结构分析之手工修复导入表》。
2.了解PE文件结构:
3.段表(节表)在PE中的作用。简单来说,段表是一个程序正真存放内容的地方。程序运行所执行的代码,执行中所用到的数据,都在段表这个结构之中。段表又被称为节表,英文(SECTION TABLES),是PE的核心内容,PE中的其他结构都是为了辅佐段表中的内容被正确加载和执行而产生的。
4.区段名功能约定(只是约定,不一定完全遵守):
5.windowsPE弹窗程序的说明:
简单来讲,程序需要messagebox和exit两个函数就可以完成。
而从Pe结构上分析而言,需要的段表结构有3个:
1)代码段。
2)表示上面两个调用的数据段,用来表示导入函数(messagebox,exit)的信息。
3)表示一些代码段中涉及的字符串数据段。
实验目的
将通过实验,根据这些信息找到线索,修复问题。
实验环境
测试环境:windows xp sp3
实验步骤一
实验背景假设。
系统中原本存在一个可以弹窗的正常程序,结果某一天被黑了。现场发现只有一些数据,逆向分析师需要根据这些数据来修复程序。工程师们收集到了一些奇怪的数据,存放在一个叫clues.txt中。经过分析,工程师们修复了问题,留下一句“折腾半天全是段表的事”,消失在人群中,深藏功与名。你能根据这些信息找到线索,还原出工程师们到底做了什么吗?
为此,本实验大致需要执行以下三个步骤:
1.调试分析程序,找出错误原因。
2.从所给信息中分析出数据应该在哪个段及在PE文件中的位置,添加至文件。
3.修复其他涉及到段结构的部分,调试程序,使之正常运行。
任务描述:查错,找出问题所在。
1.试运行程序DemoToFix.exe,查看情况。
从图中可以看到,程序无法正常运行,但是现在我们还不知道是什么原因,将程序拖拽至OD中,看看能有什么提示信息。
很遗憾,OD也提示程序无法启动。
2.没办法,看来只能手工修复了。将demotofix.exe拖拽至stud_pe程序。
从图中可以看到,Number of section中的数据为0,这个字段是用来表示系统中存在多少个段,所以,这个程序加载的时候就根本找不到段,因为段数据已经被标志为0了。
有意思的是,点击上方图中Rva<=>Raw这个按钮,会出现下面这样的问题。
那么说明,关于RVA和RAW转化的时候程序出现了问题。段中的数据在地址转化的时候