狗儿

热爱的话就坚持吧~

0%

demovfuscator docker镜像

demovfuscator,反混淆movfuscator生成的混淆二进制程序。

网上相关资料比较少,环境也不是很好搭建,所以我制作了这个docker镜像。

这两天刚开始学docker的镜像制作,所以镜像会有些臃肿,不过用还是能够用的。

写给会docker的大佬的一句话:demovfuscator程序在/root/demovfuscator./demov -h查看使用方法。然后文章后面的内容无需看下去了。

安装docker

1
2
3
4
5
6
7
8
9
10
11
#CentOS 6
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum update -y
yum -y install docker-io
service docker start
chkconfig docker on

#CentOS 7、Debian、Ubuntu
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker

启动

1
docker run --name demov -it iyzyi/demovfuscator /bin/bash

进入docker后

1
2
3
4
sudo su root
cd /root/demovfuscator/
#查看使用方法
./demov -h

向容器中导入文件

我们使用demovfuscator肯定是为了反混淆二进制文件,所以肯定要把目标文件导入到容器中。

1
docker cp /root/FILE CONTAINER_ID:/root/demovfuscator/FILE

给个例子:

1
2
3
4
[root@izwdpnodbapihwz ~]# docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3b3d7e1e7f21 iyzyi/demovfuscator "/bin/bash" 46 seconds ago Up 44 seconds demov
[root@izwdpnodbapihwz ~]# docker cp /root/mov 3b3d7e1e7f21:/root/demovfuscator/mov

容器ID和宿主机中文件路径请换成你的。

进入容器

1
docker exec -it 3b3d7e1e7f21 /bin/bash

容器ID请换成你的。

退出容器

ctrl+P+Q

使用

1
2
3
sudo su root
cd /root/demovfuscator/
./demov -o 输出文件 目标文件

给个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
root@3b3d7e1e7f21:~# cd demovfuscator/
root@3b3d7e1e7f21:~/demovfuscator# ls
LICENSE.txt asmhlp.cpp ctlelem.cpp ctlhlp.cpp demov demov.o dishlp.o elfhlp.o memhlp.hpp node.cpp stackMachine.hpp test.cpp utils.cpp
Makefile asmhlp.hpp ctlelem.hpp ctlhlp.hpp demov.cpp dishlp.cpp elfhlp.cpp hashes.h memhlp.o node.hpp tainthlp.cpp test.o utils.hpp
README.md asmhlp.o ctlelem.o ctlhlp.o demov.hpp dishlp.hpp elfhlp.hpp memhlp.cpp mov node.o tainthlp.hpp test.txt utils.o
root@3b3d7e1e7f21:~/demovfuscator# ./demov -h
The demovfuscator supports the following parameters:

./demov [-h] [-i symbols.idc] [-o patched_bin] [-g cfg.dot] obfuscated_input

-h Use for a description of the options
-i Derive symbols from the input bin and store them into symbols.idc
-o Generate a UNIX dot compatible file containing the control flow
graph (might be easier to read than IDA's graph view)
Convert the .dot file to something usable by

cat cfg.dot | dot -Tpng > cfg.png
root@3b3d7e1e7f21:~/demovfuscator# ./demov -o mov.b mov

Dockerfile

本脚本还没有检验正确性,放到这里只是为了提醒我过两天回到城里后要记得检验。

有需要的小伙伴请直接拉取镜像,不要通过本Dockerfile构建镜像。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
FROM ubuntu:16.04

USER root

RUN apt-get update \
&& apt-get -y install vim \
&& apt-get -y install python-pip \
&& apt-get -y install git \
&& apt-get -y install clang \
&& apt-get -y install cmake \
&& apt-get -y install make

RUN apt-get -y install libcapstone-dev

RUN git clone https://github.com/Z3Prover/z3 \
&& cd z3 \
&& python scripts/mk_make.py \
&& cd build \
&& make \
&& make install \
&& cd .. \
&& CXX=clang++ CC=clang python scripts/mk_make.py

RUN cd ~ \
&& git clone https://github.com/keystone-engine/keystone \
&& cd keystone \
&& mkdir build \
&& cd build \
&& ../make-share.sh \
&& make install \
&& echo '/usr/local/lib' >> /etc/ld.so.conf.d/usr-local.conf \
&& ldconfig

RUN cd ~ \
&& git clone https://github.com/kirschju/demovfuscator \
&& cd demovfuscator \
&& apt-get -y install openssl \
&& apt-get -y install libssl-dev \
&& make