Отладка приложений


Точки прерывания на системных или экспортируемых функциях - часть 4


К счастью, вычислить это число довольно просто: оно равно сумме байт, отводимых в стеке для всех параметров. Для семейства CPU Intel Pentium нужно просто сосчитать число параметров и умножить его на 4. Для функции LoadLibrary, которая имеет один параметр, окончательное декорированное имя выгладит так: _LoadLibraryA@4. Вот еще два примера, которые показывают, как должны выглядеть окончательные декорированные имена функций:

  •  _createProcessA040 — для функции CreateProcess, которая имеет 10 параметров;
  •   _TlsAiioc@o — для функции TisAiioc, которая не имеет параметров.

Даже если функция не имеет параметров, нужно придерживаться формата "@#" (как мы только что видели, декорированное имя функции TISAIIOC имеет вид maiito:_TlsAiioc@o). Когда символы не загружаются, ANSI- и Unicode-условия все еще применимы. Если символы загружены, синтаксис прерывания на LoadLibrary выглядит или так: {, ,KERNEL32.DLL}_LoadLibraryA@4, или так: {,, KERNEL32. DLL}_LoadLibraryW@4.

 




Начало  Назад  Вперед



Книжный магазин