En el caso del total comander, lo que hice fue cargar el map que me dio
el IDR, ver cuando muestra los formularios.
Llegue a este punto..
004E7F38 |> \E8 07220000 CALL <TOTALCMD.Nagdlg.sub_004EA144>
004E7F3D |. 84C0 TEST AL,AL
004E7F3F |. 74 26 JE SHORT TOTALCMD.004E7F67 ; SIN NAG AL =1
004E7F41 |. A1 7C756C00 MOV EAX,DWORD PTR DS:[6C757C]
004E7F46 |. 8B40 28 MOV EAX,DWORD PTR DS:[EAX+28]
004E7F49 |. B2 01 MOV DL,1
004E7F4B |. E8 88A5F5FF CALL <TOTALCMD.StdCtrls.TControl.SetEnabled>
004E7F50 |. C605 C81A6C00>MOV BYTE PTR DS:[6C1AC8],1
004E7F57 |. C605 CC1A6C00>MOV BYTE PTR DS:[6C1ACC],1
004E7F5E |. 8BC3 MOV EAX,EBX
004E7F60 |. E8 6F03F3FF CALL <TOTALCMD.Forms.TForm.Close>
004E7F65 |. EB 3E JMP SHORT TOTALCMD.004E7FA5
Si el salto no se produce, lo cierra el Formulario con Close.
Para que eso suceda
Al debe valer cero, y si entramos al call...
004EA144 >/$ A0 ECC66C00 MOV AL,BYTE PTR DS:[6CC6EC] ; Nagdlg.sub_004EA144
004EA149 \. C3 RETN
Vemos que Al toma el valor de la varibale [6CC6EC], me fijo las referecias a esa variable y tengo una aqui...
004E9E47 . 881D ECC66C00 MOV BYTE PTR DS:[6CC6EC],BL
Pode nopear el salto y listo, ya no tenes la nag, pero si queres buscar el registro, entonces le seguimos buscando cuando esa variable toma el valor CERO, porque al tomar ese valor te muestra la nag.
Entonces te vas al principio de la rutina.
004E95CC > 55 PUSH EBP
004E95CD . 8BEC MOV EBP,ESP
y pones como condicion que pare en BL==0 y Ctrl+F8
y te para justo aqui...
004E997D . E8 CA90F1FF CALL <TOTALCMD.system.@AStrCmp>
004E9982 0F84 AE000000 JE TOTALCMD.004E9A36
004E9988 . 33DB XOR EBX,EBX ; me pone a cero ebx
Ahi sale de la call, que compara algo, y al salir y no ser igual, te pone BL a CERO.
Si invertis ese salto, ya arranca registrado, y luego se sigue como indica Tinco en su tute. Maso menos asi, pero bueno si solo queres eliminar la nag solo nopeas el salto y listo..
Luego estan las formas ahi expuestas por los amigos Mintaka y LSL
slds