VS2013源码编译nmap 7.91

执行编译时间是2020-10-28,当前nmap最新版本是7.91.

1.下载源码

SVN check out : nmap-mswin32-aux (https://svn.nmap.org/nmap-mswin32-aux) 和 nmap(https://svn.nmap.org/nmap) ,需要放在同一目录下即可。(nmap项目里面的附件目录已经设置了相对路径)

2.源码编译

a.下载安装VS2013 , 最好是用2013的VS,一开始我使用的是VS2019 进行的编译,报sprintf重定义,尝试做了修改,但涉及的内容比较多,后来就换成VS2013了。(有用VS2019编程成功麻烦提供下修改过程

b.用VS2013打开 /nmap/mswin32/nmap.sln, 进行编译。整个编译过程遇到一个问题:

 (1)无法打开nmap.rc:could not open nmap.rc

解决方法:在mswin32目录有一个nmap.rc.in 文件, 修改后缀名,去掉.in,重新编译。 这时会报nmap.rc里面有不可识别的字符:%0x40。 点击编辑该资源文件,修改如下:

        FILEVERSION @@COMMAVERSION@@      修改为:FILEVERSION 1,0,0,1

        VALUE "FileVersion", @@FILEVERSION@@  修改为:VALUE "FileVersion", "@@FILEVERSION@@\0"

至此,能编译成功了。

3.nmap运行

a.使用编译生成的nmap执行命令,会报缺少:zlibwapi.dll 和 libssh2.dll,分别在“/nmap/libz/** ”和 “/nmap/mswin32/**”目录下面找到对应的dll放入可执行程序同一目录即可。(debug编译的用debug的dll,release编译的用release的dll)。

b.这时执行-sV或脚本命令是会报“nmap could not locate nse_main.lua” 的错误信息,这是因为没找到这个文件。看了下源码,nmap有好几种定位文件的方法:

在nmap.cc的nmap_fetchfile_sub函数里,其中一个是通过环境变量的路径去查找,我的解决方案就是创建了“NMAPDIR”的环境变量,指向“/nmap”的目录(mswin32的上一个目录)。重新编译,执行命令,成功获取目标端口服务的版本信息。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值