This is my hobby project, where I initially planned to create a complete software that could parse Windows's PE file structure. Made using C++, while using Windows API for UI and other related functionality.
My goal was to create a PE structure viewer, that more or less same as PEview. But because of lack of time, and I currently focusing on other interests, so this is kinda abandoned project.
Please keep in mind that this project is half-finished, and at current rate is very unstable!
Here is the list of things that I had in mind when developing this project:
- Create a complete PE structure viewer (far from complete)
- Using Windows API (for UI and related tasks) without relying much on other libraries
- Create a freestanding executable. This is to ensure that this program can run everywhere, without depending on too many dependencies.
- Supporting another executable structure such as
ELF
orMach-O
format.
In order to make the project more cleaner, I've splitted the components into their appropriate folder. For example, all UI elements are reside in gui
folder. All code are in C++, with Object-Oriented programming
design.
gui
- contains all code related to UImisc
- contains all miscellaneous code (such as opening file, data structure, etc)structures
- contains code to parse PE structure
Contrary to the famous opinion that when you're developing Windows program you must use Windows OS to do so.
This is not the case for me, as I'm relying 100% on open-source toolkits such as MinGW-w64 and Wine when developing this software while using Arch Linux as my main OS.
$ pacman -S make cmake mingw-w64-gcc mingw-w64-headers wine-staging
Once you installed all required things, go to main EXEPeek directory and run ./build.sh
, which will automagically build the software for you.
The compiled executable will be inside build-win/
. You can use Wine in order to run the program.
This is my first time developing a serious project using Windows API's UI toolkit. This has been kinda on my checklist of things that I must learn.
Honestly, IMHO, developing a program that uses Windows API UI toolkit is a pain in the ass. You better get off using something like Qt or wxWidgets. YES, you can use Windows API UI toolkit when developing a simple program. But, please, don't ever try to use it when developing a large project.
The reason why I said Windows API UI bad is because developing UI in Windows API is hard, I bet you will spend 60% of your time figuring how to layout and setup UI things instead of spending time on the main thing, which is your program functionality.