当前页面: 开发资料首页 → 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掉,启动程序后看一下就可以了。