您的位置:首页 > 其它

Decaf-platform安装篇

2015-12-03 21:42 169 查看

官方文档缩略

官方链接:http://code.google.com/p/decaf-platform/wiki/build_conf

类似工作:http://blog.csdn.net/iamnewtocoding/article/details/41987835,不过这篇文章介绍的是离线安装。

主机环境:Ubuntu 12.04 i386

1.QEMU

sudo apt-get install qemu

sudo apt-get build-dep qemu

2.库

sudo apt-get install binutils-dev

sudo apt-get install libboost-all-dev

3.编译

源码下载: https://code.google.com/p/decaf-platform/
目前最新的版本是1.9,源码包里可能有Decaf和DroidScope的源码。进入decaf源码目录,进行二进制分析的话需要添加以下编译选项。

./configure --enable-tcg-taint --enable-tcg-ir-log--enable-vmi

默认打开了vmi,关闭了前两个。

make

4.创建vm

DECAF目前支持x86/ARM平台上的32位win xp,win7,linux,创建qcow格式镜像就行。网上也有qemu创建镜像的教程,按自己的需求创建即可。(对于是否使用virtualbox和vmware格式镜像那段有点无语,看来想用新版就耐心等待安装过程吧。)

然后使用qemu-system-i386安装虚拟机(可以参考教程:http://my.oschina.net/kelvinxupt/blog/265108?utm_source=tuicool&utm_medium=referral)。这里没说使用普通版本的qemu还是DECAF目录下的。

5.Linux虚拟机配置VMI

这一步对guest os为windows的用户可以跳过。

(1)将主机decaf源码目录下shared/kernelinfo/procinfo_generic/中的procinfo.c和Makefile文件拷贝到vm某目录下,然后cd到这个目录。

make

sudo insmod ./procinfo.ko

这一步安装模块时候出了 "Operation not permitted"的问题,但官方教程里说不要紧,这个模块只用来打印一些信息。

(2)更新主机decaf源码目录下shared/kernelinfo/procinfo_generic/中的procinfo.ini文件。

dmesg会打印出如下类似信息,将这些信息前面的[xxxx]去掉,然后复制到procinfo.ini里去。

[20451.579763] strName = 3.2.0-37-generic
  [20451.579764] init_task_addr  = 3246178336
  [20451.579765] init_task_size  = 3236
  ...
  [20451.579787] ti_task         = 0
将文件最上面的[info]区的total值增1,然后在文件尾端复制新的vm信息,文件格式如下。

[info]
  total = 7
  ...
  [7]
  strName = 3.2.0-37-generic
  init_task_addr  = 3246178336
  init_task_size  = 3236
  ...
  ti_task         = 0

  ;DON'T FORGET TO UPDATE info.total
官方教程里有提到一个可能的错误,我在执行过程中没有遇到:UTS_RELEASE is not defined or utsrelease.h cannot be found. Define UTS_RELEASE as a unique string by yourself.

(3)配置共享库,这个步骤是可选的。
按照官方说法,这一步是为了给库函数下钩子配置偏移量。在主机decaf源码目录下shared/kernelinfo/procinfo_generic/lib_conf目录下存放着guest os的库配置文件,配置文件的名字是dmesg命令中得到的strName.ini(如3.2.0-37-generic.ini)。配置文件中,每个共享库都会占一个区,这个区包含一个域decaf_conf_libpath,域值为不带任何路径的库文件名,如decaf_conf_libpath = libc-2.13.so,然后每个函数都会占一个域,具体信息可以通过如下命令得到,注意库文件路径。

objdump -T [path_of_shared_library_in_guest_OS] | awk '/\.text/ && $6 !~ /\(.*\)/ {printf("%-30s= %d\n",$7,"0x"$1)}'


6.启动vm

进入主机decaf源码目录i386--softmmu,然后用这里的qemu-system-i386程序起虚拟机。

./qemu-­system­-i386 -­monitor stdio ­-m 512 ­-netdev user,id=mynet ­-device rtl8139,netdev=mynet “YOUR_IMAGE”

这里添加-snapshot可以使用快照,在5里面,我自己随意弄了一个配置文件,vm就起不来了,一直在初始状态闪屏,然后把那个文件删掉了再起,进入ubuntu画面的时候出现The disk drive for /tmp is not ready yet or not present,但是过了一会还是正常进去了,但是问题是慢得根本用不了,目前也就到这里了。

——————————————————————————————————————————————————

后来我发现了问题所在,DECAF是不支持KVM加速的,所以无论是安装和启动都无比慢,此外还和虚拟机系统有关,我尝试了ubuntu 12.04和win7慢得难以操作,而xp在可接受的速度范围内,作者说ubuntu9.04还可以,另外配置打开的选项越多会越慢,最初可以先只打开vmi。

这个问题的链接:https://groups.google.com/forum/#!msg/decaf-platform-discuss/tUgnMvOlxvM/xZce-GMDdwAJ

7.编译和安装插件

插件测试用例:http://code.google.com/p/decaf-platform/downloads/detail?name=decaf_plugins.tar.gz#makechanges

新版本的DECAF运行这个插件会出错,新版直接用decaf/plugins目录下的插件就行了。

(1)编译插件

cd ./callbacktests

./configure --decaf-path=root directory of decaf

make

这一步之后可能需要重启主机,不然加载插件的时候会提示load_plugin是未知的命令。

(2)起虚拟机然后加载插件

./qemu-­system­-i386 -­monitor stdio -­m 512 ­-netdev user,id=mynet -­device rtl8139,netdev=mynet “YOUR_IMAGE”

help

load_plugin XXX/callbacktests/callbacktests.so

(2)跟踪程序

do_callbacktests calc.exe

然后在虚拟机里运行计算器,可以看到命令行里的结果,然而我在关闭计算器然后再次打开的时候,虚拟机就再没有任何响应了。。。who knows why!

暂时不知道那几个配置选项分别是哪些功能以及如何编写插件,再接再厉!目前安装过程中遇到问题最好的解决办法是google,找到论坛里遇到相同问题的帖子。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: