menu 牢记自己是菜
【迎圣诞,拿大奖】RE-NoExec
4027 浏览 | 2020-04-04 | 阅读时间: 约 3 分钟 | 分类: 春秋实验室 | 标签:
请注意,本文编写于 1497 天前,最后修改于 1493 天前,其中某些信息可能已经过时。

0x1 题目分析

题目地址
这道题我在有题解的情况下做了两天,这意味着如果没有题解这题我是一定做不出来的。但是这道题绝对算是一道好题,对于我来说。先说说这道题他到底考了什么知识点:

  • PE文件格式内容(关于DOS头,PE头与.text代码段重要标志位的理解)
  • windows程序的基本分析方法
  • DES加密算法的实现
  • 静态与动态调试的结合
    有一说一,上述随便一个点拿出来单出一道题,我可能要做好久。最近这些题目让我慢慢看到真正的RE到底是什么,远远不止我认为的简单,但是它的确有趣。不多说我来学习一下这道题吧,重要的参考资料我也会贴出我自己当时查阅的资料,希望有用。

0x2 PE文件格式

下载题目附件,题目文件看起来挺正常的,window也显示是一个exe可执行文件。先查壳,问题就来了,提示不是一个PE格式文件。

同样的IDA与OD也是完全打不开这个文件,由于是RE类型的题目,大可不必考虑隐写之类的问题并且如果是Linux下的程序,Windows应该是识别不出来的,不会显示图标为exe。那就只有一种可能,就像我们杂项还原压缩包和图片一样,文件的头部被破坏掉了。由于这是我第一次见到PE文件类型的题目,于是还是要恶补一下。winHEX打开文件,观察发现了三个问题。参考文档纯手工编写PE文件 所有字段与标志位的详解PE文件头
首先是DOS头部指向PE头部的后八位字节明显有问题,这八位字节(0x100)应该是以小端序指向PE头部开始的地址,而PE开始地址为0x110。其次PE头后边的八个字节也是一样,PE头与8086固定的标志应该为(50 45 00 00 4C 01)

除此之外还有就是为何OD无法执行程序的问题,.text段的最后是几个标志位,用于标志此段代码是否可以被执行。将是否可执行值为一(20 00 00 60)

这里我们就完成了所有PE文件相关的修改,保存后发现,这个程序已经被Windows识别成一个Windows文件,并且拖入IDA也可以识别为一个8086的程序,OD也可以正常的进行调试。

0x3 windows程序的基本分析方法

由于我之前做的所有RE题目要么是DOS要么就是Linux下的可执行文件,基本(从来)没有做过Windows下的逆向。于是就先将这个流程作为我以后的基本方法吧。首先这里用到了一个小工具,是一个傻瓜类型的工具,就是只要认字就可以使用的工具,resource hacker。这个软件可以分析Windows程序中的各个空间字符串的结构与ID编号。我们来看一下这个程序原先的样子,将程序拖入这个软件我们就看见了一些信息。我们可以看一下这个check在文件中的ID。


我们发现ID是1001,我们在IDA中搜索一下相关的立即数,然后我们就定位到了关键的函数。

0x4 加密算法的还原

其实这个地方我还是有点懵逼的,让我自己直接看这个加密算法我应该是看不明白的。还是功力太浅,需多加磨练。这个地方首先进行了一次奇偶的切片。

然后后面有一次的base64的加密,在这个加密当中有一次DES的算法加密。这里有一个讲DES加密的地址。这个地方就不过多的赘述方法了,毕竟自己到现在还是用点蒙逼的。附上原题解连接。要是真的需要的话,可以康康原大佬解题流程。


0x5 总结

这道题主要让我学习到了两个过程,一个算法。两个过程分别是:PE文件头修复的过程(可以理解为PE头的一种考点)。二来就是windows程序分析的一般方法。一个算法:DES算法的基本流程。之后练习的过程中我想适当的增加一些Windows程序RE的题目。

发表评论

email
web

全部评论 (暂无评论)

info 还没有任何评论,你来说两句呐!