如何判断程序是用什么编程语言实现

文摘   2024-10-24 17:40   上海  


程序可以分为很多种,一个脚本也能首先功能也称之为程序,还有比如编译好的二进制程序。例如C语言、Python、Go、Java、Rust等语言编译成EXE程序,如果不给你看源代码,你将如何判断这个程序是用使用哪个语言编写的呢?

GUI

首先,GUI可以判断语言使用的库,从样式上就可以判断,当然有一些使用前端架构编写的GUI就难以分辨。当然也不一定准确

例如Python长这样(TK库)

Java长这样

报错信息

当然如果没有命令行,也可以从报错中看出端倪

python的报错,如SyntaxErrorTypeErrorValueError等,要么就算缺少啥依赖,要么就算异常处理导致的。

SyntaxError: invalid syntax (example.py, line 5)
NameError: name 'undefined_variable' is not defined
TypeError: can only concatenate list objects (not "str") to list objects

Java的报错,特别长的类命名一看就java

java.lang.NullPointerException: Attempted to use null object
java.lang.ArrayIndexOutOfBoundsException: Index 10 out of bounds for length 10
java.lang.IllegalArgumentException: Invalid argument exception message

go的报错

fatal error: index out of range
panicked at 'index out of range' panic.go:46
fatal error: stack overflow

rust的panic!

thread 'main' panicked at 'index out of bounds: the length is 3 but the index is 10', src/main.rs:2:20

使用DIE

DIE可以尝试判断语言,像Go、Python非常好判断

但是Rust就无法看出

这时候,我们可以查看字符串

GO,看有没有一些Github的地址

Rust,搜索rs文件,cargo字符串等等

同样使用DIE工具就可以看

直觉

大佬说ida打开看能不能看懂

一点看不懂就是rust

懂一点就是go

看懂大部分就是c

不知道大家是怎么知道程序是使用什么语言实现的呢?

加入逆向群一起学习



Eonian Sharp
Eonian Sharp | 永恒之锋,专注APT框架、渗透测试攻击与防御的研究与开发,没有永恒的安全,但有永恒的正义之锋击破黑暗的不速之客。
 最新文章