pues llevo mas de 3 años con ollydbg y quien podria resolverte esa pregunta seria RDG max
creo que integro como 40 codigos antidebug y es bien buena onda para poder hacer posible
ahora bien mis consejos en forma personal
no hay proteccion irrompible
pero te doy algunas apis de referencia
isdebuggerpresent ->solo necesita valer 0 para pasar inadvertido
outputdebugstringA como INT ->necesita 0 para pasar inadvertido
outputdebugstringA como variable->necesita 1 para pasar inadvertido
CreatefileA->necesita un valor ff o diferentes para poder verificar
processCRs o variantes para que vea si tiene privilegios para la ejecucion
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
las exepciones de int 2e no se ejecutan en windows vista, por eso no es posible crear antidebug con eso, ademas eso es motivo de que no exista muchas variables para impresoras o programas en windows vista
etc
creo que con la experiencia que tengo con olly pasaria minimo unos 50 antidebug y seria capaz de correrlo
por lo tanto te animo a revisar las referencias antidebug
saludos en buena
Apuromafo