Автоматизация редактирования ASM кода — различия между версиями
Материал из Perfect World Develop Wiki
Строка 1: | Строка 1: | ||
− | В данной статье рассматривается создание программы | + | В данной статье рассматривается создание программы, которая автоматически изменяет часть кода в сервере для каких-либо целей. Работа программы построена на шаблонах (англ. pattern), задающих то, что следует заменить, и то, на что следует заменить. Для большего понимания рассмотрим пример: |
* Входная строка | * Входная строка | ||
− | <code> | + | <code>E9 2D 94 00 00 50 E9 4D 20 00 00</code> |
* Паттерн поиска | * Паттерн поиска | ||
− | <code> | + | <code>E9 ?? ?? ?? ?? 50 E9 ?? ?? ?? ??</code> |
* Паттерн замены | * Паттерн замены | ||
− | <code> | + | <code>E9 ?? ?? ?? ?? 90 E9 ?? ?? ?? 01</code> |
+ | * Выходная строка | ||
+ | <code>E9 2D 94 00 00 90 E9 4D 20 00 01</code> | ||
+ | Как видно, здесь отсутствуют оффсеты — это одна из положительных сторон использования паттернов. Таким образом, они делают программу независимой от версий (в пределах разумного, конечно). | ||
Бла-бла-бла, статья еще пишется. | Бла-бла-бла, статья еще пишется. | ||
<syntaxhighlight lang="asm">push eax</syntaxhighlight> | <syntaxhighlight lang="asm">push eax</syntaxhighlight> |
Версия 17:42, 7 сентября 2015
В данной статье рассматривается создание программы, которая автоматически изменяет часть кода в сервере для каких-либо целей. Работа программы построена на шаблонах (англ. pattern), задающих то, что следует заменить, и то, на что следует заменить. Для большего понимания рассмотрим пример:
- Входная строка
E9 2D 94 00 00 50 E9 4D 20 00 00
- Паттерн поиска
E9 ?? ?? ?? ?? 50 E9 ?? ?? ?? ??
- Паттерн замены
E9 ?? ?? ?? ?? 90 E9 ?? ?? ?? 01
- Выходная строка
E9 2D 94 00 00 90 E9 4D 20 00 01
Как видно, здесь отсутствуют оффсеты — это одна из положительных сторон использования паттернов. Таким образом, они делают программу независимой от версий (в пределах разумного, конечно).
Бла-бла-бла, статья еще пишется.
push eax