I need the kernel32 functions to export them, that's the trick so the game works as espected (need to test with the modified Find* functions, can wait!).
Not only you shouldn't need to do that but, that won't cause the exe program to call the functions in your dll.
In the exe file, there is an import descriptor (one or more per import library) and, the descriptor tells the loader the name of the library where to find the functions. In the case of kernel32, the descriptor says "kernel32.dll", the loader will completely ignore your dll. The only time your technique works is when your dll is a replacement for the original dll.
Somewhere you have to patch the exe's Import Address Table (IAT) so that the IAT has the address of YOUR functions in your dll instead of the address of those functions in kernel32.
I don't see anywhere in your code that you are patching the exe's IAT.