<?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: devalgupta4</title>
    <description>The latest articles on DEV Community by devalgupta4 (@devalgupta4).</description>
    <link>https://dev.to/devalgupta4</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3236223%2F6dcb3432-08ac-4c4d-b4e6-29327efeb7e5.jpg</url>
      <title>DEV Community: devalgupta4</title>
      <link>https://dev.to/devalgupta4</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devalgupta4"/>
    <language>en</language>
    <item>
      <title>A Good Engineer Never Blames the Domain</title>
      <dc:creator>devalgupta4</dc:creator>
      <pubDate>Sun, 14 Dec 2025 15:23:57 +0000</pubDate>
      <link>https://dev.to/devalgupta4/a-good-engineer-never-blames-the-domain-35ng</link>
      <guid>https://dev.to/devalgupta4/a-good-engineer-never-blames-the-domain-35ng</guid>
      <description>&lt;p&gt;My seniors from Point Blank always told us one thing:&lt;br&gt;&lt;br&gt;
&lt;strong&gt;“A good engineer never blames the domain.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This thought stayed with us while selecting problem statements for the Smart India Hackathon (SIH), and our SIH journey proved this statement.&lt;/p&gt;




&lt;h2&gt;
  
  
  Selection of Problem Statement
&lt;/h2&gt;

&lt;p&gt;In our team, there were two DevOps engineers, two ML engineers, one frontend developer, and me (an Android developer). From the very beginning, our team &lt;a href="https://www.pointblank.club/" rel="noopener noreferrer"&gt;Point Blank&lt;/a&gt; decided on one thing: we would not limit ourselves to any single domain.&lt;/p&gt;

&lt;p&gt;We were open to all problem statements and, more importantly, we wanted to take up the toughest PS.&lt;/p&gt;

&lt;p&gt;After going through all the problem statements, we shortlisted two:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;QuMail&lt;/strong&gt; – a cybersecurity-based problem statement focused on building a quantum-secure email system.&lt;/li&gt;
&lt;li&gt;The second problem statement revolved around &lt;strong&gt;obfuscation of C/C++ code using LLVM&lt;/strong&gt;, combining compiler design and cybersecurity. This was the problem statement for which we were selected for the SIH finals.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of us came from a compiler background, but we still chose to take up this challenge and started working on it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Challenges and How We Tackled Them
&lt;/h2&gt;

&lt;p&gt;We began by researching the problem statement, and the very first question we asked ourselves was &lt;strong&gt;why this solution was needed&lt;/strong&gt;. To understand this better, we spoke to reverse engineers, who helped us realize that reverse engineering plays a crucial role in identifying loopholes, vulnerabilities, and hidden bugs in software.&lt;/p&gt;

&lt;p&gt;This led us to our next big question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What exactly is reverse engineering?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Honestly, it took us a lot of time to understand how reverse engineers work. We spoke to multiple reverse engineers and concluded that their primary focus is on the &lt;strong&gt;Intermediate Representation (IR)&lt;/strong&gt; of a program. While analyzing IR, they mainly look for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strings
&lt;/li&gt;
&lt;li&gt;Symbols
&lt;/li&gt;
&lt;li&gt;Control Flow Graphs
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gave us a clear direction that these were the areas we needed to work on and then our seniors from &lt;a href="https://www.pointblank.club/" rel="noopener noreferrer"&gt;Point Blank&lt;/a&gt; specially &lt;a href="https://www.linkedin.com/in/ashupdsce" rel="noopener noreferrer"&gt;Ashutosh bhaiya&lt;/a&gt; was there to help us understand Compilers  &lt;/p&gt;




&lt;h2&gt;
  
  
  Turning Research into Implementation
&lt;/h2&gt;

&lt;p&gt;We started by studying &lt;strong&gt;OLLVM (Obfuscator-LLVM)&lt;/strong&gt;. However, OLLVM is quite old and not compatible with &lt;strong&gt;LLVM 22&lt;/strong&gt;, which we wanted to use for our project. To make things more challenging, LLVM 22 had not even been officially released at that time.&lt;/p&gt;

&lt;p&gt;So instead of backing out, we studied the implementation of OLLVM in depth and reimplemented it for LLVM 22, making it compatible.&lt;/p&gt;

&lt;p&gt;Even after this, we faced several challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;String and symbol obfuscation
&lt;/li&gt;
&lt;li&gt;Making our customized LLVM version compatible with &lt;strong&gt;C++ exception-handling code&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Many other low-level implementation issues
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We divided the work properly among all six team members, and everyone gave their best. For an entire week, we worked every day from &lt;strong&gt;5 in the evening to 7 in the morning&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Below is the architectural diagram we had prepared before going for the SIH finals.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp5o8wtdk6h2xrsu65e3s.png" class="article-body-image-wrapper"&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.amazonaws.com%2Fuploads%2Farticles%2Fp5o8wtdk6h2xrsu65e3s.png" alt=" " width="800" height="565"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  SIH Finals at IIT Jammu
&lt;/h2&gt;

&lt;p&gt;Our real test began at IIT Jammu. During the first mentoring round, the mentors liked our idea, but then came a critical moment.&lt;/p&gt;

&lt;p&gt;A mentor asked us:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;“Are you doing obfuscation for both C and exe?”&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Due to a misunderstanding, one of our teammates answered &lt;strong&gt;yes&lt;/strong&gt;, and at that moment they started asking questions about &lt;strong&gt;binary-to-binary obfuscation&lt;/strong&gt;. Something we knew was practically not possible, as we had already discussed the same with our seniors.&lt;/p&gt;

&lt;p&gt;At first, it felt like a mistake — but that mistake turned into a &lt;strong&gt;blessing in disguise&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Earlier, me and &lt;a href="https://www.linkedin.com/in/skysingh04/" rel="noopener noreferrer"&gt;Akash bhaiya&lt;/a&gt; had discussed an idea: what if we use some reverse engineering tool to get the &lt;strong&gt;Intermediate Representation&lt;/strong&gt; and then apply our OLLVM layers? We pitched the same idea to the mentors.&lt;/p&gt;

&lt;p&gt;After that mentoring round, we had a clear picture of what we had to do in the remaining time. We divided the work properly — a few of us started adding new features suggested by the mentors, while others worked on the &lt;strong&gt;binary-to-binary obfuscation pipeline&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;During the final judging round, we delivered everything they asked for. The judges also asked technical questions, similar to interview questions, which we expected — especially since &lt;strong&gt;NTRO also offered internships after SIH&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Because we had strong clarity about what we were building, we were able to answer &lt;strong&gt;every single question&lt;/strong&gt; confidently.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Moment That Made Everything Worth It
&lt;/h2&gt;

&lt;p&gt;There were four problem statements at our SIH center. Ours was announced &lt;strong&gt;last&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Many people had told us earlier that our team looked too confident. But in reality, we were nervous. And then the moment arrived — they announced us as &lt;strong&gt;winners&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It was an unreal feeling.&lt;/p&gt;

&lt;p&gt;We were happy and emotional at the same time. Months of hard work and learning finally paid off, and we proved one thing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Good engineers don’t blame domains.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnpnag69uvgwp8823j6gi.jpg" class="article-body-image-wrapper"&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.amazonaws.com%2Fuploads%2Farticles%2Fnpnag69uvgwp8823j6gi.jpg" alt=" " width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Felj4vsciflz5kujgr7e4.jpg" class="article-body-image-wrapper"&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.amazonaws.com%2Fuploads%2Farticles%2Felj4vsciflz5kujgr7e4.jpg" alt=" " width="800" height="1066"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>motivation</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
