I was inspired by a previous project where I added new functionality to an older program which got little support. I wanted to take concepts that I learned from that program and implement them into a library so others could do the same thing.

What it does

The Application Extension Library (AEL) extends applications through DLL injection. The library allows the user to create custom toolbar buttons and menu items to add new functionality to programs.

How I built it

The program was coded in c++ and uses the Microsoft Foundation Class (MFC) library to help deal with windows as objects. The program involves 3 parts, the application which injects the DLL, the injected DLL, and the AEL library. The application takes 2 inputs, the application name and the name of the main window, which can be found with spy++. The injector application uses a text file to send information to the DLL to communicate between processes.

Challenges I ran into

The biggest challenge was assertion errors. Messing with anything related to the windows is a minefield of assertions.

Accomplishments that I'm proud of

I'm proud that I managed to finish this in 12 hours

What I learned

I learned a lot of new things. I learned more about how DLLs work, and how to dynamically load them at run time. Researching DLLs also taught me new things such as the advantages of dynamically loading them when the program starts, how to call functions from dynamically loaded DLLs, and how to export functions from a DLL.

What's next for Application Extension Library

Probably not much, I'll try to explore getting custom windows to work next, but I don't think I'll have enough free time to do so.

Built With

  • c++
  • dll-injection
  • mfc
Share this project: