8 Создание и настройка лабаратории (от AFANX)
8.1 QEMU User-Mode
QEMU - это эмулятор для различных архитектур. Как правило, он используется
для эмуляции целого ПК (т.е. для запуска виртуальной машины). Однако для
отладки одной программы это не обязательно. В
Linux можно использовать
эмуляцию
QEMU User-Mode. Именно этот способ и будет рассмотрен первым.
Наша конечная цель – запускать скомпилированные программы для Arm 32-bit
и Arm 64-bit архитектур в Linux архитектуры x86_64. Для начала необходимо
установить пакеты:
sudo apt-get update
sudo apt-get install qemu qemu-user qemu-user-static
Для Arm 32-bit, нужны бинарные утилиты для
arm и совместимая arm версия
gcc.
sudo apt install gcc-arm-linux-gnueabihf
binutils-arm-
linux-gnueabihf binutils-arm-linux-gnueabihf-dbg
Для AArch64, устанавливаем следующее:
sudo apt install gcc-aarch64-linux-gnu binutils-aarch64-
linux-gnu binutils-aarch64-linux-gnu-dbg
8.2 Компиляция, запуск программ на языке C и
Ассемблер под ARM
Для примера, напишем простою программу и скомпилируем.
Алгоритм 12 hello_pwner64.c
#include
int main()
{
puts(“H3ll0, PWN3R! -> ARM64\n”);
return 0;
}
61
Теперь компилируем с AArch64 версией для gcc и получим статический ELF-
файл. В
дополнение, установим:
sudo apt install gcc-aarch64-linux-gnu
После этого:
aarch64-linux-gnu-gcc -static -o hello64 hello_pwner64.c
Информацию о системе,
можно посмотреть используя uname –a:
Linux kali 6.0.0-kali3-amd64 #1 SMP PREEMPT_DYNAMIC Deban
6.0.7-1kali1 (2022-11-07)
x86_64 GNU/Linux
Как
видно из вывода программы, система x86_64, а
информацию о
скомпилированном файле посмотрю,
используя команду - file hello64:
hello64: ELF 64-bit LSB executable,
ARM aarch64, version
1
(GNU/Linux),
statically
linked,
BuildID[sha1]=269eb716747e8fb915825ce13eedf3d17aa978b3,
for GNU/Linux 3.7.0,
not stripped
Теперь запустим его:
qemu-aarch64 ./hello64
И ожидаемый вывод:
H3ll0, PWN3R! -> ARM64
Do'stlaringiz bilan baham: