0x01 题目描述

题目比较简单,不过这种题感觉比单纯的逆向算法来有意思的多,所以记录一下~

0x02 脱壳

先拖到IDA瞅一眼,发现加壳了

用PEID查一下是什么壳,但是没有查出来。使用Strings看一下有没有什么可参考的信息,发现是UPX 3.91的壳,
但是在UPX官网上下载的脱壳工具并没有成功脱壳,那么手脱吧。

UPX的脱壳比较简单,找到pushad 和popad下断点,然后往下跟就好,找到的OEP

使用OD打开evil.exe,首先可以看到开头的一段在循环调用一个函数,函数内进行了pushad, popad操作

我们之间跳过这段循环F4跳到循环的下一条指令,然后继续跟进,发现这儿还有个pushad

之间看后面的代码,发现popad,F4到popad后继续往下跟(也可以在pushad的时候在栈上下硬件访问断点)
到这个地方已经很明显是程序的入口点了

右键使用OllyDump将程序dump出来即可,UPX加壳的程序不需要修复IAT就可以直接运行

0x03 代码分析

将脱壳后的程序拖入IDA(有些函数名有所修改)

sub_401370函数的逻辑如下,主要行为为拷贝evil.exe到%temp%下一份,在从资源中释放evil.docx文件到当前目录
创建一个进程evil.exe "evil.exe",然后打开docx

delete_exe的功能很简单,就是如果命令行参数个数为2(即之前新创建的进程),则循环删除evil.exe文件

read_shellcode_from_internet_jpg从http://www.ddctf.com/x.jpg中读取数据。x.jpg即题目中的x.jpg,自建服务器然后将x.jpg放在
服务器上,修改本地hosts将www.ddctf.com指向自建服务器即可

之后是两个解码函数,这里可以直接忽略其中的逻辑。
然后是执行shellcode的函数execute_shellcode,OD动态跟一下看执行的shellcode内容是什么

使用OD动态跟到执行shellcode的地方,发现一堆push数据的地方,这在shellcode中是一种典型的字符串存储手段,
执行完push之后,在数据窗口检查栈内存中存储的数据即可看到Key

DDCTF - evil 一个伪装成docx的exe的更多相关文章

  1. 【转】如何把ndk编译出来的可执行文件伪装成so打包到apk中

    原文网址:http://jeyechao.iteye.com/blog/2164286 ndk编译出来的共享库,eclipse会自动打包到apk中,而编译出来的可执行文件则不会. 要想可执行文件自动被 ...

  2. 爬取斗图网图片,使用xpath格式来匹配内容,对请求伪装成浏览器, Referer 防跨域请求

    6.21自我总结 一.爬取斗图网 1.摘要 使用xpath匹配规则查找对应信息文件 将请求伪装成浏览器 Referer 防跨域请求 2.爬取代码 #导入模块 import requests #爬取网址 ...

  3. Ubuntu 一键伪装成Win 10,Kali Linux 2019 kali-undercover软件嫁接;

    今天,下午刷手机的时候,突然看到kali出了一个非常新颖的主题:该主题可以使得kali系统伪装成windows 10而变得低调起来:就像下面这样: 具体新闻链接:https://www.freebuf ...

  4. Content-Type伪装 - 将jsp伪装成css

    一.前期理论准备 1)目的:  在jsp中动态生成css语句,然后输出给浏览器解析.渲染. 2)浏览器解析文件的依据:  页面加载后,浏览器会发起各个请求去下载各种资源.  比如下载css文件,然后根 ...

  5. Windows服务项目打包成安装包(Windows服务)-----------VS2017项目程序打包成.msi或者.exe

    VS2017项目程序打包成.msi或者.exe Windows服务项目使用VS2017项目程序打包成.msi或者.exe安装包 项目打包成安装包(Windows服务) 1.安装打包插件:Microso ...

  6. VS2017项目程序打包成.msi或者.exe

    VS2017项目程序打包成.msi或者.exe 1.安装打包插件:Microsoft Visual Studio 2017 Installer Projects 打开vs2017 ,选择 工具 --& ...

  7. 爬虫实例——爬取煎蛋网OOXX频道(反反爬虫——伪装成浏览器)

    煎蛋网在反爬虫方面做了不少工作,无法通过正常的方式爬取,比如用下面这段代码爬取无法得到我们想要的源代码. import requests url = 'http://jandan.net/ooxx' ...

  8. 类中的普通方法伪装成属性 @property

    class P: def __init__(self,name,age): self.name=name if type(age) is int: self.__age=age else: print ...

  9. 如何将Python的py程序打包成跨平台的exe文件

    在编写了自己的第一个可以爬写网页源代码的程序之后,发现如果在没有安装了pythonLDLE程序的计算机上根本就跑不出来.所以开始寻找可以将程序打包成跨平台运行的exe文件. 经过自己费力的谷歌没有一个 ...

随机推荐

  1. Log4net的一个小例子

    最近想学习下log4net,写了个很简短的使用例子.用少的代码,可以保证程序运行起来. 配置文件: <configSections> <section name="log4 ...

  2. Ubuntu 安装Google浏览器

    Ubuntu自带的浏览器是火狐浏览器,使用的时候多多少少有些不方便,这里安装Googel浏览器. 下载 可以到 Ubuntu chrome去下载安装包. 安装 首先到下载的根目录 cd ~/Downl ...

  3. Python简要标准库(3)

    shelve 若只需要一个简单的存储方案,那么shelve模块可以满足你大部分的需要,你所需要的只是为它提供文件名.shelve中唯一有趣的函数是open,在调用的时候他会返回一个Shelf对象 注意 ...

  4. (vue01)vue环境搭建

    腾讯,百度,网易....这么大媒体平台咋老推送这么lower的信息? 你们不缺钱啊....我这么善良的孩子都别你们带坏了 强烈鄙视马化腾 强烈鄙视李彦宏 参考地址: https://segmentfa ...

  5. 基于SDN的IP RAN网络虚拟化技术

    http://www.zte.com.cn/cndata/magazine/zte_technologies/2014/2014_4/magazine/201404/t20140421_422858. ...

  6. OpenCV彩色图像转灰度图

    核心函数cvSplit(). #include<cv.h> #include<highgui.h> int main(int argc, char** argv) { IplI ...

  7. WCF扩展记录服务调用时间

    WCF 提供了许多扩展点供开发人员自定义运行时行为. WCF 在 Channel Layer 之上还提供了一个高级运行时,主要是针对应用程序开发人员.在 WCF 文档中,它常被称为服务模型层(Serv ...

  8. 设置select和option的文字居中的方法

    给select设置text-align:center在火狐浏览器下ok,但是在chrome浏览器无效,然后option在两个浏览器下设置text-align:center都是无效的,解决方法,设置样式 ...

  9. Struts1之html标签

    Struts1的html标签主要是为了绘制HTML页面标签元素,通过与Struts1框架的集成,增强功能 首先,在使用前,需要引入tld文件 <%@ taglib prefix="ht ...

  10. [Leetcode] Recover binary search tree 恢复二叉搜索树

    Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing ...