Как я могу узнать, зашифрован ли этот код или скомпилирован, а затем перепроектировать его? - PullRequest
0 голосов
/ 11 января 2020

Я хочу увидеть код файла, он либо зашифрован, либо скомпилирован, и я не могу узнать, какой это. Код, вероятно, c, но я даже не могу найти c декомпилятор. Я вижу два типа кода, один, когда я открываю его с возвышенным текстом, и он показывает некоторые цифры и буквы в столбцах, а другой, когда я открываю его с помощью кода Visual Studio, и он показывает некоторые неизвестные символы с некоторым нормальным текстом, который не код, который будет скомпилирован (например, текст, который он должен напечатать) Код Visual Studio не может быть вставлен здесь, но я нашел кое-что интересное, что, возможно, поможет: "G CC: (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.3) 4.8.4 "

Образец возвышенного текстового кода:

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

1 Ответ

1 голос
/ 11 января 2020

Вы просматриваете hexdump исполняемого файла ELF Linux скомпилированного G CC, основанный на начале файла (Magi c Number). Сам по себе это не зашифрованный файл, но может использовать функции cryptographi c.

В зависимости от используемой ОС, вы можете попробовать Ghidra, IDA или GDB (для отладки ассемблерного кода вы должны сначала знать, безопасен ли файл для запуска на самом деле).

Как стартер RE, я бы порекомендовал установить Ghidra, так как он может дать вам C подобный псевдокоду, помогающий вам понять, что делает двоичный файл, какие библиотеки он использует, et 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/

...