0

I have an app that bypasses the default sound engine of Windows and uses our custom sound engine with a sound driver like ASIO. The engine is implemented as a .DLL file that's compiled with GCC. And Also, there are other .DLLs that are required by my engine.

When I want to publish my app to the store as a UWP app, the certification kit gives me some errors like below:

Windows security features test

File C : \Program Files\WindowsApps\MyAppLTD.MyApp_1.0.1.0_x64__8yvwa9s081fpy\MyAppaudioengine - win.dll has failed the DBCheck check.
File C : \Program Files\WindowsApps\MyAppLTD.MyApp_1.0.1.0_x64__8yvwa9s081fpy\libgcc_s_seh - 1.dll has failed the DBCheck check.
File C : \Program Files\WindowsApps\MyAppLTD.MyApp_1.0.1.0_x64__8yvwa9s081fpy\libstdc++ - 6.dll has failed the DBCheck check.
File C : \Program Files\WindowsApps\MyAppLTD.MyApp_1.0.1.0_x64__8yvwa9s081fpy\libwinpthread - 1.dll has failed the DBCheck check.

Supported API test


API RtlAddFunctionTable in kernel32.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API MessageBoxW in user32.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API ___lc_codepage_func in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API ___mb_cur_max_func in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API __doserrno in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API __iob_func in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API __pioinfo in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _aligned_free in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _aligned_malloc in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _amsg_exit in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _errno in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _exit in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _fdopen in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _filelengthi64 in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _fileno in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _fstat64 in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _initterm in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _lock in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _lseeki64 in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _read in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _snwprintf in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _strnicmp in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _unlock in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API _write in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API abort in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API calloc in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API fclose in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API fflush in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API fgetpos in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API fopen in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API fputc in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API fputs in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API fread in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API free in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API fsetpos in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API fwprintf in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API fwrite in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API getc in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API getenv in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API getwc in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API isspace in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API iswctype in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API localeconv in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API malloc in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API memchr in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API memcmp in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API memcpy in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API memmove in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API memset in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API putc in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API putwc in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API raise in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API realloc in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API setlocale in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API setvbuf in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API signal in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API sprintf in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API strchr in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API strcmp in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API strcoll in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API strerror in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API strftime in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API strlen in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API strncmp in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API strtoul in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API strxfrm in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API towlower in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API towupper in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API ungetc in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API ungetwc in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API vfprintf in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API wcscoll in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API wcscpy in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API wcsftime in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API wcslen in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API wcsxfrm in msvcrt.dll is not supported for this application type.libstdc++ - 6.dll calls this API.
API RtlAddFunctionTable in kernel32.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API __iob_func in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API _amsg_exit in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API _initterm in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API _lock in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API _unlock in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API abort in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API calloc in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API free in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API fwrite in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API malloc in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API memcpy in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API memset in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API realloc in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API signal in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API strlen in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API strncmp in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API vfprintf in msvcrt.dll is not supported for this application type.libgcc_s_seh - 1.dll calls this API.
API CoInitialize in ole32.dll is not supported for this application type.portaudio_x64.dll calls this API.
API OpenFile in kernel32.dll is not supported for this application type.portaudio_x64.dll calls this API.
API CharLowerBuffA in user32.dll is not supported for this application type.portaudio_x64.dll calls this API.
API GetDesktopWindow in user32.dll is not supported for this application type.portaudio_x64.dll calls this API.
API RtlAddFunctionTable in kernel32.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API __C_specific_handler in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API __iob_func in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API _amsg_exit in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API _beginthreadex in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API _endthreadex in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API _errno in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API _initterm in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API _lock in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API _setjmp in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API _strdup in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API _ultoa in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API _unlock in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API abort in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API calloc in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API exit in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API fprintf in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API free in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API fwrite in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API longjmp in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API malloc in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API memmove in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API memset in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API printf in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API realloc in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API signal in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API strlen in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API strncmp in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API vfprintf in msvcrt.dll is not supported for this application type.libwinpthread - 1.dll calls this API.
API CoInitialize in ole32.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API RtlAddFunctionTable in kernel32.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API GetForegroundWindow in user32.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API MessageBoxW in user32.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API ___lc_codepage_func in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API ___mb_cur_max_func in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API __iob_func in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API __setusermatherr in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API _aligned_free in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API _aligned_malloc in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API _amsg_exit in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API _errno in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API _exit in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API _initterm in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API _lock in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API _snwprintf in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API _unlock in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API abort in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API asin in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API calloc in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API div in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API exit in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API fclose in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API fopen in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API fprintf in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API fputc in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API free in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API freopen_s in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API fwprintf in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API fwrite in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API localeconv in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API log10 in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API malloc in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API memcpy in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API memmove in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API memset in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API printf in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API raise in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API realloc in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API signal in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API strerror in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API strlen in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API strncmp in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API tan in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API vfprintf in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API wcscpy in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.
API wcslen in msvcrt.dll is not supported for this application type.MyAppaudioengine - win.dll calls this API.

I research on Google and I found out that I also need to sign that .DLL file which is my custom sound engine. But some says that I can't use these kinds of DLLs in a UWP app. And even if I need to sign them, I don't have a .sln of the DLL projects. I tried to sign my DLL with SignTool but no luck. I built my app with Unity and it works on only 64 bit CPUs.

My question is; can I really sign a GCC compiled DLL? If I can't, please suggest me a few options to pass WACK using my engine.

Edit The sound engine works perfectly on Unity windows standalone build but it doesn't work at all if I built it with UWP. This problem is also related to this security thing I guess

tpbafk
  • 501
  • 5
  • 26
  • Can GCC even produce a dll? First time I hear it. Always thought that GCC produces only Linux's libraries like .a or .so – ALX23z Mar 19 '21 at 07:59
  • Actually, it could but there are a few steps to make it work. Our engine team did really hard work on this. Also the engine works in standalone but won't work in UWP – tpbafk Mar 19 '21 at 08:05
  • mingw-w64 v8 introduced [UCRT for Windows Store Apps (-lucrtapp)](http://mingw-w64.org/doku.php/versions). – ssbssa Mar 22 '21 at 11:33

1 Answers1

2

Signing a DLL is pretty straightforward. That is a cryptographic signature which can be applied to any DLL, even a resource-only DLL (which isn't even compiled). GCC is not the problem.

However, that signature will not solve the problems you have with msvcrt.dll. The latter is not a GCC DLL, but a Microsoft DLL, and Microsoft says you can't use that DLL on their UWP platform. No signature is going to fix that.

MSalters
  • 173,980
  • 10
  • 155
  • 350
  • So I can't use my engine as a DLL on a UWP application, right? If so, is there any another way to make it work? – tpbafk Mar 19 '21 at 08:12
  • @tpbafk: The obvious way would be to compile it with Visual Studio. It has far more modern runtime DLL's which are supported on UWP. – MSalters Mar 19 '21 at 08:17