Curriculum Vitae

Experience

RevEng.AI, Binary AI LTD

Software Consultancy Contractor (2024.06 - present)

  • Fully develop and maintain software plugins for Rizin, Cutter, Radare2 & Iaito reverse engineering tools
  • Keep up with fast ongoing chances in RevEng.AI’s API and features
  • Weekly meetings to sync ideas between different plugin maintainers and RevEng.AI team

RizinOrg

Open Source Google Summer of Code'23 Contributor

  • Uplifted MIPS and NanoMIPS architecture instructions to RzIL intermediate language.
  • Augmented BAP’s Qemu to support trace testing of MIPS
  • Trace-tested ulifted instructions to test the correctness of RzIL code execution.

Open Source

reai-rz

Rizin & Cutter reverse engineering tool plugins using RevEngAI’s API to provide AI features and aid in reverse engineering and binary analysis. This is a part of my contract work.

reai-r2

Radare2 plugin to use RevEngAI’s API to provide AI features in radare2 command line tool. This is a part of my contract work.

creait

A C library to help C programs interact with RevEng.AI’s REST API. This is a part of my contract work. The tool uses libCURL to perform REST API requests to RevEng.AI’s API endpoints and then uses cJSON library to parse the received JSON responses and provide then to user in a structured manner inside C.

Rizin

Multiple contributions to RizinOrg’s rizin reverse engineering command line tool. Some of the PRs are merged and some of the PRs I’m working on. I still make occasional contributions to the project whenever required. Sometimes just to help the maintainers, and sometimes contributions are related to my contract works.

I’m currently working on rewriting demanglers for rz-libdemangle in RizinOrg. I’m rewriting C++ demanglers for GNU v2 and GNU v3 ABI. The PR is a W.I.P and can be found here

Projects

Grammar Based Fuzz Input Generator

Wrote a grammar based unsupervised fuzz case generator for fuzzing programs that take text input. This was a personal research project. No academics involved, completely separated from anyone’s intrusion, for my own learning. I explored ideas and wrote a test case generator that would take arbitrary context-free-grammar in EBNF (Extended-Backus-Naur-Form) and generate random strings for that language.

Source code is not available, but a working proof is available on My YouTube channel, where I live streamed the development sessions. The live stream can be found here

The tool worked by taking any grammar file, parsing it and generating an internal representation of grammar, and then tranversing a graph, taking each route randomly. Everytime a terminal is expanded, the length of generated string is assumed to be increased by one, which allowed me to put soft length stops on the generated string. This feature is especially useful you only want to fuzz your program with small input sizes. With each increasing count, the probability of taking a non-terminal decreased, which in turn slowly brought the state machine to select only from terminals, and hence to a stop after some more iterations.

MisraOS

A hobbyist Operating System I developed in first semester of college just to learn how operating systems are written out of curiosity. At this point, I had already used a wide range of operating systems, but now there was an internal craving to write one of my own.

XWars

A native GUI implemented for an r2wars like game for a custom virtual machine xvm written my some random guy (whom now I know very well) on discord. Had lots of fun while writing, because my college entrance exams just ended then and was exploring really interesting tops and the idea of writing VMs and desktop applications was very new to me.

pwned

Some very basic exploit scripts I wrote while learning binary exploitation. Mostly filled with exploits for printf and stack-buffer-overflow vulns.

Education

Department of Mathematics, Birla Institute of Technology

Bachelors (Hons.) in Mathematics & Computing (2021 - 2024)

  • GPA: 8.59/10.0
  • Dissertation : Comprehensive Performance Analysis of 5G Network Stations using MOORA Method

Relevant Coursework

  • Formal Languages & Automata Theory
  • Operating Systems
  • Database & Management Systems
  • Object Oriented Programming (JAVA)
  • Probability & Statistics

Recently while self-hosting some services for myself, I learned a lot about system administration. I already did know the “what”, but this time I had to do the “how” of it. I now self host the following services :

There were many other hosted before, like Uptime Kuma, Grist, etc…, but I realized that I don’t really need those. To do all this, I learned docker, docker-compose, systemd services, nginx reverse proxy, postgresql, DDNS, user management, permission management, git bare repos and how to host my own git service. I use CGIT for web frontend, and a bare git repo for hosting repos.