los binarios exe, msi y otros son llamados nativos, dado que el codigo es hecho directamente por el ensamblador provocando un codigo no legible, generar el codigo original es prácticamente imposible en su teoria, en la práctica se usan depuradores y tambien alguna herramienta de análisis estáticos que permiten entender su funcionamiento
el más famoso en su tipo diria que es IDA (de hexrays)
conforme mas lenguajes sepas mas sabes que hacer ...no es lo mismo depurar archivos .net donde son codigos interpretados (como una maquina virtual), en lenguaje intermedio (.il)
lo haré explicito con un exe cualquiera
tengo 2 opciones o es x86 o es x64, luego verifico yo suelo usar pid protection id, rdg packer detector, que usan firmas para analizar el encabezado y parte del ejecutable , si me indica que es .net uso directamente dnspy o alguna similar, si es un nativo uso x64dbg/x32dbg/ollydbg/IDA entre otros
ahora bien, hablas de funciones, eso se llaman parser?, bueno un parser de xml seria asi
https://support.microsoft.com/es-cl/help/307548/how-to-read-xml-from-a-file-by-using-visual-csi ves kms pico o los activadores para office, son hechos en .net asi que puedes ver como ejecuta o carga diferentes cosas para ejecutables
si eres mas de ver en google, es dependiendo de lo que necesites, ejecutarlos
https://social.msdn.microsoft.com/Forums/es-ES/d28234b6-4d8f-4ad7-8660-2a284afa6c73/ejecutar-exe-desde-c?forum=vcseseditor hexadecimal
https://www.codeproject.com/Articles/11705/Hex-Editor-in-cetc
en lo particular yo haria un gui para subir el archivo a
https://retdec.com/decompilation/y lo demas es cosa de cada uno.::
Saludos Apuromafo