There are many ways to build BadVPN for Windows. It can be built with MSVC or GCC compilers, and it be built natively from Windows or cross-compiled from Linux. However, this document only describes building natively from Windows using MSVC. 1. Get a MSVC compiler, e.g. from Visual Studio, Visual Studio Express or from the Windows SDK. 2. Choose a directory where built stuff will be installed into; we call it . 3. Build the NSS library. NOTE: you can also use the prebuilt version in the BadVPN windows download. - Install MozillaBuild: http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe . - Download the NSS source code that includes NSPR. As of the time of writing the latest version was 3.13.5: https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_13_5_RTM/src/nss-3.13.5-with-nspr-4.9.1.tar.gz . Extract it to c:\ so that you have C:\mozilla . - Open a terminal with access to the Visual Studio compilers and other tools. E.g. if you use the Windows SDK, activate the following start menu item: Programs -> Microsoft Windows SDK v7.1 -> Windows SDK 7.1 Command Prompt. - In this terminal, run: > c:\mozilla-build\start-l10n.bat - Either a new terminal opens with a bash shell, or a bash shell starts in the existing terminal. Either way, enter the following commands to finally build NSS: (here paths are written as /driveletter/...) $ export OS_TARGET=WINNT $ export BUILD_OPT=1 $ cd /mozilla/security/nss $ make nss_build_all Now use a script shipped with the BadVPN source to copy the resulting files into appropriate directories within : $ /scripts/copy_nss ../../dist 4. Build the OpenSSL library. NOTE: you can also use the prebuilt version in the BadVPN windows download. - Install ActivePerl. - Download the OpenSSL source code and extract it. - Open a compiler terminal, as was done when building NSS. Inside it, run: > cd > perl Configure VC-WIN32 --prefix= > ms\do_ms > nmake -f ms\ntdll.mak To copy the results into : > nmake -f ms\ntdll.mak install 5. Build BadVPN. - Install CMake. During installation, select the option to include cmake in PATH to avoid having to type a long path into the terminal. - Create an empty folder where BadVPN will be built; call it . - Open a compiler terminal. Inside it, run: > cd > cmake -G "NMake Makefiles" -DCMAKE_INSTALL_PREFIX= -DCMAKE_BUILD_TYPE=Release > nmake To copy the results into : > nmake install