hagamos una idea rápida, digamos que lo que quieres recrear es la funcion suma de algo muy simple pero que trabaja con un largo int (), copiar el codigo es heredar los mismos problemas, si trabajas con cantidades gigantes (grandes números), no podrás hacer mas
en el tema de visual studio o cualquier programa hecho en ese lenguaje la parte estética (gui) es facilmente recreable para cualquier coder, pero la parte funcional del código en parte se puede crear un pseudo código si fue hecho en c , con ayuda de programas comerciales como IDA PRO puedes obtener un código funcional pero no legible, en algunos casos son funciones otros no, es un tema para largo porque dependerá de los símbolos que tenga el ejecutable.
en el caso de ricardonarvaja, explico las temáticas de análisis estático y análisis dinámico y además la reconstruccion de codigo, aun conociendo el código de fuente, el tema es bastante largo y es en algunos casos mucho mas largo que re-codear el codigo denuevo.
si la idea es dar una ojeada al código, puedes usar cualquier depurador e ir trazando por bloques desde el comienzo de un bloque a otro, entendiendo instrucciones assembler , si bien muchos pueden estar ofuscados o protegidos, el principio básico de mirar como funciona siempre da ideas nuevas
por otro lado, en práctica y tiempo, es mucho mas fácil comenzar a desarrollar uno propio que imite o supere al original, porque aveces son componentes que fueron comprados para hacer alguna estructura
si quieres perder 1 año depurando y re-crear el codigo, adelante, pero te aseguro que de aqui a un año, puede que en 3 meses aprendas a depurar el codigo y ver que te sirve y que no, y de ahi recien codear (en 6 meses) demás que lograrás hacerlo, aunque si vas por el lado directo de crear un código, siempre mantener los principios de lo que haces (en el sentido que el codigo creado siempre será funcional)
Saludos Apuromafo
pd: todo programa es unico, aunque sea un simple mensaje de "holamundo"