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

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

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

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

安装docker

#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

启动

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

进入docker后

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

向容器中导入文件

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

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

给个例子:

[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和宿主机中文件路径请换成你的。

进入容器

docker exec -it 3b3d7e1e7f21 /bin/bash

容器ID请换成你的。

退出容器

ctrl+P+Q

使用

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

给个例子:

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构建镜像。

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
Last modification:February 19th, 2020 at 11:12 pm