Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Karman

#41
tenes que llamar a esta API:

http://msdn.microsoft.com/en-us/library/aa969510%28v=vs.85%29.aspx

antes de capturar la pantalla...

bool ManageTheme(bool a){
return (DwmEnableComposition(a?DWM_EC_ENABLECOMPOSITION:DWM_EC_DISABLECOMPOSITION)==S_OK);
}


S2
#42
tu problema es al no definir el índice...

char x[20];
int i=0;

outtextxy(200,200,"introduce tu nombre: ");
for(;;){
  char c=getch();
  if(c==13)//enter
    break;
  x[i++]=c;
}


S2
#43
Cita de: Belial & Grimoire en 30 Agosto 2011, 20:00 PMy si por ejemplo quisiera iniciar un socket?

tendria que llamar la api de socket, darle los parametros a la estructura iDat y ejecutarlo desde la funcion Resident?

porque bueno, logro hacer todo esto que coloque... y si lo entiendo, pero tendria que hacer todo lo que necesite con estructuras, por ejemplo

pipe, socket, etc...?

y funciones extras como Send y Recv o conect, etc?, donde las colocaria?, eso es lo que no entiendo, como o donde colocar todo lo demas que necesite?

espero darme a entender, las apis se como usarlas y donde van, pero los demas parametros no se donde colocarlos

y si, ese es el problema de usar ese método (por eso te comenté primero lo de inyección del executable donde solo tenes que preocuparte de "inyectarlo bien"), el tema de los parámetros tendrías que hacer algo así:

typedef struct funciones{
 PVOID func1;//no necesariamente PVOID, solo para ejemplo
 PVOID CreateFile;
 PVOID recv;
 //...
 PVOID funcN;
};

typedef struct datos{
 HANDLE hFile;
 SOCKET s;
 CHAR nombre[XX];
 PVOID buffer[512];//etc...
};

struct me{
 funciones f;
 datos d;
};

void X(struct me *yo){
 yo->d.hFile=yo->f.CreateFile(yo->d.nombre/*...*/);
 //....
 yo->f.recv(yo->d.s,yo->d.buffer,512,0);
}


e incluso podrías tener varias funciones (aunque tendrías que hacer una especie de "relocado")

typedef struct mefunc{
 PVOID init;
 PVOID dosomething;
}

struct me{
 mefunc m;
 funciones f;
 datos d;
};

void init(){
 return;
}

//...
me.m.init=init;
//...
me.m.init+=-mebaseaddres+inyectionaddress;
//...


donde baseaddress sería la dirección de la primera función (suponiendo que estén en orden secuncial) e inyectionaddress la dirección que te devuelve virtualalloc (en la víctima)...

Cita de: Belial & Grimoire en 30 Agosto 2011, 20:00 PMotro ejemplo

aqui podria usar un for( ; ; ) ? y si puedo donde o como lo hago funcionar desde la inyeccion?, porque se que no puedo hacer esto

DWORD Resident(iDat *base)
{
base->pCreateMutex(NULL, 0, base->Mutex);
for(i = 0; i<2, i++);
};


espero esto pueda hacer mas facil enteder mi duda, soy malo explicando jaja

puedes usar cualquier * instrucción del lenguaje sin problemas, el probema es con las llamadas intermodulares (funciones en otros espacios de memoria [dll's])

S2

El * es porque "en teoría" no deberías tener problemas dado que esas instrucciones son traducidas como saltos relativos (en el caso de C++ new y delete obviamente no van a estar disponibles).
#44
no entendí muy bien lo que querés hacer (si es inyectar tu EXE a otro proceso y llamar a API's, etc, fijate el post que te comenté), si por otro lado, querés inyectar código a otro proceso y que use API's y/o que te inyecte/cargue a vos mismo (EXE o DLL) ya es más complejo, pero en resumidas cuentas los pasos serían los del ejemplo de EON (pero con más API's), si no es ninguno de los dos pues trata de explicarte mejor porque no te entiendo  :P

acá tenes otro ejemplo de más o menos lo mismo: http://foro.elhacker.net/programacion_cc/inyeccion_dll-t169870.0.html

S2
#46
hay un post en este foro del user [ZERO] (si mal no recuerdo) que explica como hacerlo, buscalo  :P

S2
#47
Programación C/C++ / Re: Fallo de segmentacion
28 Agosto 2011, 04:51 AM
Cita de: _niu en 26 Agosto 2011, 19:17 PMjejeje gracias seguire luchando haber que onda, lo trato de hacer diferente ahora.
Uso la memoria dinamica del amigo malloc, y me aguanta el casteo, pero no la llamada a la funcion.

si no me equivoco ese es justamente el problema, tenés permisos de lectura sobre el espacio de memoria pero no de ejecución... eso en windows se puede cambiar con virtualprotect, en linux no sé.

S2
#48
Cita de: pucheto en 26 Agosto 2011, 06:27 AMPor problemas de la precisión que tiene el tipo float, podria llegar a dar que un numero es decimal, cuando es entero. Lo mismo con el codigo de karman.

Lo mejor q se puede hacer en este caso es leer el input como un string, validar que sea lo que quiere, y después, en caso de que sea valido, realizar las conversiones que correspondan.

si, es cierto (por eso aclaré que era una solución rara), pero para el tipo de problema (obtener un número dentro de un rango acotado) utilizaría esa solución, ahora si hay problemas de precisión incluso podría usar "double" para estirar un poco más su funcionalidad, me parece que comprobar/realizar conversiones es más para problemas más complejos (que requieran justamente más precisión)

S2
#49
Cita de: greenchar en 25 Agosto 2011, 23:00 PMResulta que tengo un problema, tengo una variable entera, al introducir un numero que sea por ejemplo, .1, el programa, al momento de ejecutar se cicla y no hay manera de pararlo(solo con Ctrl + c). Eh intentado un montón de cosas pero ninguna funciona

en windows no pasa nada, solo retorna la parte entera (0), de todas formas, fijate si esta solución (media rara) te sirve:

int n=0;float f;
printf("numero de elementos para el vector: ");
do{
  scanf("%f",&f);
  if(f!=(int)f)
    printf("el número no es entero, ingrese un número entero: ");
}while(f!=(int)f);
n=f;


S2
#50
Cita de: Raul100 en 20 Agosto 2011, 03:21 AMvale tio yo ce que no so programador ce c++ pero estoy leendo el manual interaccion c++ y vb6 :P y llege a esa parte pero me dio curiosidad de saber porq pasa eso alguna explicacion debe de ser :P gracias a los dos :)

PD:

busque en el foro y encontre un usuario que tenia la misma duda :P lo que le recomendaron fue que lo comprimiera con upx :xD :P

como lo mensioné en este post hay un tema legal de por medio, pero en resumidas cuentas, si programas en Windows en un compilador distinto de Visual C++ y usas características de C++ tus ejecutables van a terminar siendo bastante más pesados (aclaración, esto es irrelevante dado que en memoria terminan pesando lo mismo)

S2