shr*_*sva 14 c assembly reverse-engineering disassembly
如果分发了这个二进制文件,则每个c程序都转换为机器代码.由于计算机的指令集众所周知,是否可以取回C原始程序?
Fil*_*erg 17
您永远无法回到完全相同的源,因为没有与编译代码一起保存的元数据.
但是您可以从汇编代码中重新创建代码.
如果您对以下内容感兴趣,请查看本书:逆转:逆向工程的秘密.
编辑
这里有一些编译器-101,如果你用另一个单词定义编译器而不是像"编译器"那样技术性,它会是什么?
答:翻译
编译器将您编写的语法/短语转换为C编译器转换为Assembly或甚至是机器代码的另一种语言.C#代码被翻译成IL等等.
你拥有的可执行文件只是原始文本/语法的翻译,如果你想"反转它",因此"将其翻译回来",你很可能得不到你在开始时的结构.
一个更现实的例子是,如果你从英语翻译成德语,从德语翻译回英语,那么结构结构很可能会有所不同,可能会使用其他单词,但意义,背景,很可能不会改变.
编译器/翻译器也是如此,如果你从C到ASM,逻辑是相同的,它只是一种不同的阅读方式(当然还有它的优化).