站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题有没办法检查出一个程序(exe文件)是不是用java写的?

有没办法检查出一个程序(exe文件)是不是用java写的?

摘要: 有没办法检查出一个程序(exe文件)是不是用java写的?


如何检查?


给作者发电子邮件
接分,Oh Yeah~


这样也想接分呀,美你的去吧


反编译一下看看
可以考虑用OD或者IDA,C32ASM等等


用Spy++


等待高人指点,不知peid能否查到


peid主要是侦壳的


这个如果生成时不给标明,基本 上是没法实现的,

给作者发电子邮件
接分,Oh Yeah~

这个的建议可行


找个反编译软件


找找看有没有没有封装的端口


改后缀为.jar 用解压软件看是否可以打开。一般的java的exe加壳工具打包的都可以用解压软件打开


改后缀为.jar 用解压软件看是否可以打开。一般的java的exe加壳工具打包的都可以用解压软件打开
-------------------------------------------
改成zip行吗?直接双击就打开了,哇咔咔咔咔~


反编译一下


好像不可以!


不可以把


这个恐怕要看各自的道行了,没有一定之规。不过,多数情况下应该是有迹可寻的。


简单,你把你机器上的jre 卸掉 ,然后看还能执行不! java虽然能专成exe 但是内部还是用脚本掉用jar,没有jar 是不能运行的!


java是不能生成exe的 他使用的是winrar生成的exe 执行jar的脚本而已
你直接拿winrar看能不能打开,如果能打开再看里面就是java的了

我倒看看csdn倒还有没有人只问问题不散分了


我觉得应该很简单吧,你不装JAVA运行环境,如果还可以运行,肯定不是JAVA的


还是这个方法好,哈哈

---------------------
给作者发电子邮件
接分,Oh Yeah~


执行之后会启动java(w).exe进程


> 我觉得应该很简单吧,你不装JAVA运行环境,如果还可以运行,肯定不是JAVA的

> 执行之后会启动java(w).exe进程

这两个都不是彻底的办法。我自己做个程序包,把 JRE 里必要的东西都带进去,然后做个 EXE 通过 JVM.DLL 加载虚拟机。这样的话,既不需要目标机器预先安装 JRE,也不会看到 java.exe 进程。

总之,不会有什么“彻底”的办法。


删除环境变量中的JAVA_HOME试试。


shine333(enihs)说的方法最简单^_^
如果是纯exe脱离了jre的,除非文件中有属性标记(比如delphi的程序,如果用UE打开,都会有一句:This program cannot be run in DOS mode),否则基本考猜测了。如果是封装的exe,就用解压法或者运行法,呵呵。


不知道楼上各位是否知道
jar2exe (这个生成的exe程序不能解压且无javaw进程)
所以我觉得把JRE卸了看看可不可以运行比较保守



真TMD简单的办法,你把Java虚拟机卸载了它还能运行就不是Java的,否则就是。


也有可能不是纯EXE文件,比如Eclipse中的EXE只是一个加载程序


mk


问作者


如果能用winrar解压缩,就说明是jar转的


学习了


有没有把具体的操作说一下?


exe文件是给windows处理的可执行文件,与什么语言写的无关吧


java的exe文件大多数的都能用解压缩工具解开,
如果不能解开就是楼上那些方法,卸载虚拟机等。
不过也可能打包时就把虚拟机打到里面了,可能需要看是否有JAVAW进程了

不知道有什么完美的方案


查看文件的字符串,看是否包括JAVA字符串


没见过用java生成exe,只见过java通过jni生成exe,但那已经是C/C++的code了。呵呵。


> 如果能用winrar解压缩,就说明是jar转的
这位兄台混淆了充分条件和必要调价,“Jar转的”=>“能用winrar解压缩”,“能用winrar解压缩”=>“Jar转的”
RAR,LZH,ISO都可以用WinRAR解压

反正Java程序无法脱离JVM,即使原先是Java程序的,但是经过工具转化,不再需要JVM了的程序,我们也不认为它是Java程序了。


