vs2019编译masscan

  1. vs2019编译masscan
    1. 修改处1
    2. 修改处2
    3. 修改处3

vs2019编译masscan

首先安装好 vs2019 / 2017

然后clone下来代码 git clone https://github.com/robertdavidgraham/masscan --depth=1

打开 masscan\vs10\masscan.sln 文件

直接编译会有几个错误,需要修改

修改处1

打开 masscan\src\string_s.h

定位到

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#elif defined(_MSC_VER) && (_MSC_VER == 1600)
/*Visual Studio 2010*/
# include <stdio.h>
# include <string.h>
# define strcasecmp _stricmp
# define memcasecmp _memicmp
# ifndef PRIu64
# define PRIu64 "llu"
# define PRId64 "lld"
# define PRIx64 "llx"
# endif
#elif defined(_MSC_VER) && (_MSC_VER == 1200)
/* Visual Studio 6.0 */
# define sprintf_s _snprintf
# define strcasecmp _stricmp
# define memcasecmp _memicmp
# define vsprintf_s _vsnprintf
typedef int errno_t;
errno_t fopen_s(FILE **fp, const char *filename, const char *mode);

这里是用_MSC_VER这个宏来判断VS版本,具体版本对应可以看这里,也可以直接把鼠标指在上面显示你的vs版本号; 参考:https://dev.to/yumetodo/list-of-mscver-and-mscfullver-8nd

可以直接把VS2015的版本修改成你的版本号,或者直接修改成一个大概的版本,比如vs2019 (_MSC_VER > 1900) 即可。

参考:http://www.creatapd.com/vs2017%E7%BC%96%E8%AF%91masscan/

修改处2

报错,无法解析的外部符号

工程没有包含misc-rstfilter.c,这里要手动包含

直接在Source Files里添加现有项 masscan/src/misc-rstfilter.c

参考链接:https://github.com/robertdavidgraham/masscan/issues/426

修改处3

报错 masscan\src\stub-lua.c(76,5): error C2440: “=”: 无法从“FARPROC”转换为“const lua_Number *(__cdecl *)(lua_State *)”

定位到masscan\src\stub-lua.c 这个文件,第68行

name = GetProcAddress(lib, #name); 修改为 name = (void*(*)())GetProcAddress(lib, #name);

参考https://github.com/robertdavidgraham/masscan/issues/383


成功编译


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论。