TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Ask HN: How to Decode .exe Binary to Recover Source Code

12 点作者 linuxdeveloper将近 5 年前
Hello Hackers,<p>I recently came upon some school work of mine, code I wrote, from high school in 2001 as a sophomore.<p>For my high school CS101 class, I wrote a C++ game called Snake. The game was written using a graphics library called Allegro (https:&#x2F;&#x2F;www.allegro.cc&#x2F;). Allegro was a lovely library.<p>It is still possible to download the original zipped binaries which I uploaded 19 years ago. They can be downloaded here: https:&#x2F;&#x2F;www.allegro.cc&#x2F;depot&#x2F;snake2<p>I also put them online here: https:&#x2F;&#x2F;github.com&#x2F;natehouk&#x2F;snake<p>(There is also a second game Mastermind available here https:&#x2F;&#x2F;github.com&#x2F;natehouk&#x2F;mastermind and here https:&#x2F;&#x2F;www.allegro.cc&#x2F;depot&#x2F;mastermind)<p>Unfortunately, I can not find the source code anywhere. I am very saddened by this. I thought it would be very fun to see code I wrote when I was 15, nearly 20 years ago. It would be especially fun to see how I&#x27;ve improved, or what neat tricks I came up with at that young age.<p>I have the .exe and the .dat data files and the original readme.txt. I have tried running my program on Windows 10 and with Wine. In both cases, the program crashes. I have tried all of the compatibility modes in Windows 10 and none of them work.<p>The year was 2001, so I believe we must have been using Windows 98 in the classroom, maybe Windows NT 2000? I can&#x27;t remember.<p>I know that my program ran great back in the day. It even got 100,000 downloads off Download.com back then before cnet ruined them.<p>I want to play my game. What can I do to get my program running again? It seems like Allegro is barely supported these days. I think I need to try a native Windows 2000 install. Was it naive of me to think I would easily be able to run a program from nearly 20 years back?<p>What tools are available and what is state of the art for decoding a compiled binary back into readable source code?<p>Thanks for any info.

5 条评论

alltakendamned将近 5 年前
A first step can be disassembling and then decompiling the binary. A good, free tool for this is Ghidra: <a href="https:&#x2F;&#x2F;ghidra-sre.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;ghidra-sre.org&#x2F;</a><p>It will not give you code that you can recompile, but it should be possible to understand and recreate the code based on the result of decompiling the software<p>An alternative approach can be to emulate the binary under e.g. qemu
non-entity将近 5 年前
The easiest way to run it would probably be running an older windows version on a VM. Maybe not 2000, but something like XP might work?<p>I suppose you could always reverse engineer it worst case, but that&#x27;s probably a much more work than you&#x27;re looking to do, especially without any debug symbol info.
评论 #23545704 未加载
jg23497将近 5 年前
Unfortunately, obtaining the source code used to produce a C++ executable from only the executable itself is an unsolved problem and reverse engineering is a generally difficult and labour-intensive process. However, there are tools that will help to reduce the level of pain involved.<p>The Hex-Rays Decompiler for IDA Pro will produce a remarkably good result in functional terms, but its output won&#x27;t closely resemble the code you remember writing.<p>Ghidra looks like a good open-source alternative, though I haven&#x27;t tried it myself.
kleer001将近 5 年前
What you&#x27;re asking for is skill held by a well paid discipline within the practical arm of the computer science industry. In other words, some people spend their entire careers on reverse engineering compiled binaries. And there&#x27;s a whole fascinating back and forth arms race between them and people who don&#x27;t want their code decompiled.
im3w1l将近 5 年前
I don&#x27;t have answers to your questions, but I can offer one piece of advice. The program is compressed with UPX, and you must decompress it before you decompile it.