Термин EntryPoint знаком каждому программисту – это адрес точки входа в программу, т.е. первой инструкции исполняемого кода. Компиляторы прошивают этот адрес в РЕ-заголовок по смещению 28h, а системный "загрузчик образов" потом считывает его от туда, и передаёт на него управление. Такому алгоритму следуют все LDR-загрузчики, начиная с Win98 и до наших дней. Сам загрузчик оформлен в виде функции LdrpInitializeProcess() из библиотеки Ntdll.dll.
В данной статье рассмотрим несколько способов реализации фиктивных точек EntryPoint, что позволит защитить наши программы от взлома и отладки. Например зачем выставлять на показ процедуру проверки введённого пароля, или какой-нибудь авторской техники? До тех пор пока она не станет достоянием общественности, мы сможем использовать её в своих программах снова и снова. Но как-только корабль даст течь, придётся латать дыры, на что нужно время...