2

I am a person interested of old games (MS DOS and 16 bit Windows only) and programming. In 2020, I saw an article about hacking SkiFree somewhere on the internet and soon as I followed the instructions, it was so easy that I made many games with changed graphics and added sound effects (the later 32 bit executable has a hidden ability to do so). Later I tried to go to different lengths after being impressed with my previous stuff mentioned above. Like adding new objects (referred as things in the code). I have explored the original executable using a hex editor and found this:

ski2.c

I have heard of old Windows applications being leaked by hackers, causing mass controversy and a big problem for Microsoft. They say they extracted the c files and headers from the executable file. Sometimes without a decompiler. I have been working on a SkiFree project for nearly 3 years only for my own enjoyment and I want to know which software do they use to do this. Can anyone help me?

Thanks! Picaboo3

2
  • 2
    Maybe that's only the file name for debugging. I don't think there is the point to include full C source code in an executable file.
    – raspiduino
    Commented Sep 7, 2023 at 12:56
  • Such names are often included either by some debug-related output (there are macros which resolve to the file names) or could be used in embedded debug symbols.
    – 0xC0000022L
    Commented Sep 11, 2023 at 7:56

2 Answers 2

2

the best you can get: https://github.com/yuv422/skifree_decomp

A source code reconstruction of the 32bit version of Skifree (v1.04) back to C, compilable with Visual Studio 6.

so someone already did the very time consuming manual translation from disassembly to C for you

you can load the Visual Studio 6 dsw project file (from 1998) in VS2017 or VS2019 - or create a new solution

3

It's not common for executables to include their own source code, so in general, the answer to your question is "that's not possible". That string likely appears in the binary due to some sort of debug print (something like the __FILE__ macro in C). If you really want to know what purpose that string is serving in the binary, you should use a static reverse engineering tool like IDA, Ghidra, Binary Ninja, or radare2 to investigate where it is being used. If it's nearby a call to printf, OutputDebugString, fwrite, etc., you are likely looking at a dead end.

Not the answer you're looking for? Browse other questions tagged or ask your own question.