Como buscaste la función main?
Lo se... demasiado facil para preguntarse. La expectativa brota de tu mensaje como el veneno del colmillo, pero me refiero a medios manuales.
Este es el codigo del programa de prueba:
#include <stdio.h>
#include <string.h>
int main ()
{
int i;
char bPassword[BUFSIZ];
const char *password=
"p2u4ingr9pnqeofig2-94rm8g[nqeifggp2u45gn230p89e";
printf ("introduzca la contrasena: ");
if (strcmp (bPassword
, password
)) {
printf ("\r\naccess denied."); return 0;
}
else
printf ("\r\naccess granted.");
printf ("\r\n\r\nuser name\tpassword"); printf ( "\r\n---- ----\t--------");
for (i
=0;i
<5;i
++) printf ("\r\n%c%c%c\t\t%c%c%c", i+33,i+33,i+33,i+1+33,i+1+33,i+1+33);
return 0xffff;
}
Mi pregunta hace referencia a un ejecutable cuyo codigo fuente no posees. Pero para introducirte mejor en el contexto, ahi esta

.
Si se ejecuta el programa, puedes ver que evidetemente una cadena de caracteres esta siendo impresa en el buffer de salida estandar:

La impresion puede ser parte del algoritmo de una funcion o de la funcion principal. En el primer caso seria una cuestion de
perseguir los retornos con el depurador hasta dar con ella. Sin embargo este caso es el segundo.
Para encontrar la funcion, se me ocurrio primero buscar la RVA de la cadena. Lo hice asi con DEBUG (si, es modo real y son 16 bits, pero no avanzo hasta pisar bien):

(si, ademas es un COM)
Ahora la pregunta que te haces en este punto es: ¿de donde viene la funcion que imprime los caracteres?
La funcion, cual sea, tendra que hacer referencia a la cadena que esta siendo impresa, localizada en 24FCh. y ¿cual es la unica forma en la que (un programador
normal, que yo la verdad no soy tan normal...) se haria esto? Utilizando su RVA como parametro, es decir, poniendola en la pila. Un compilador corriente lo haria asi:
MOV AX, 24FCh
PUSH AX
La codificacion de
MOV AX, 24FCh es
B8 FC 24. Por tanto hay que buscarlo:

Luego basta con analizar el codigo maquina en busca de la logica de una funcion principal.
