最近使用valgrind检查代码时,发现了一个比较鬼诡的bug:Syscall param write(buf) points to uninitialised bytes(s) 。在百度上找了很长时间的解决方法,但没有找到。最后用google搞清楚了原因,并解决了这个问题。
这是我主要参考的英文网站:http://comments.gmane.org/gmane.comp.de...
分类:
其他好文 时间:
2015-07-31 10:32:59
阅读次数:
168
valgrind 调试出现如题所示的错误,原因是存取文件名的空间被释放了源代码: cfg->snteam_cfg->snt.score.nd.wrd_dict_db_fn=cfg->wrd_dict_db_fn;修改之后: cfg->snteam_cfg->snt.heap =...
分类:
其他好文 时间:
2015-07-29 13:36:15
阅读次数:
297
一、简介iptables是可以实现netfilter框架的一个命令,通过调用syscall使内核空间的防火墙规则和用户空间交互。配置文件/etc/sysconfig/iptables-config/etc/sysconfig/iptables二、四表五链模型【结合不同的扩展】iptables可以针对OSI二、三、四、七层进行报文进行规则匹配ipt..
分类:
其他好文 时间:
2015-07-25 10:50:16
阅读次数:
265
/* * sysutil.c * * Routines to make the libc/syscall API more pleasant to use. Long term, * more libc/syscalls will go in here to reduce the number of...
分类:
其他好文 时间:
2015-07-13 15:59:26
阅读次数:
175
glibc除了提供最底层的C运行库,还封装了kernel提供的API,程序通过glibc进行系统调用(syscall)。应用层面的C库,比如OpenSSL库:/usr/include/openssl比如函数SSL_set_session查看手册 manSSL_set_session引入头文件#inc...
分类:
其他好文 时间:
2015-06-12 11:20:57
阅读次数:
155
1 首先系统调用号大大的不同;mac64和linux32的系统调用号也不同(虽然局部可能有相同)2 mac64的系统调用号在:/usr/include/sys/syscall.h可以查到,但是调用的时候其值要加上0x2000000,可以写一个宏处理:%define mk64 0x2000000+使用方式如下:mov rax,mk64 1 ;exit NO
mov rdi,0...
分类:
系统相关 时间:
2015-04-13 18:57:06
阅读次数:
174
背景知识基本交代清楚了,下面我们实际写一个小例子看一下。代码的功能很简单,显示一行文本,然后退出。我们使用了syscall中的write和exit调用,查一下前面的调用号和参数,我们初步总结如下:write(即sys_write)调用号为1,需传递3个参数unsigned int fd
const char *buf
size_t countexit(sys_exit)调用号为60,只需传递一个错误...
分类:
系统相关 时间:
2015-04-12 10:41:21
阅读次数:
395
经过上一篇的铺垫貌似可以很轻松的用汇编写出mmap的代码来,可仔细一看,还是有不少问题需要解决:1.系统调用mmap如果出错并不直接返回MAP_FAILED(-1),而是一个“类似”值;C库中的mmap函数对其做了包装,使其最终返回-1;如果我们直接调用mmap syscall,则这些事必须自己来做。2.C库函数如果出错会设置errno的值,而在汇编中没法直接用:extern errno的方法使用外...
分类:
系统相关 时间:
2015-04-12 10:40:03
阅读次数:
328
使用gdb跟踪分析一个系统调用内核函数(您上周选择那一个系统调用),系统调用列表参见http://codelab.shiyanlou.com/xref/linux-3.18.6/arch/x86/syscalls/syscall_32.tbl ,推荐在实验楼Linux虚拟机环境下完成实验。根据本周所...
分类:
其他好文 时间:
2015-04-05 06:22:43
阅读次数:
207
(一)首先,系统调用有两种方式: 0x80、0x81、0x82三个中断号; 专门指令(至少分Intel架构和ARM架构),比如SYSENTER/SYSCALL(二)话分两头,先说中断向量方式 这是终端向量定义的部分代码:INTERRUPT(0x7d)INTERRUPT(0x7e)USE...
分类:
其他好文 时间:
2015-04-02 06:34:56
阅读次数:
322