我如何找出此代码是经过加密还是编译,然后对其进行反向工程?

问题描述 投票:0回答:1

我想查看文件的代码,它是经过加密或编译的,我无法确定它是哪一个。代码可能是c,但我什至找不到c反编译器。我可以看到两种类型的代码,一种是当我用崇高的文本打开它时,它在列中显示了一些数字和字母,另一种是当我用Visual Studio代码将其打开时,它显示了一些未知的字符,而一些普通的文本却没有不会编译的代码(例如:应打印的文本)无法将Visual Studio代码粘贴到此处,但我发现了一些有趣的东西,可能会有所帮助:“ GCC:(Ubuntu 4.8.4-2ubuntu1〜14.04.3)4.8.4”

Sublime Text代码示例:

7f45 4c46 0201 0100 0000 0000 0000 0000
0200 3e00 0100 0000 d00a 4000 0000 0000
4000 0000 0000 0000 2822 0000 0000 0000
0000 0000 4000 3800 0900 4000 1e00 1b00
0600 0000 0500 0000 4000 0000 0000 0000
4000 4000 0000 0000 4000 4000 0000 0000
f801 0000 0000 0000 f801 0000 0000 0000
0800 0000 0000 0000 0300 0000 0400 0000
3802 0000 0000 0000 3802 4000 0000 0000
3802 4000 0000 0000 1c00 0000 0000 0000
1c00 0000 0000 0000 0100 0000 0000 0000
0100 0000 0500 0000 0000 0000 0000 0000
0000 4000 0000 0000 0000 4000 0000 0000
bc18 0000 0000 0000 bc18 0000 0000 0000
0000 2000 0000 0000 0100 0000 0600 0000
101e 0000 0000 0000 101e 6000 0000 0000
101e 6000 0000 0000 e002 0000 0000 0000
3067 0000 0000 0000 0000 2000 0000 0000
0200 0000 0600 0000 281e 0000 0000 0000
281e 6000 0000 0000 281e 6000 0000 0000
cryptography reverse-engineering decompiling
1个回答
1
投票

您正在根据文件的开头(魔术编号)查看GCC编译的ELF Linux可执行文件的hexdump。它本身不是加密文件,但可以使用加密功能。

根据所使用的操作系统,您可以尝试使用Ghidra,IDA或GDB(对于调试程序集代码,首先应知道该文件是否可以安全地实际运行)。

作为RE入门者,我建议安装Ghidra,因为它可以为您提供类似C的伪代码,帮助您了解二进制文件在做什么,它在使用哪些库等。

[如果您想了解更多,尝试参加RE课程,或尝试编写非常小的C程序,编译和调试它们,并尝试例如读取coreutils:

https://github.com/coreutils/coreutils/blob/master/src/whoami.c

例如,将其与二进制文件进行比较(向您展示了一些有助于RE的工具,但省略了大部分输出):

$ cat /usr/bin/whoami | less
$ xxd /usr/bin/whoami | less
$ xxd -b /usr/bin/whoami | less
$ readelf -a /usr/bin/whoami
$ file /usr/bin/whoami
/bin/rm: ELF 64-bit LSB executable, x86-64, version1 (SYSV), dynamically linked (uses shared libs), .....
$ man elf
$ objdump -d /usr/bin/whoami | less
$ binwalk /pathto/yourfile

您还可以阅读有关ELF文件格式的更多信息:

https://linuxhint.com/understanding_elf_file_format/

© www.soinside.com 2019 - 2024. All rights reserved.