用gdb调试temu及插件

在终端输入:

gdb ~/bitblaze/temu-1.0/tracecap/temu

或者直接设置好参数

gdb  --args ~/bitblaze/temu-1.0/tracecap/temu ~/vm/winxp_sp2_by_qemu.img -monitor stdio -snapshot -m 512 -load-plugin ~/bitblaze/temu-1.0/sample_plugin/plugin.so

进入gdb后:

设置temu运行参数
(gdb) set args ~/vm/winxp_sp2_by_qemu.img -monitor stdio -snapshot -m 512 -load-plugin ~/bitblaze/temu-1.0/sample_plugin/plugin.so
遇到信号SIGUSR2不输出不停止
(gdb) handle SIGUSR2 noprint
设置断点(可以用命令l边查看源码边对感兴趣的地方设置断点,也可以像下面一样直接对源代码某行设置断点)
(gdb) b  ~/bitblaze/temu-1.0/sample_plugin/main.c:156
运行
(gdb) r

用到的gdb命令
------------
r --运行
c --继续运行
b 行号或函数名 --设置断点
info b --查看断点
delete 断点号 --删除断点
disable 断点号 --使断点失效
l --查看源代码,直接按enter键执行上一条命令
n --单步(不进入)
s --单步(进入)
info source --查看当前文件路径
bt --查看当前函数栈
help 命令 --查看命令的帮助

------------

用l查看源代码首先显示的是文件vl.c,值得注意的是8985行调用的函数TEMU_init(),该函数位于文件TEMU_main.c,调用了插件源码sample_plugin/main.c里面的函数init_plugin().

接着可以对函数init_plugin()里面调用的其他函数设置断点以便追踪查看。

跟踪插件里面函数的执行很有用处,可以了解插件的编写,可尝试对如下函数下断点:

my_taint_propagate()

my_block_begin()

my_insn_begin()

temu 运行之后,终端界面会切换到qemu,当命中断点时又会切回gdb。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值