Автоматизация редактирования ASM кода — различия между версиями

Материал из Perfect World Develop Wiki
Перейти к: навигация, поиск
Строка 1: Строка 1:
В данной статье рассматривается создание программы на C#, которая автоматически меняет части кода в сервере для каких-либо целей. Работа программы построена на шаблонах (англ. pattern), задающих то, что следует заменить, и то, на что следует заменить. Для большего понимания рассмотрим пример:
+
В данной статье рассматривается создание программы, которая автоматически изменяет часть кода в сервере для каких-либо целей. Работа программы построена на шаблонах (англ. pattern), задающих то, что следует заменить, и то, на что следует заменить. Для большего понимания рассмотрим пример:
 
* Входная строка
 
* Входная строка
<code>0F 29 4E B0 8A</code>
+
<code>E9 2D 94 00 00 50 E9 4D 20 00 00</code>
 
* Паттерн поиска
 
* Паттерн поиска
<code>1</code>
+
<code>E9 ?? ?? ?? ?? 50 E9 ?? ?? ?? ??</code>
 
* Паттерн замены
 
* Паттерн замены
<code>2</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