В общем случае, это ненадежный подход. Здесь ищется адрес импортируемой собственным процессом функции и делается смелое допущение, что во вскрываемом процессе он точно такой же, но он там вполне может оказаться другим, например, из-за включенного режима совместимости с предыдущими версиями Windows. Обойти это можно через разбор структуры исполняемого файла вскрываемого процесса в памяти, поиск kernel32.dll среди импортируемых модулей и в нем поиск LoadLibraryA/LoadLibraryW в таблице экспорта.
Вот здесь есть более подробное описание. Если кратко, то проблема может быть, например, если процесс-взломщик запущен в режиме совместимости, тогда некоторые адреса системных функций могут вести на самом деле во вспомогательную dll, обеспечивающую эту самую совместимость, но этой dll может не быть во вскрываемом процессе, соответственно, полученный адрес там не будет правильным.
Да, с вами, несомненно, согласен. Но в данном случае рисование происходит во всех окнах родительского процесса, т.е процесс не ищется вручную каждый раз.
Внедрение своего кода в адресное пространство процессов