создание проекта
This commit is contained in:
parent
edc749eab2
commit
b8cbe95d2b
146
README.md
146
README.md
|
|
@ -18,31 +18,55 @@
|
||||||
|
|
||||||
## 🚀 Быстрый старт
|
## 🚀 Быстрый старт
|
||||||
|
|
||||||
### Сборка
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# Клонирование репозитория
|
||||||
git clone https://github.com/artradeskz/ndisasm-ru.git
|
git clone https://github.com/artradeskz/ndisasm-ru.git
|
||||||
cd ndisasm-ru
|
cd ndisasm-ru
|
||||||
|
|
||||||
|
# Сборка
|
||||||
make
|
make
|
||||||
```
|
|
||||||
|
|
||||||
### Использование
|
# Запуск
|
||||||
|
|
||||||
```bash
|
|
||||||
./ndisasm-ru -b 32 файл.bin
|
|
||||||
./ndisasm-ru -b 64 файл.elf
|
./ndisasm-ru -b 64 файл.elf
|
||||||
```
|
```
|
||||||
|
|
||||||
### Пример
|
---
|
||||||
|
|
||||||
Входные байты: `B8 01 00 00 00`
|
## 📖 Пример вывода
|
||||||
|
|
||||||
| Оригинальный ndisasm | ndisasm-ru |
|
Ниже приведён фрагмент дизассемблирования самого `ndisasm-ru` в 64-битном режиме. Хорошо видно, как инструкции и регистры переводятся на русский язык:
|
||||||
|---|---|
|
|
||||||
| `mov eax,0x1` | `переместить еаикс,0x1` |
|
```bash
|
||||||
| `add eax,0x2` | `прибавить еаикс,0x2` |
|
$ ./ndisasm-ru -b 64 -o 0x81380 -e 0x81380 ndisasm-ru | head -20
|
||||||
| `cmp eax,ebx` | `сравнить еаикс,ебикс` |
|
00081380 B957040000 переместить есикс,0x457
|
||||||
| `jmp 0x1234` | `переход 0x1234` |
|
00081385 488D154C6A0000 загрузить_адрес рдикс,[rel 0x87dd8]
|
||||||
|
0008138C 488D355D6F0000 загрузить_адрес рсиай,[rel 0x882f0]
|
||||||
|
00081393 488D3D4B6A0000 загрузить_адрес рдиай,[rel 0x87de5]
|
||||||
|
0008139A E87F010000 вызвать 0x8151e
|
||||||
|
0008139F F30F1EFA endbr64
|
||||||
|
000813A3 50 втолкнуть раикс
|
||||||
|
000813A4 58 вытолкнуть раикс
|
||||||
|
000813A5 50 втолкнуть раикс
|
||||||
|
000813A6 E8B5540000 вызвать 0x86860
|
||||||
|
000813AB E860FEFFFF вызвать 0x81210
|
||||||
|
000813B0 F30F1EFA endbr64
|
||||||
|
000813B4 50 втолкнуть раикс
|
||||||
|
000813B5 58 вытолкнуть раикс
|
||||||
|
000813B6 488D3DC3720000 загрузить_адрес рдиай,[rel 0x88680]
|
||||||
|
000813BD 50 втолкнуть раикс
|
||||||
|
000813BE 31C0 исключающее_или еаикс,еаикс
|
||||||
|
000813C0 E805000000 вызвать 0x813ca
|
||||||
|
000813C5 E8E6FFFFFF вызвать 0x813b0
|
||||||
|
000813CA F30F1EFA endbr64
|
||||||
|
```
|
||||||
|
|
||||||
|
**Что мы видим в этом выводе:**
|
||||||
|
- `mov ecx,0x457` → `переместить есикс,0x457`
|
||||||
|
- `lea rdx,[rel 0x87dd8]` → `загрузить_адрес рдикс,[rel 0x87dd8]`
|
||||||
|
- `call 0x8151e` → `вызвать 0x8151e`
|
||||||
|
- `push rax` → `втолкнуть раикс`
|
||||||
|
- `pop rax` → `вытолкнуть раикс`
|
||||||
|
- `xor eax,eax` → `исключающее_или еаикс,еаикс`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -108,30 +132,16 @@ ndisasm-ru/
|
||||||
| `r8` – `r15` | `р8` – `р15` |
|
| `r8` – `r15` | `р8` – `р15` |
|
||||||
| `eax` | `еаикс` |
|
| `eax` | `еаикс` |
|
||||||
| `ebx` | `ебикс` |
|
| `ebx` | `ебикс` |
|
||||||
| ... | ... |
|
| `ecx` | `есикс` |
|
||||||
|
| `edx` | `едикс` |
|
||||||
|
| `esi` | `есиай` |
|
||||||
|
| `edi` | `едиай` |
|
||||||
|
| `esp` | `есипи` |
|
||||||
|
| `ebp` | `ебипи` |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔧 Сборка из исходников
|
## 🔧 Использование
|
||||||
|
|
||||||
```bash
|
|
||||||
# Клонирование репозитория
|
|
||||||
git clone https://github.com/artradeskz/ndisasm-ru.git
|
|
||||||
cd ndisasm-ru
|
|
||||||
|
|
||||||
# Сборка
|
|
||||||
make clean
|
|
||||||
make
|
|
||||||
|
|
||||||
# Проверка
|
|
||||||
echo -n -e "\xB8\x01\x00\x00\x00" > test.bin
|
|
||||||
./ndisasm-ru -b 32 test.bin
|
|
||||||
# Ожидаемый вывод: 00000000 B801000000 переместить еаикс,0x1
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📖 Использование
|
|
||||||
|
|
||||||
### Основные опции
|
### Основные опции
|
||||||
|
|
||||||
|
|
@ -179,55 +189,6 @@ echo -n -e "\xB8\x01\x00\x00\x00" > test.bin
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
Я добавил пример вывода дизассемблирования самого `ndisasm-ru`. Вот обновлённый раздел `README.md` с этим примером:
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 📖 Пример вывода
|
|
||||||
|
|
||||||
Ниже приведён фрагмент дизассемблирования самого `ndisasm-ru` в 64-битном режиме. Хорошо видно, как инструкции и регистры переводятся на русский язык:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ ./ndisasm-ru -b 64 -o 0x81380 -e 0x81380 ndisasm-ru | head -20
|
|
||||||
00081380 B957040000 переместить есикс,0x457
|
|
||||||
00081385 488D154C6A0000 загрузить_адрес рдикс,[rel 0x87dd8]
|
|
||||||
0008138C 488D355D6F0000 загрузить_адрес рсиай,[rel 0x882f0]
|
|
||||||
00081393 488D3D4B6A0000 загрузить_адрес рдиай,[rel 0x87de5]
|
|
||||||
0008139A E87F010000 вызвать 0x8151e
|
|
||||||
0008139F F30F1EFA endbr64
|
|
||||||
000813A3 50 втолкнуть раикс
|
|
||||||
000813A4 58 вытолкнуть раикс
|
|
||||||
000813A5 50 втолкнуть раикс
|
|
||||||
000813A6 E8B5540000 вызвать 0x86860
|
|
||||||
000813AB E860FEFFFF вызвать 0x81210
|
|
||||||
000813B0 F30F1EFA endbr64
|
|
||||||
000813B4 50 втолкнуть раикс
|
|
||||||
000813B5 58 вытолкнуть раикс
|
|
||||||
000813B6 488D3DC3720000 загрузить_адрес рдиай,[rel 0x88680]
|
|
||||||
000813BD 50 втолкнуть раикс
|
|
||||||
000813BE 31C0 исключающее_или еаикс,еаикс
|
|
||||||
000813C0 E805000000 вызвать 0x813ca
|
|
||||||
000813C5 E8E6FFFFFF вызвать 0x813b0
|
|
||||||
000813CA F30F1EFA endbr64
|
|
||||||
```
|
|
||||||
|
|
||||||
**Что мы видим в этом выводе:**
|
|
||||||
- `mov ecx,0x457` → `переместить есикс,0x457`
|
|
||||||
- `lea rdx,[rel 0x87dd8]` → `загрузить_адрес рдикс,[rel 0x87dd8]`
|
|
||||||
- `call 0x8151e` → `вызвать 0x8151e`
|
|
||||||
- `push rax` → `втолкнуть раикс`
|
|
||||||
- `pop rax` → `вытолкнуть раикс`
|
|
||||||
- `xor eax,eax` → `исключающее_или еаикс,еаикс`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
Этот пример наглядно демонстрирует, как `ndisasm-ru` переводит реальный машинный код в читаемый синтаксис КВС.
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
## ⚠️ Ограничения
|
## ⚠️ Ограничения
|
||||||
|
|
||||||
- Поддерживаются только инструкции x86-64, присутствующие в таблице перевода
|
- Поддерживаются только инструкции x86-64, присутствующие в таблице перевода
|
||||||
|
|
@ -247,13 +208,11 @@ $ ./ndisasm-ru -b 64 -o 0x81380 -e 0x81380 ndisasm-ru | head -20
|
||||||
- **Исходный код:** https://git.nasm.us/nasm.git
|
- **Исходный код:** https://git.nasm.us/nasm.git
|
||||||
- **Лицензия:** BSD 2-Clause License
|
- **Лицензия:** BSD 2-Clause License
|
||||||
|
|
||||||
```
|
> Авторские права © 1996-2025 Авторы NASM. Все права защищены.
|
||||||
Авторские права © 1996-2025 Авторы NASM. Все права защищены.
|
>
|
||||||
|
> Распространение и использование разрешены при условии сохранения
|
||||||
Распространение и использование разрешены при условии сохранения
|
> уведомления об авторских правах и списка условий.
|
||||||
уведомления об авторских правах и списка условий.
|
> Подробнее: https://opensource.org/licenses/BSD-2-Clause
|
||||||
Подробнее: https://opensource.org/licenses/BSD-2-Clause
|
|
||||||
```
|
|
||||||
|
|
||||||
### Модификация для КВС
|
### Модификация для КВС
|
||||||
|
|
||||||
|
|
@ -289,4 +248,5 @@ $ ./ndisasm-ru -b 64 -o 0x81380 -e 0x81380 ndisasm-ru | head -20
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
*ndisasm-ru — Русский дизассемблер для КВС*
|
*ndisasm-ru — Русский дизассемблер для КВС*
|
||||||
|
```
|
||||||
Loading…
Reference in a new issue