[tor-bugs] #25483 [Obfuscation/Snowflake]: Windows reproducible build of snowflake

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu May 31 03:50:01 UTC 2018


#25483: Windows reproducible build of snowflake
-----------------------------------+--------------------------
 Reporter:  arlolra                |          Owner:  sukhbir
     Type:  project                |         Status:  assigned
 Priority:  High                   |      Milestone:
Component:  Obfuscation/Snowflake  |        Version:
 Severity:  Normal                 |     Resolution:
 Keywords:  TorBrowserTeam201805   |  Actual Points:
Parent ID:  #19001                 |         Points:
 Reviewer:                         |        Sponsor:
-----------------------------------+--------------------------

Comment (by cmm323):

 The problem in step 3 is that the name mangling schemes used by the two
 compilers are different and thus the linker cannot find the appropriate
 function in the object file generated by the other compiler. However, this
 is a common problem and a popular solution is to export method calls as C
 functions. Since C doesn't have namespaces there is no name mangling
 issue. These functions can be exported as a DLL wrapper (see [1] and [2]
 for more information). Go-Webrtc wrapper by asicerik[3] wraps WebRTC
 functions called by Snowflake, in C functions and export them as a runtime
 DLL. I have tested the functionality of this wrapper on Windows. Cross-
 compiling the wrapper on a Linux machine, however, seems to be harder. The
 wrapper uses Windows header and some other WebRTC headers. I believe that
 we can use the Ninja[4] and GYP build systems that are used to build the
 WebRTC library to cross-compile the wrapper as well. I think the solution
 is to add a target to Ninja build system to build the wrapper with WebRTC
 library as a dependency. Unfortunately, I don't know enough about Ninja
 build system to do that and won't have the time to research it anytime
 soon.

 [1]- http://www.mingw.org/wiki/Visual_Basic_DLL
 [2]- https://www.transmissionzero.co.uk/computing/building-dlls-with-
 mingw/
 [3]- https://github.com/asicerik/go-webrtc
 [4]- https://ninja-build.org/manual.html

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/25483#comment:39>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list