<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jaime Moreno</title>
    <description>The latest articles on DEV Community by Jaime Moreno (@morejaime).</description>
    <link>https://dev.to/morejaime</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2126140%2F86ba6529-e830-4866-a8e6-ab60dc8234ae.png</url>
      <title>DEV Community: Jaime Moreno</title>
      <link>https://dev.to/morejaime</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/morejaime"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Jaime Moreno</dc:creator>
      <pubDate>Mon, 26 Oct 2026 12:33:31 +0000</pubDate>
      <link>https://dev.to/morejaime/-2839</link>
      <guid>https://dev.to/morejaime/-2839</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/morejaime/i-look-at-old-exe-files-for-a-living-heres-how-i-tell-what-theyre-built-with-in-2-minutes-3aci" class="crayons-story__hidden-navigation-link"&gt;I look at old .exe files for a living. Here's how I tell what they're built with in 2 minutes&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/morejaime" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2126140%2F86ba6529-e830-4866-a8e6-ab60dc8234ae.png" alt="morejaime profile" class="crayons-avatar__image" width="96" height="96"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/morejaime" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Jaime Moreno
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Jaime Moreno
                
                
              
              &lt;div id="story-author-preview-content-4920880" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/morejaime" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2126140%2F86ba6529-e830-4866-a8e6-ab60dc8234ae.png" class="crayons-avatar__image" alt="" width="96" height="96"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Jaime Moreno&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/morejaime/i-look-at-old-exe-files-for-a-living-heres-how-i-tell-what-theyre-built-with-in-2-minutes-3aci" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 26&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/morejaime/i-look-at-old-exe-files-for-a-living-heres-how-i-tell-what-theyre-built-with-in-2-minutes-3aci" id="article-link-4920880"&gt;
          I look at old .exe files for a living. Here's how I tell what they're built with in 2 minutes
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/legacy"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;legacy&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/dotnet"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;dotnet&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/windows"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;windows&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/morejaime/i-look-at-old-exe-files-for-a-living-heres-how-i-tell-what-theyre-built-with-in-2-minutes-3aci" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/morejaime/i-look-at-old-exe-files-for-a-living-heres-how-i-tell-what-theyre-built-with-in-2-minutes-3aci#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>analysis</category>
      <category>programming</category>
      <category>security</category>
    </item>
    <item>
      <title>I look at old .exe files for a living. Here's how I tell what they're built with in 2 minutes</title>
      <dc:creator>Jaime Moreno</dc:creator>
      <pubDate>Mon, 26 Oct 2026 10:07:10 +0000</pubDate>
      <link>https://dev.to/morejaime/i-look-at-old-exe-files-for-a-living-heres-how-i-tell-what-theyre-built-with-in-2-minutes-3aci</link>
      <guid>https://dev.to/morejaime/i-look-at-old-exe-files-for-a-living-heres-how-i-tell-what-theyre-built-with-in-2-minutes-3aci</guid>
      <description>&lt;p&gt;Almost every legacy project I look at starts with the same question, and it is never "what language is this written in?". It is quieter and more urgent:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Somebody left, nobody has the source code, and all we have is this .exe. Can we do anything with it?"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The good news: you can usually answer that in a couple of minutes, without running the program. A Windows executable leaves fingerprints everywhere. You just need to know where to look.&lt;/p&gt;

&lt;h2&gt;
  
  
  The fingerprints
&lt;/h2&gt;

&lt;p&gt;A Windows &lt;code&gt;.exe&lt;/code&gt; is a PE file. Its header, its import table and the files sitting next to it tell you most of the story:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;If you see...&lt;/th&gt;
&lt;th&gt;It is probably...&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A CLR header and an import of &lt;code&gt;mscoree.dll&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;.NET&lt;/strong&gt; (WinForms apps also reference &lt;code&gt;System.Windows.Forms&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;msvbvm60.dll&lt;/code&gt; (or &lt;code&gt;msvbvm50.dll&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Visual Basic 6 / 5&lt;/strong&gt;, often with &lt;code&gt;.ocx&lt;/code&gt; controls in the folder&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;borlndmm.dll&lt;/code&gt;, &lt;code&gt;.bpl&lt;/code&gt; packages, Borland or Embarcadero strings&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Delphi / C++Builder&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;vfp6r.dll&lt;/code&gt;, &lt;code&gt;vfp8r.dll&lt;/code&gt;, &lt;code&gt;vfp9r.dll&lt;/code&gt; and folders full of &lt;code&gt;.dbf&lt;/code&gt; tables&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Visual FoxPro&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;pbvm*.dll&lt;/code&gt; and &lt;code&gt;.pbd&lt;/code&gt; libraries&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;PowerBuilder&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A &lt;code&gt;.jar&lt;/code&gt;, or a launcher that loads &lt;code&gt;jvm.dll&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Java&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;python3x.dll&lt;/code&gt; or PyInstaller markers&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Packaged Python&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Two more things worth a glance: section names that give away a packer (&lt;code&gt;UPX0&lt;/code&gt;, &lt;code&gt;.aspack&lt;/code&gt;, &lt;code&gt;.themida&lt;/code&gt;, &lt;code&gt;.vmp0&lt;/code&gt;), and the Details tab in the file properties (product name, version, copyright, date).&lt;/p&gt;

&lt;h2&gt;
  
  
  Do it yourself in four steps
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Look at the folder.&lt;/strong&gt; The DLLs and OCXs next to the program say a lot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open Properties, then Details.&lt;/strong&gt; Product, version and date tell you who compiled it and when.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use a local analyser.&lt;/strong&gt; Tools like Detect It Easy show the compiler, the imports and any packer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Never run what you do not know.&lt;/strong&gt; Identifying the technology only needs reading the file.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Or skip the manual work
&lt;/h2&gt;

&lt;p&gt;I got tired of doing this by hand, so I built a free tool that does it in the browser. You drop the file, it reads the headers and tells you the technology and how recoverable the code probably is. The file never leaves your machine, everything runs locally:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Browser version: &lt;a href="https://www.stellariscode.com/en/free-exe-analyzer" rel="noopener noreferrer"&gt;https://www.stellariscode.com/en/free-exe-analyzer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Command line version (zero dependencies, MIT) to inventory whole folders: &lt;a href="https://github.com/morexulo/legacy-scan" rel="noopener noreferrer"&gt;https://github.com/morexulo/legacy-scan&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What the result actually means
&lt;/h2&gt;

&lt;p&gt;This is the part that matters when the code is gone:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;.NET or Java: usually high.&lt;/strong&gt; They keep almost all their structure when compiled (classes, methods, queries). You lose comments and some local names. Obfuscation makes it harder, but rarely impossible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VB6, Delphi, FoxPro, PowerBuilder: medium.&lt;/strong&gt; Forms, resources and part of the logic come back. The rest is rebuilt from analysis, behaviour and the database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native C/C++, Go, protected binaries: low.&lt;/strong&gt; You can study the behaviour, but the original code does not come back. The logic is rebuilt from analysis and from the data.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;"Recoverable" never means "identical to the original". It means the business rules can be reconstructed and tested against the real application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gotchas
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A launcher can hide the real app.&lt;/strong&gt; An .exe that loads &lt;code&gt;jvm.dll&lt;/code&gt; is just a wrapper: go find the .jar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Installers are not the app.&lt;/strong&gt; If you see Inno Setup or NSIS, install it first and analyse what it leaves behind.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It is a heuristic.&lt;/strong&gt; It is right with the common stacks and can be wrong with unusual ones, packed binaries especially.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mind the legal side.&lt;/strong&gt; Only analyse software you own or have the right to analyse. Recovering or modifying code depends on ownership and licensing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Your turn
&lt;/h2&gt;

&lt;p&gt;Which old stack is still alive where you work? I am collecting real cases, and misdetections are especially welcome: open an issue on the repo with what the tool said and what it really was (no third-party binaries, please).&lt;/p&gt;

</description>
      <category>legacy</category>
      <category>dotnet</category>
      <category>windows</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
