É binário. O código fonte foi compilado. Você pode visualizá-lo em um editor (um editor hexadecimal como bless
pode fazer alterações mais refinadas), mas você realmente precisa saber o que está fazendo. É provável que seja bom apenas para fazer alterações de string.
Para qualquer coisa mais hardcore, você pode começar a fazer engenharia reversa do binário no código assembly . Isso geralmente é considerado como a linguagem de computador mais humana que pode ser analisada.
objdump -d helloworld | less
Mas também incluirá muito bobagem no compilador. Por exemplo, se você compilar o mais simples helloworld.cpp
com G ++ e, em seguida, objdump
, você terminará até com 226 linhas (208 despojado) de yuck. Você poderia escrever um "hello world" em apenas 15 linhas de montagem , compilá-lo e objdump
, mas isso ainda floresce em 166 linhas (despojado).
Se você é bom o suficiente com a montagem, isso pode lhe dar acesso suficiente para entender o que está acontecendo e até mesmo permitir que você o altere ... Mas, para responder à sua pergunta original:
Você não pode transformar o código compilado de volta no código-fonte original .
Desculpe. É uma transformação unidirecional que perde informação (comentários, formatação, conceitos de algoritmos legíveis, etc), está estaticamente ligada a outras coisas e é geralmente otimizada de tal forma que tornaria ininteligível para qualquer coisa, exceto os melhores e mais experientes programadores.
Para dar uma idéia da escala do problema, toda a ideia do software de engenharia reversa tem seu próprio site Stack Exchange .