создание проекта

This commit is contained in:
mzhoot 2026-07-04 16:41:12 +03:00
parent edc749eab2
commit b8cbe95d2b

146
README.md
View file

@ -18,31 +18,55 @@
## 🚀 Быстрый старт
### Сборка
```bash
# Клонирование репозитория
git clone https://github.com/artradeskz/ndisasm-ru.git
cd ndisasm-ru
# Сборка
make
```
### Использование
```bash
./ndisasm-ru -b 32 файл.bin
# Запуск
./ndisasm-ru -b 64 файл.elf
```
### Пример
---
Входные байты: `B8 01 00 00 00`
## 📖 Пример вывода
| Оригинальный ndisasm | ndisasm-ru |
|---|---|
| `mov eax,0x1` | `переместить еаикс,0x1` |
| `add eax,0x2` | `прибавить еаикс,0x2` |
| `cmp eax,ebx` | `сравнить еаикс,ебикс` |
| `jmp 0x1234` | `переход 0x1234` |
Ниже приведён фрагмент дизассемблирования самого `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`сключающее_или еаикс,еаикс`
---
@ -108,30 +132,16 @@ ndisasm-ru/
| `r8` `r15` | `р8` `р15` |
| `eax` | `еаикс` |
| `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, присутствующие в таблице перевода
@ -247,13 +208,11 @@ $ ./ndisasm-ru -b 64 -o 0x81380 -e 0x81380 ndisasm-ru | head -20
- **Исходный код:** https://git.nasm.us/nasm.git
- **Лицензия:** BSD 2-Clause License
```
Авторские права © 1996-2025 Авторы NASM. Все права защищены.
Распространение и использование разрешены при условии сохранения
уведомления об авторских правах и списка условий.
Подробнее: https://opensource.org/licenses/BSD-2-Clause
```
> Авторские права © 1996-2025 Авторы NASM. Все права защищены.
>
> Распространение и использование разрешены при условии сохранения
> уведомления об авторских правах и списка условий.
> Подробнее: 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 — Русский дизассемблер для КВС*
```