VS二零零六编写翻译器下ACE的布局,CPP代码审计
分类:计算机编程

C/CPP代码审计<splint/flawfinder>

原创: 情书吖

图片 1

         前几天偶然接触到了一个代码审计产品,公司创建者是前阿里巴巴安全总监。结局的感想就是:代码审计工具这个行业,果然不是那么轻易立足的。

        纵然网上五花八门的代码审计工具排名,fortify的主流地位也是没有人质疑的。然而在实际使用过程中,面对C/CPP时,商业级的fortify处理结果却并不是很理性。

        废话不多说,进入今天的正题,今天为大家介绍两款C/CPP代码审计工具的安装和使用,安装方式和平台固然很多,<我不是懒吗/逃>,在这里为大家介绍最简单实用的安装方式和平台选择,希望可以为C/CPP编程狗</???>大佬们提供安全开发方面的帮助。

<splint>

        splint是一个GNU免费授权的 Lint程序,是一个动态检查C语言程序安全弱点和编写错误的程序。Splint会进行多种常规检查,包括未使用的变量,类型不一致,使用未定义变量,无法执行的代码,忽略返回值,执行路径未返回,无限循环等错误。

        链接: 密码:xjyb

        安装:后期可根据需求提供其它平台安装方式,在此只介绍 windows平台下的安装并附上永久下载链接。

        1.首先解压。如果解压到C:/splint-3.1.1则不用调整环境变量。可执行文件在bin下。  

        如果放到其它路径下,需要修改环境变量。在用户变量中加上  

        LARCH_PATH - <你安装splint的路径>/lib   

        LCLIMPORTDIR - <你安装splint的路径>/imports   

        include - 系统include文件所在的目录。

       (其实include这个参数是从谷歌一个论坛下找的,说的很模糊,实验的结果就是include参数指向了VC 6.0下的include,,不知道这样做是灵性还是蠢,欢迎指正  /逃)

        2.在用户变量Path中加上splint.exe所在的路径,方便以后调用。  

        3.使以上的修改生效:注销当前用户然后再次登录。

图片 2

 

图片 3

        附上成果和-help信息,客户体验说下,该工具更倾向于检验语法错误,其实这个功能编译器也在做,但是角度不同,splint的角度是安全开发角度。

        另外值得吐槽的时,如果你include了自定义头,splint会直接报错,当然这也是的的确确可以理解的。

 

<flawfinder>

        flawfinder让我先吐槽两句平复下内心,其实网上有各种安装包,当然官方也有,好端端的下载,解压,安装,,,然后你就会发现各种官方没提到的依赖问题</???像我这么蠢的还有仨,官方没有考虑到吗???>

        flawfinder的优势是词法扫描和分析,内嵌了一些漏洞数据库,如缓冲区溢出、格式化串漏洞等,扫描快,按照代码中漏洞的风险等级对漏洞进行划分,可以快速找到存在的问题,误报较高。

        在周转了各个平台之后,windows/parrot/kali/centos。。。。。。最终,居然Ubuntu的官方源里有安装包。

        喏,就这一句话~

        sudo apt-get install flawfinder

        然而吐槽这么多,并没有让在读的你少走弯路的意思,只是提供了最偷懒的途径。我也喜欢走弯路,走别人没走过,没走通的路,或许这个过程才是我们真正享受的呢。

        咳咳,正题!

        图片 4

 

图片 5

        截不全就截不全吧,我们可从-help中看到它的大部分功能了。

        这里说下客户体验:算的上伪商业级的代码审计工具了,换句话说,误报几率还是挺大的,但是结果进行了很好的分类统计,并进行安全风险等级评估,命令行界面做到这种程度也是良心了。

        喏,工具介绍就到这里啦。如有不足,欢迎指正。

 

 

我可以弱弱的丢个个人微信公众号么,

如果你们喜欢黑客,喜欢parrotsec,喜欢二次元,期待认识大家。

才不是什么萝莉控,只是喜欢的女孩纸碰巧是萝莉罢了,哼~

 图片 6

需要的工具:

C语言没有图形库,似乎编写C语言的程序就要面对那个黑黑的控制台窗口,这也是很多人对C语言提不起兴趣的原因,但我们可以使用第三方的图形库,比如说open GL,directX,SDL等等,其中SDL比较小巧,并且是开源的,适合入门者学习。有了图形库以后我们就可以编写界面丰富多彩的程序了,你会发现一片新的天地!
   SDLSimple DirectMedia Layer)是一个自由的跨平台的多媒体开发包,适用于 游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件。
   SDL图形库包括八个子系统:视频、音频、事件、光驱、文件读写、游戏杆、时间、进程。最经常使用的是前三个,每一个子系统都有专门的安装包:
    SDL安装包:

说一下VS2008学习ACE的配置方法,至于VS2008的安装就不必多说了。

  • jdk-7u11-windows-x64.exe 
  • eclipse-SDK-4.2.2-win32-x86_64.zip
  • cdt-master-8.1.2.zip
  • mingw-get-inst-20120426.exe

图像子系统安装包:

 

A. eclipse与JDK的安装这里就不做赘述,安装CDT插件: 安装CDT插件

1、ACE的下载

             1>下载CDT插件:可以在 选择适合你的eclipse的版本 。
             2>安装CDT插件:不用安装,解压缩到eclipse相同的目录就可以,即是将CDT压缩包解压后的features、plugins整个文件夹复制到Eclipse安装文件里,重新启动Eclipse即可。
B. 安装MinGW

音频子系统安装包:

最新版本全在这里:http://download.dre.vanderbilt.edu/

             1> 配置环境变量(非常重要)

版本太多了,可以选择http://download.dre.vanderbilt.edu/previous_versions/ACE-6.0.0.zip或者http://download.dre.vanderbilt.edu/previous_versions/ACE-6.0.0.tar.gz,这两者可能只是格式上的不同,具体未查证,但均可使用。

             步骤如下:打开:“计算机->属性->高级系统设置->环境变量->系统变量”编辑如下系统变量:

这三个安装包都包含了这样两个目录:include和lib。其中include目录存放的头文件,就像C语言自带的头文件一样,要使用SDL系统的函 数,必须包含相应的头文件,lib目录下存放的是一些静态库.lib)和动态库.dll),这些库里存放的是函数的二进制代码,你在你的程序里包含了 头文件以后,还要加载相应的库,否则编译器找不到相应的函数的代码会报错的,C语言自带的库默认就添加到了你C语言程序里了,不用显示自己管,但SDL不是C语言自带的库,所以必须自己添加这些库。
要添加这些库,有两种方式,第一种是把头文件,库文件放到系统目录下,让编译器能找的到就可以了;第二种,自己建一个目录包含头文件、动态库、静态库,然后在编译器里设置工程属性就可以了。建议使用第二种方式。下面就这两种方式分别说明。

2、ACE的编译

             假设我的MinGW安装在D盘,这只是我的安装路径,根据你自己的安装路径更改!
             变量名  变量值
             PATH  D:MinGWbin;(这个路径应该放在第一位!)
             LIBRARY_PATH  D:MinGWlib
             C_INCLUDEDE_PATH  D:MinGWinclude

第一种方式,首先将SDL-devel-1.2.14-VC8.zip解压后会有两个目录:

将下载到的压缩文件解压到C盘根目录,当然其他盘其他目录也可以,路径配置正确就好了。

             CPLUS_INCLUDE_PATH  D:MinGWinclude

图片 7

解压后的路径为C:/ACE_wrappers,可以看到C:/ACE_wrappers目录下sln文件只有8、9和10三个版本,9是用VS2008打开的,10是VS2010。创建一个config.h文件,将下面三行粘贴进去,放在C:/ACE_wrappers/ace目录下

             图片 8

然后到VS2005的安装目录下找到一个名叫include的目录,一般vs2005默认的安装目录是c:Program FilesMicrosoft Visual Studio 8VC或D:Program FilesMicrosoft Visual Studio 8VC,特别提醒vs必须安装到英文目录名下,否则SDL不能使用,SDL对中文支持不好。vs2008/vs2010也同样。

#define ACE_HAS_STANDARD_CPP_LIBRARY 1

             2>更改

图片 9

//#define ACE_HAS_MFC 1(这句须注掉,不然会有内存泄露)

             D:MinGWbin底下的"mingw32-make.exe"更名为"make.exe",因为Eclipse使用时预设是用系统里的"make"这个文件名,而不是"mingw32-make"。当然如果你不想改MinGW中的,也可以修改Eclipse中的设定,在"make targets view"中新增一个task时,"build command"取消"use default",使用"mingw32-make"。另外在"project properties->make project"中将"make"改为"mingw32-make"。但是建议采取第一种较为简单的办法!

在vc下有一个include目录,在include目录下建立一个新目录,比如说SDL,将解压后的include目录下的文件拷贝到新建的SDL目录下。

#include "ace/config-win32.h"

             图片 10

D:Program FilesMicrosoft Visual Studio 8VC

然后打开C:/ACE_wrappers/ace/ace_vc9.sln,生成(B) ——>生成ACE(U),编译需要一段时间。编译完成后看目录C:/ACE_wrappers/lib下,ACEd.dll和ACEd.lib文件,要的就是这两个。

             3>测试

将解压后的lib目录下后缀为lib的文件拷贝到安装目录下一个名叫lib目录下,将后缀为dll的文件拷贝到C:WINDOWSsystem32下。对SDL_image-devel-1.2.10-VC.zip和SDL_mixer-devel-1.2.11-VC.zip做同样的处理。

3、设置环境变量

             (1)安装完成后“系统环境变量”的设定说明

第二种种方式,首先建立一个目录,假定名字为SDL,在目录下建三个文件夹:include、dll、lib,将下在下来的安装包解压,比如SDL-devel-1.2.14-VC8.zip解压后会有两个目录:

我的电脑——>属性——>高级选项卡——>环境变量按钮,用户变量组里新建,变量名:ACE_ROOT,变量值:C:/ACE_wrappers;编辑变量名Path,添加:

本文由pc28.am发布于计算机编程,转载请注明出处:VS二零零六编写翻译器下ACE的布局,CPP代码审计

上一篇:eclipse安装JAVA反编写翻译插件 下一篇:没有了
猜你喜欢
热门排行
精彩图文