当前位置: 首页 > C
  • C/C++ 代码安全(五)

    C/C++ 代码安全(五)

    规则: 不要使用rand( ) 函数生成伪随机数,这个函数不保证不保证产生随机序列质量,比较好预测。使用random( )  替换。 规则: 正确的设置伪随机数生成器的种子,在random() 之前调用srandom( ) ,以设置伪随机数生成器。 规则: 不要向asctime( ) 函数提供无效数据。 规则: 确保控制永远不会到达非void 函数的结束位 ...

    阅读全文
    作者:root | 分类:C, C/C++
  • C/C++ 代码安全(四)

    C/C++ 代码安全(四)

    规则: 不要访问已经释放的内存。使用引用被free( ) 或者 realloc( ) 函数调用释放的内存指针值是未确定的。 需要注意的一点是,realloc( )  可能会释放原来的指针。 规则: 在不需要时释放动态分配的内存。 规则: 动态分配和复制包含灵活数组成员结构。为了避免未定义行为,包含灵活数组成员的结构应该始终动态分配, ...

    阅读全文
    作者:root | 分类:C, C/C++
  • C/C++ 代码安全(三)

    C/C++ 代码安全(三)

    规则: 确保无符号整数运算不产生回绕,如果底层整数表示无法表示无符号整数运算的结果,该值可能发生回绕。在8086处理器上整数溢出也就仅仅会发生一个标志位修改罢了。所以我们还是要注意整数溢出发生回绕现象。 C /*错误实例,这很有可能发生回绕*/ void func(unsigned int ui_a,unsi ...

    阅读全文
    作者:root | 分类:C, C/C++
  • C/C++ 代码安全(二)

    C/C++ 代码安全(二)

    规则: 声明的每一个对象都必须具有正确的存储期。 对象的生命周期是程序执行的一部分,在此期间保证对象保留存储空间。任何形式的访问已经超出生命周期的行为都是未定义的。 引用超出生命周期的对象,可能导致攻击者执行任意代码。 规则: 在使用前声明表示符,不要隐含类型。 规则: 不要声明具有冲突链接类别的表示 ...

    阅读全文
    作者:root | 分类:C, C/C++
  • C/C++ 代码安全(一)

    C/C++ 代码安全(一)

    规则1: 不通过链接创建通用字符串。 C11标准:如果匹配通用字符名称的字符序列由符号链接生成,将产生未定义行为。 C #define assign(uc1,uc2,val) uc1##uc2 = val void func(){ int u0401; assign(u04,01,4); printf("u0401 = %d\n",u0401); } int main() ...

    阅读全文
    作者:root | 分类:C, C/C++
  • How to make Shared Library and Static Library With GCC on Linux

    How to make Shared Library and Static Library  With GCC on Linux

    前言 今天做一个修改Glibc 源码的需求的时候,我想到了使用动态库的方式完成我的目的。但是我很久之前做过相关的东西,现在忘了,遂上百度,谷歌再次学习,正好总结下,以防后边忘记。 首先 我们的函数: cac_test.h double  test(double a,double b); cac_test.cpp double  test(double a,double b){ return (A+B)/2; ...

    阅读全文
    作者:root | 分类:C, C/C++
  • C语言內嵌汇编

    C语言內嵌汇编

    说明:学校开设的《微机原理与接口》讲的是8086汇编是Inter 的汇编,可是GCC 使用的是AT&T汇编。 AT&T 和 Inter 汇编的一些区别 AT&T Inter 寄存器的命名规则 %eax eax 源目的操作顺序 %eax %ebx ebx eax 常数立即数的格式 %movl $_value ebx mov eax,_value 把value的地址放进eax寄存器 movl $0xd00d ,%eb ...

    阅读全文
    作者:root | 分类:C, C/C++
  • 探秘C time.h

    探秘C time.h

    前言 这是现阶段探秘系列的最后一个库了,前前后后我们也经历了这么多时间,花了很多的精力,不敢说精研C 标准库,只能说确实有所了解,有所收获。期间看过英文原版的书,下过glibc 的源代码。中间还敢上了金工实习,再网吧还写了博客。今天暂时结束了,但是还是那句话“C 无所不能,只是我们的能力还不行。 __start 在 ...

    阅读全文
    作者:root | 分类:C, C/C++
  • 探秘 C stdlib.h

    探秘 C stdlib.h

    前言 探秘C标准库系列基本已经快到结尾了,应该还有几篇要写。随着探秘系列的结束,我对C的理解也更多了,就像一句话说的好“C 无所不能,就是我能力还不够” 对于现阶段的计算机体系,C确实无所不能,至少再底层上这样。 __start stdlib.h 这个库就是一个大杂烩,C标准几乎把乱七八糟的东西都放在这里了,既然本身就没有 ...

    阅读全文
    作者:root | 分类:C, C/C++
  • 探秘stdio.h 实现与使用

    探秘stdio.h 实现与使用

    前言 之前,总结了stdio.h的设计,不得不说它真是C 库中内容最多的库,所以我只能再开这篇,将他们一分为二来学习了。这篇主要介绍的就是stdio库的实现。 __start stdio 的实现。它的实现其实在于两个部分: 数据结构FILE 的内容 与操作系统相互作用以执行输入输出的低级源语。 一些通用的结构 </h3> #define   ...

    阅读全文
    作者:root | 分类:C, C/C++