MyWackoSite: DmitryKolbin ...

Home Page | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация | Вход:  Пароль:  

Набор тестовых Win32 программ

Вам запрещён доступОписание
текущий набор задач использует следующие syscall'ы Вам запрещён доступNtCreateFile, Вам запрещён доступNtOpenFile, Вам запрещён доступNtWriteFile, Вам запрещён доступNtClose. Набор состоит из следующих программ:
create.exe — создает файл, используя ntdll.lib
create2.exe — создает файл, не используя ntdll.lib
writefile.exe — пишет в существующий файл в юникоде, используя ntdll.lib
writefile2.exe — пишет в существующий файл в юникоде, используя ntdll.lib
Примечание
  1. Так как создавались программы с минимальными зависимостями, пришлось отказать от libc, в следствии чего отсутствуют функции mainCRTStartup и подобные, которые являются настоящими точками входа в программу, точка входа в программу указывается с помощью опции /entry линкера.
  2. mainCRTStartup в libc организует передачу в main() аргументов командой строки.
  3. Передачи аргументов в данной реализации нет, для задания неоторых опций определены define'ы:
    • CREATING_FILE – файл, который создается программой create
    • WRITING_FILE – файл, в который пишет программа writefile
    • WRITE_WORD – слово, записываемое в WRITING_FILE

исходники, сборка

исходники
в папках 2003 и xp находятся библиотека ntdll для 2003 и xp версий Windows соответственно.

для сборки используется nmake:
можно указать в качестве цели одну из вышеперечисленных программ, тогда будет собрана только она.
var --один из вышеперечисленных define'ов, value — его значение.
очистка:
nmake /F makefile_xp clean
little hint по cl.exe и link.exe:

Примечание
Для вызова syscall'ов в программах без зависимости от ntdll используется инструкция sysenter архитектуры i686, её можно заменить, реализовав функцию _syscall@0 иначе чем в sysenter.asm

Программы для solaris

исходники
В данной реализации аргументы функций для пока что мнимых syscall'ов помещались так же как и в windows (cdecl соглашение), производятся два «мнимых» call'а — дважды помещается в стек регистр esp, затем в eax помещался номер syscall'а (использовались номера аналогичные win2003), а edx — текущее значение esp. Далее следует вызов sysenter.

Примечание

Ссылки


 
Файлов нет. [Показать файлы/форму]
Комментарии [Скрыть комментарии/форму]
> На самом деле прямого вызова sysenter пока не происходит

Ради смеха можно положить нужные машинные коды на стек и оттуда их исполнить.


А можно не извращаться и написать что-то в духе:

-- VizovitinNicolay (2009-07-16 13:13:04)