Decaf-platform安装篇
官方文档缩略
官方链接: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-genericinit_task_addr = 3246178336init_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,找到论坛里遇到相同问题的帖子。
Decaf-platform安装篇相关推荐
- oracle ogg下载安装,【OGG】OGG的下载和安装篇
[OGG]OGG的下载和安装篇 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~ ...
- 【OGG】OGG的下载和安装篇
[OGG]OGG的下载和安装篇 [OGG]OGG的下载和安装篇 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...
- OracleDesigner学习笔记1――安装篇
OracleDesigner学习笔记1――安装篇 QQ:King MSN:qiutianwh@msn.com Email:qqking@gmail.com 一. 前言 Oracle是当 ...
- Saltstack系列之一——安装篇
最近,和暴雪中国区带技术的一个人聊了不少,他们在测试salt,不过目前用的是puppet,服务器数量也快要1000多台.那为什么他们会去考虑测试salt.另谋他法呢,肯定是有salt一定优势的. 其实 ...
- 虚拟机软件之vmware workstation安装篇
虚拟机软件之vmware workstation安装篇 一.简单介绍 Vmware同virtualbox一样,是一款虚拟机软件,同样可以安装现今世界是主流的操作系统,是属于vmware公司开发的一款软 ...
- python学习历程-安装篇(一)
python学习历程-安装篇 之前工作中数据量很少,每天也就是用excel发一下报表,函数已经足够应付工作内容,但心里一直渴望学习更深层次一点的数据分析(崇拜那些技术大神),网上看了很多有关数据分析挖 ...
- Mongodb学习(安装篇): 在centos下的安装
安装篇 ###下载解压文件 [root@192 lamp]# wget http://fastdl.mongodb.org/linux/mongodb-linux-i686- 2.2.2.tgz ## ...
- 2、SharePoint安装篇——之安装Microsoft Office SharePoint Server 2007
上一篇1.SharePoint安装篇--之安装Active Directory 下一篇3.SharePoint安装篇--之配置Microsoft Office SharePoint Server 20 ...
- Hadoop学习(source方式安装篇)
Hadoop学习(source方式安装篇) 1.为什么要进行源码编译 网上说Hadoop官网没有提供32位的编译好的Hadoop,这其实是假的,自从2.5版本以后,官方已经提供了64位的编译好的Had ...
- mysql coreseek_centos+php+coreseek+sphinx+mysql之一coreseek安装篇
首先附上coreseek4.1版本下载 前期准备工作: yum install make gcc g++ automake libtool MySQL-client libMySQLclient15- ...
最新文章
- 自动类型转换和强制类型转换
- RHEL5.5学习--安装vmtools
- PPF(Point Pair Features)原理及实战技巧
- 关于爬楼梯的lintcode代码
- golang 随机数 实现
- 计算机网络技术班会,【主题班会】17计算机网络技术三班“走出手机幻境,拥抱真实生活”主题班会...
- Vue电商后台B站的项目需要的材料 密码等
- linux修改组的选项名字为,Linux用户、组及权限管理浅析
- linux添加删除回环地址,CentOS7如何添加本地回环地址?CentOS7添加本地回环地址的方法...
- Impala命令COMPUTE STATS的解析
- elas源码赏析(二)sobel算子3*3行列分解快速卷积
- 互联网大数据应用:浅谈用户行为分析
- QT从入门到入土系列教程(一)——Qt5.14.2安装教程和VS2019环境配置
- 智能优化算法:侏儒猫鼬优化算法-附代码
- JavaScript随手笔记之--html拼接语句传递json数据
- 越狠越有饭吃,越不狠越没饭吃
- 数据库的应用之(智慧城市)
- 出海日报|巴西电动滑板车Grin与“巴西小黄车” Yellow合并了;印度OYO Rooms要花5000万美元发展菲律宾市场...
- 摸鱼三天,我写了一个通用的组建树TreeUtil工具
- 域格4G模块TTS语音使用方法