没想到这个贴热成这样了,只100分都不知道如何给大家了


侦壳。还可以运行看任务管理器,看有没有java进程。


调试之!看运行的过程!如果都是win api,肯定是非java


反编译,然后观察是不是.JAVA或.CLASS的后缀名。


没装java虚拟机不能运行, 那就自然是java写的喽
反正我没见几台机器上装java虚拟机了


学习中!



minispy
spy++


如果这个exe有图形界面,随便搂一眼也知道它是用awt,swing 还是swt写的。


stonegump(龙飞虎) ( ) 信誉:100 Blog 2006-09-26 11:43:00 得分: 0


如果这个exe有图形界面,随便搂一眼也知道它是用awt,swing 还是swt写的。


---------------------
这倒未必


改后缀为.jar 用解压软件看是否可以打开。一般的java的exe加壳工具打包的都可以用解压软件打开



运行速度特别慢的就是java写的了。。。


:) joke


没装java虚拟机不能运行, 那就自然是java写的喽
反正我没见几台机器上装java虚拟机了

-------------------------------
大哥,你不知道jre也可以绑在一起的阿?可以把jre跟软件放在一起打包的。。。



运行软件后,看看你的进程是否增加了一个javaw


maquan('ma:kju) ( ) 信誉:100 Blog 2006-9-25 11:51:42 得分: 0



> 我觉得应该很简单吧,你不装JAVA运行环境,如果还可以运行,肯定不是JAVA的

> 执行之后会启动java(w).exe进程

这两个都不是彻底的办法。我自己做个程序包,把 JRE 里必要的东西都带进去,然后做个 EXE 通过 JVM.DLL 加载虚拟机。这样的话,既不需要目标机器预先安装 JRE,也不会看到 java.exe 进程。

总之,不会有什么“彻底”的办法。

学习中。




有毛病, 这类问题讨论的这么激烈, 有意义么?


java 的慢,wakaka~~~


Java的界面风格跟标准Windows风格很不同,基本上一看就能分辨出来。
很同意kwanhong的观点。


我是来接分滴!!~


最简单的做法,在一个没有装 JRE 的机器上运行,能成功则表示这个程序不依赖于 Java 运行环境。


我靠说了一半天怎么都这么麻烦呀 朋友这个问提好象解决不解决都没有什么区别哈


其实不难,楼主你检查一下这个可执行文件的头4个字节是不是"c","a","f","e"

如果是的话, 就说明它是一个java可执行文件

请参考<>第4章对exec函数讲解的那一段


见这么热闹,我来说两句,上面有的朋友所说的,看看能不能用winrar解压,及不装jre是否能运行,这两种作法都不是严瑾的,有一个软件,叫NativeJ, 这个软件做成的exe是不能被WinRar解压的,而且,可以把jre合并进最后生成的exe文件中,那么就算目标机子不装jre,也一样能运行。
其实,java做的程序,光从界面及菜单的弹出速度就能感受出来了。而且也有绝对点的判断方法,你运行exe后,在进程管理器中,看看是否多了个javaw.exe进程就行了。




可能真的需要靠感觉来判断了...

补楼上, 前面有位老兄说, 可以怎么弄个什么虚拟机DLL, 以避免出现javaw.exe进程...


哈哈~~~~~一般用JAVA做的软件的界面肯其他软件做的界面有区别~~~可以看出来的~~


用反编译软件打开可以看出是什么语言的。不过,我觉得探讨这个问题实在是没有任何意义,是又怎么样?不是又怎么样呢?大家还是花点时间做些有意义的事情吧。


答案在这里:


如果是java做的exe文件;使用任何一个文本编辑器打开,在exe文件的末尾都包含有该exe文件使用的class名字


看在没有JAVA环境的电脑上能不能运行.
JAVA编的程序要在JAVA环境下才能运行.


mark


学习了。
我还是比较常用的是看启动的进程。先把会引起歧义的kill掉,启动程序后看一下就可以了。


↑返回目录
前一篇: 求一正则表达式
后一篇: 关于类的设计