注:进入到decaf镜像中只可访问/app文件
1.启动QEMU
sudo docker run -it -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME/.Xauthority:/home/db/.Xauthority --net=host --mount source=decafvolume,target=/app decaf_startubuntu /bin/bash
docker只有以–security-opt seccomp=unconfined的模式运行container才能利用GDB调试
sudo docker run -it --mount source=decafvolume,target=/app decaf /bin/bash
2.进入交互式容器
sudo docker exec -it 829c33bbeebb /bin/bash
3.安装nano
sudo apt-get install -y gedit
4.上传文件到QEMU路径下
sudo cp /home/apt/Sample.zip /var/lib/docker/volumes/decafvolume/_data/
需要说明的是:
实际系统路径/var/lib/docker/volumes/decafvolume/_data/对应于虚拟系统Ubuntu16.04中的/app路径,可在windowsXP通过cmd命令行”//10.0.2.2”访问到与Ubuntu16.04下/app对应的qemu路径
备份与恢复:
sudo docker commit -a="ly" -m="backup" 614485e72a2e
docker run -it decaf_backup/123456
使用min_apitracer步骤记录:
apt-get update&&sudo apt-get install -y gedit
load_plugin ../plugins/min_apitracer/apitracer.so
trace_by_name RFQ.exe /app/trace_7.txt ../plugins/min_apitracer/sample_config
使用键盘记录器检测插件:http://blog.chinaunix.net/uid-13746440-id-4370955.html
编译decaf时需要:./configure --enable-tcg-taint --enable-vmi make
在plugins插件路径下: ./configure --decaf-path=/decafroot/DECAF/decaf/
最后make
加载插件:
启用键盘记录检测:enable_keylogger_check LOCATION_OF_LOG_FILE
停止检测:disable_keylogger_check
ls -al 查看详细信息
MakeFile打印字符串:
(
w
a
r
n
i
n
g
"
123
"
)
l
i
n
u
x
下
只
查
看
文
件
夹
:
l
s
−
F
∣
g
r
e
p
"
/
(warning "123") linux下只查看文件夹:ls -F |grep "/
(warning"123")linux下只查看文件夹:ls−F∣grep"/"
找到当前路径下所有的.o文件:find . -name ‘*.o’ 单引号很重要
查找路径下的文件 find ./ -name DECAF_callback.o
安装gdb :apt-get install gdb
gdb调试总结:
l 一次查看10行
b 行号 下断
info br 查看断点
r 运行
先启动docker:
sudo docker run -it --security-opt seccomp=unconfined -e DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v $HOME/.Xauthority:/home/db/.Xauthority --net=host --mount source=decafvolume,target=/app decaf_shared_succ /bin/bash
docker只有以–security-opt seccomp=unconfined的模式运行container才能利用GDB调试
再(需要进到i386-softmmu目录下)单独启动qemu:
./qemu-system-i386 -monitor stdio -m 512 -net user,smb=/app/ -netdev user,id=mynet -device rtl8139,netdev=mynet /app/win7.qcow2 -s
-S 表示guest虚拟机一启动就会暂停
-s 表示监听tcp:1234端口等待GDB的连接
清除已退出的容器:
sudo docker rm $(sudo docker ps -qf status=exited)`
启动一个停止的镜像:
sudo docker start 容器id
gdb调试qemu:
调试qemu分为两种:
(1)调试qemu启动运行的虚拟机
(2)调试qemu源码
我们目前采用第二中方法;gdb --args ./qemu-system-i386 -m 512 -hda /app/win7.qcow2
关于qemu的一些命令:
-hda 选项用来指定磁盘镜像文件;-cdrom 用来指定 CD-ROM 或者 ISO 镜像来作为虚拟机的光驱。-m 选项指定虚拟机所使用的内存大小 (此种情况下,内存大小申请为 512MB;你可以根据自己的需要和硬件状况来决定) 。