Хакер писал(а):Там будет jmp в винтересную DLL
Т.е. dll загружена, но вызов сперва форвардится "на страницы памяти, не принадлежащие ни одному из загруженных образов", а потом уже в саму интересную dll? Ну, ИМХО, это уж слишком мудрено.
Хакер писал(а):тогда и DLL будет в принципе
Ну так и я о том же - тогда и дизасм не поможет - это будет inject OP-кодов.
По поводу дальнейшего списка: можно сразу вызывать ntdll-ные аналоги. Чтобы обойти IAT - вызывать сразу по адресу, причем для kernell/ntdll GetProcessAddress не нужен, они всегда мэппятся в один адрес, можно его хоть константой прописать.
Хакер писал(а):Чтение из файла может «сэмулировано"
ИМХО проще CreateFile (или NTCreateFile) перехватить и открыть "левый" уже пропатченный файл. Копая дальше, можно добраться до перехвата прерываний на уровне ядра да и еще многого, чего ни я, ни , возможно, Вы не знаете.
Предлагаю вернуться к креативу. Итак, есть 2 задачи:
1. Определить триал период
2. Сделать это как можно менее заметным
Сперва 1. Надо 2 величины - Start и Current
Start можно прописать при установке в закрытой ветке реестра или в ресурсах родного екзешника (можно закриптовать).
Варианты получения Current:
а) Now (aka GetSystemTime или ZwQuerySystemTime, кстати, насколько мне известно, они НЕ связаны). Недостатки - перевод часов юзером, в т.ч. из под БИОС.
б) Чтение метки с файла/ветки реестра - ИМХО заведомо дохлая идея - редко обновляющиеся - оставят дату от Р.Х., часто обновляющиеся - поменяют вместе с системой.
с)....?
Как отследить перевод часов? ИМХО - рыть надо в сторону виндовских логов. На выходных покопаюсь, постараюсь сделать API вариант. Если мне не изменяет память, в WMI тож что-то про логи было - пусть автор вопроса в "своем любимом" интсрументе покопается.
По поводу "менее заметно" - можно, конечно, и свою ОСь под проект написать, или на микроконтроллерах девайс для налоговой отчетности сделать, но давайте что-то типа "цена/качество" учитывать.