关于反编译:哪些类型的可执行文件可以反编译?

关于反编译:哪些类型的可执行文件可以反编译?

What types of executables can be decompiled?

我认为Java可执行文件(jar文件)对于反编译和获取源代码很简单。

那其他语言呢? .net和所有?

哪些所有语言只能编译为可反编译的代码?


通常,像Java,C#和VB.NET这样的语言相对容易反编译,因为它们被编译为中间语言,而不是纯机器语言。以IL形式,与编译为机器语言的C代码相比,它们保留的元数据更多。

从技术上讲,您并没有获得原始的源代码,而是对源代码进行了一些改动,在编译时会将其返回给您。它与源代码不同,因为注释,注释和编译器指令之类的内容通常不会被带入已编译的代码中。


托管语言可以很容易地反编译,因为可执行文件必须包含很多元数据以支持反射。
诸如C ++之类的语言可以编译为本地代码。在编译翻译过程中,程序结构可以完全改变。
编译器可以轻松替换合并删除代码的某些部分。原始代码与已编译(本机)代码之间没有一对一的关系。


.NET非常容易反编译。最好的工具是RedGate最近收购的.NET反射器。


如果将VB6编译为pcode,也可以使用P32Dasm将其反编译为几乎完整的源,还可以使用Flare之类的东西将Flash(或动作脚本)反编译为完整的源


大多数语言都可以反编译,但是某些语言比其他语言更容易反编译。 .Net和Java将有关原始程序的更多信息放在可执行文件中(方法名,变量名等),因此您可以获取更多原始信息。

例如,C ++会将变量和函数等转换为内存地址(是的,我知道这是一个简单的简化),因此反编译器将不知道调用了什么东西。但是,尽管如此,您仍然可以获得程序的一些结构。


推荐阅读

    linux分隔文件命令?

    linux分隔文件命令?,系统,信息,文件,命令,位置,指令,文件夹,目录,前缀,方法,l

    linux改文件权限命令?

    linux改文件权限命令?,系统,工具,档案,权限,文件,信息,命令,目录,选项,用户,

    linux命令交换文件名?

    linux命令交换文件名?,命令,文件,数据,名称,工具,地址,软件,系统,基础知识,

    查看linux库类型命令?

    查看linux库类型命令?,系统,工作,信息,状态,电脑,命令,工具,代码,地址,发行,

    linux文件夹转移命令?

    linux文件夹转移命令?,系统,文件,命令,位置,材料,信息,工具,电脑,目录,源文

    linux转移文件命令?

    linux转移文件命令?,文件,命令,密码,电脑,位置,名称,信息,系统,目录,目标,lin

    linux下替换文件命令?

    linux下替换文件命令?,文件,一致,评论,名称,标的,资料,工作,命令,字符串,内

    linux文件nl命令?

    linux文件nl命令?,地址,工作,信息,系统,情况,标准,实时,对比,百度,命令,linux

    linux寻找文件夹命令?

    linux寻找文件夹命令?,名称,命令,文件,位置,工作,标准,目录,子目录,文件名,

    linux跳到文件尾命令?

    linux跳到文件尾命令?,系统,文件,命令,管理,状态,实时,末尾,光标,内容,编辑,l

    linux改语言命令行?

    linux改语言命令行?,系统,环境,工具,密码,概念,地方,软件,通信,管理,国际,lin

    linux把文件复制命令?

    linux把文件复制命令?,名字,文件,软件,系统,位置,目录,命令,源文件,目标,文

    linux命令行c语言?

    linux命令行c语言?,代码,系统,工具,环境,工作,保险,发行,命令,文件,终端,linu

    c语言在linux命令?

    c语言在linux命令?,系统,工作,管理,命令,保险,基础,环境,信息,文件,语言,linu

    linux文件夹合并命令?

    linux文件夹合并命令?,文件,对比,第一,下来,命令,文件夹,两个,字段,内容,数

    linux下文件创建命令?

    linux下文件创建命令?,名字,名称,首次,命令,文件,系统,密码,文件名,文件夹,

    linux命令行安装文件?

    linux命令行安装文件?,软件,官网,密码,中心,电脑,文件,命令,终端,指令,版本,L

    linux文件解包命令?

    linux文件解包命令?,系统,地址,命令,文件,管理,手机,数据,工具,标准,单位,lin

    linux重启文件命令?

    linux重启文件命令?,系统,工作,标准,设备,命令,灵活,用户,电源,方式,级别,lin