首页
社区
课程
招聘
[旧帖] 如何判断一个exe程序是用什么语言写的啊?谢谢 0.00雪花
发表于: 2010-1-19 20:35 48973

[旧帖] 如何判断一个exe程序是用什么语言写的啊?谢谢 0.00雪花

2010-1-19 20:35
48973
如题:有什么办法能判断一个exe程序是用什么语言写的??

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费
支持
分享
最新回复 (36)
雪    币: 458
活跃值: (426)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
2
2010-1-19 21:18
0
雪    币: 56
活跃值: (276)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
用查壳工具PEID DIE 等等
下载地址:http://www.pediy.com/tools/unpacker.htm
如果没有壳则可以看出使用什么语言编写的。举例说装了peid后,选中exe文件一般在鼠标右键会有一个scan with peid的选项,选择此项若该exe文件没有加壳就会显示类似下图的内容:
可以看出所查exe文件是用microsoft visual c++v6.0编的
上传的附件:
2010-1-21 22:11
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
一般没有办法可以保证获取EXE文件是什么语言写的,只是对于编译后没有进行任何处理的EXE文件,可以去看它是否符合常见的DELPHI、VB、VC++等编译器的规律,然后猜测其是什么语言编写的。对于高级语言的反编译,理论上就是不可能的,除非是对于PHP、FOXPRO这些伪编译系统。虽然EXE都可以反汇编,但是真正想反汇编之后做个什么大的手足,是非常非常困难的。
2010-1-24 12:11
0
雪    币: 65
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
用PEID或FI来查啊,其他的也有
2010-1-24 14:15
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
看输入表
有vb的vb写的
mfc的是vc
delphi看pe区段有规律
看的多了1眼就知道,就是加密的看pe区段也有规律
2010-1-24 15:16
0
雪    币: 125
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
很好很强大,上面的ocean7和用peid都可以查出来
2010-1-24 16:41
0
雪    币: 193
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看程序入口点特征也行
2010-1-24 17:28
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
9
除了眾版友的方法外,還有一個更簡單的方法。
去查看  eof 的那個 sector.
什麼叫 eof 的 sector?
簡單來說,就是查看那個 exe file 的磁區(sector),通常在 eof( end of file)後,會有 "空著" (available)的一些 information,而這些 information 都是以 "plaintext" 的 ascii 方式呈現出來的。
有時後運氣好,可以直接看見這些 information,譬如那一種 compiler 及 version.
上传的附件:
2010-1-25 22:55
0
雪    币: 808
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
10
这个方法不好找到。。。
2010-1-26 00:06
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
请教9楼的rockinuk朋友,你说的eof( end of file) 一般是怎么判断的
是在什么位置呢
2010-1-26 09:05
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
12
To adairs,
   所謂的 eof, 指的就是檔案的尾巴。
為什麼要去找檔案的尾巴? 因為....這涉及到 FS (file system) 及 diskette 的設計原理。
這個方法對所有的 file 都適用,不一定只有 exe file.
2010-1-26 10:21
0
雪    币: 135
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
学习了,直接深入内部
2010-1-26 10:26
0
雪    币: 109
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
14
用PEID还是比较直接的
2010-1-26 10:34
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
15
有時候得看運氣。
舉例來說:
當 我 compiled 一個 exe file,然後我 send 給你時,在 tail 的 sector 上會有 " 殘餘" 的 information. 當這個 file 轉手很多人之後,這個 " 殘餘" 會隨之降低。
這個關係是與轉手次數成反比遞減。
2010-1-26 10:38
0
雪    币: 458
活跃值: (426)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
16

完全看不懂,太深奥了  一个file转手之后会发生变化吗?他的MD5值不都是一样的吗
2010-1-26 10:44
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
17
因為你只看見你看懂的,你沒仔細理解我所說的。
2010-1-26 10:48
0
雪    币: 458
活跃值: (426)
能力值: ( LV9,RANK:610 )
在线值:
发帖
回帖
粉丝
18
1
這涉及到 FS (file system) 及 diskette 的設計原理


应该是因为我不懂上面那知识导致的!
2010-1-26 10:57
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
19
這樣說好了。
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream.h>
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <math.h>
int main()
{
      int a;
      printf("Hello World!");
      system("PAUSE");
      return 0;
}


分別透過 DEV C++ 4.01 版 及 Mscrosoft Visuall C++ 6.0 版進行 compiled. (在附件可見)
然後透過 file dump 或是其他的 hex editor 去看看這個 exe file 的內容。
我們可以得到初步的結果:
1) 對於 DEV C++ 所產生的 exe file 來說,裡面沒辦法直接的看到 DEV 等字樣的 information.
2) 對於 Microsoft Visuall C++ 6.0 版所 compiled 的 exe file 來說,比較容易 search 到 " Microsoft Visuall C++ " 這個字樣。
當然,這方法只是簡易地,在你沒有任何像 PEiD這類的 tools 在手邊時,你得想辦法用其它的方法達到目的。

以上是直接 view file 的 contents.

3) 第三種是, “殘餘”。
什麼是 tail of remainder?
For example, test.ex_.DEVC401.txt 是 21.5 KB (22,016 bytes),這是這個 file 的 size,
但,在電腦上,並不是這樣。 22016/ 2048 = 10.75
一個 sector 可以儲存 2048 bytes. 那 22016 bytes 則需要 10.75  個 sectors.
又,你的 PC 會用 11 個 sectors 來放 這個 file.
所以,最後的那個 sector (也就是第 11 個 sector),只存放 1536 bytes. 那還有 512 個unavailable bytes,這個 512 bytes 就叫 "殘餘"。
殘餘並沒辦法用來當做 available disk space,那這 512  會放什麼 contents?
Good question!
沒人知道。
可能....如....
1) 當你 read/write file 時,尤其在 compiling 階段所產生 exe file 時,PC 就 "隨手" 把 memory 某一個 fragmentation segment 的內容給 "填補" 進去。講白話文叫 " 湊整數"。
2) 其它。

※ 以上描述的很雜亂,請見諒。如有興趣者,請自己去 try try 看,体驗一次就會明白。
上传的附件:
2010-1-26 11:24
0
雪    币: 433
活跃值: (1890)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
20
PEID也会误报的,不要太过于依赖它
2010-1-26 11:45
0
雪    币: 433
活跃值: (1890)
能力值: ( LV17,RANK:1820 )
在线值:
发帖
回帖
粉丝
21
顺道过来膜拜一下R大,呵呵
2010-1-26 11:51
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
不愧是版主呀,答案果然很独特~~~
2010-1-26 12:49
0
雪    币: 129
活跃值: (338)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
xed
23
楼上说的英文我全区百度后还是不明白

汗,看来我还有很远的路要走啊
2010-1-26 15:46
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
学习了,望多发一点出来!
2010-1-26 22:24
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
25
File System ( FS , 檔案系統) : 就是 Linux, OS/2 及 MS DOS/ Windows XP 所需要用到的檔案格式。
譬如,  FAT 16, FAT 32, NTFS 等,就是 File System.
Sector (磁區): 一個磁軌 ( track) 包函若干個磁區( sector).
EOF (End of File): 指檔案的結尾,一個檔案(file)不一定是連續儲存在一起,何時表示檔案是最後一個 byte時,就要借助 eof 這個 symbol 來辨認,當然這也要與 partition table 及 root directories 搭配比較精確。
sorry~~我這個內容~~是20幾年前的舊東西,請見諒。
2010-1-26 23:16
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册