j***a改成c语言,j***a转换成c语言

kodinid 12 0

大家好,今天小编关注到一个比较意思的话题,就是关于java改成c语言问题,于是小编就整理了2个相关介绍Java改成c语言的解答,让我们一起看看吧。

  1. 用c++编写的exe文件如何反编译成c?
  2. Java能不能像C语言不通过JVM虚拟机直接编译成二进制机器码,让计算机直接运行?

c++编写的exe文件如何编译成c?

反编译的研究非常广泛也很深入,比较不错的系统有商用的ida 反编译系统的插件hexray,开源的boomerang。但由于通常release的程序,会使用编译器优化编译能力,会把一部分函数内联,以及循环进行循环展开,并且调整部分计算过程顺序。这会导致反编译回来的代码阅读略显困难。此外,反编译后,没有变量名称信息,也会让代码阅读比较困难,但基本上,这些系统也已经做到极限了。

另外,逆向工程如果学习研究为目的,是受我国法律保护的。上面有些回答是不正确的。

java改成c语言,java转换成c语言-第1张图片-安济编程网
图片来源网络,侵删)

这个的话目前只能反汇编了,反汇编软件有ollydbg,Win32Da***等,把exe反向转成汇编语言了。

目前除了.net和j***a等语言写的程序可以反编译成原代码外,c、c++写的程序是无法反成原代码的。

你好,

java改成c语言,java转换成c语言-第2张图片-安济编程网
(图片来源网络,侵删)

如何反编译exe文件反编译exe文件基本上是不可能的,因为反编译过程由很多因素会干扰,反编译过程: 检测程序时候加壳.如何反编译一个exe文件,并修改里面一句代码只能反汇编,这种软件有很多的,如ollydbg,Win32Da***等,可以把exe反向转成汇编代码,如何将.exe的可执行程序反编译成为C语言代码程序,有个EXE2C的软件可以 不过反编译出来的代码基本可读性很差, 如果能有那么好的软件能把软件完美的 ,

谢谢邀请,

J***a能不能像C语言不通过JVM虚拟机直接编译成二进制机器码,让计算机直接运行

C语言的编译过程如下:

java改成c语言,java转换成c语言-第3张图片-安济编程网
(图片来源网络,侵删)

C源程序-->预编译处理(.c)-->编译、优化程序(.s、.a***)-->汇编程序(.obj、.o、.a、.ko)-->链接程序(.exe、.elf、.axf等),如图1所示。其实编译里面还包括词法分析语法分析、语义分析,就不展开说了。

而J***a的执行可以分为两大步骤,如图2所示,第一是编译,这一过程就是调用的j***ac命令,编译成对应的.class文件。第二是解释执行,这一过程是调用的j***a命令,其实我理解的是调用了J***a里的jvm,即j***a虚拟机。JVM其实计算机把高级语言解析机器码都会存在一个类似这样的中间件。在c#中,我知道先编译成CIL托管代码,然后Jit编译器在CLR(公共语言运行时)这样一个库下把托管代码解释成可执行文件.exe或者dll现在我就把JVM看作是JIT编译器。把要执行的代码翻译给计算机听,然后机器执行,大致也就是这么个道理。当然了J***a程序还是通过解释器进行解释执行时,当JVM发现某个方法或代码块运行特别频繁的时候,就会认为这是“热点代码”(Hot Spot Code)。然后JIT会把部分“热点代码”翻译成本地机器相关的机器码,并进行优化,然后再把翻译后的机器码缓存起来,以备下次使用。总的来说还是需要JVM。

如果你想把J***a编译成二进制机器码,那要重新开发一个编译器,将J***a源代码通过编译(包括词法分析、语法分析、语义分析,中间代码,优化等)生成汇编语言,然后再转化成机器码。这样以来,每个平台(X86,ARM,MIPS,PowerPC等)都需要重新编译生成相应平台的机器码,而且如果没有JVM,就没有GC(垃圾自动回收)功能了。


到此,以上就是小编对于j***a改成c语言的问题就介绍到这了,希望介绍关于j***a改成c语言的2点解答对大家有用。

标签: 编译 机器码 代码

上一个python运维学习计划,python运维怎么学

下一个学习linux需要图形界面吗,linux必须要学吗