elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 ... 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 ... 385
251  Programación / Programación C/C++ / Re: se me confunde las cadenas string en: 20 Noviembre 2021, 08:05 am
19 tienes que contar el fin el \0 es obligado al final de la cadena.

Son 20 punteros a cadena, si tu respuesta fuera correcta esto imprimiria 20 en pantalla:
Código
  1. char *s[20]= {"hola", "chau" };
  2. printf("%d\r\n", sizeof(s));

¿No lo hace verdad? Lo que imprime es 20 * tamaño de puntero, 160 en x64 por ejemplo.
252  Programación / Programación General / Re: Un sutil conflicto de definiciones. Cargable o ejecutable en: 19 Noviembre 2021, 18:27 pm
https://en.wikipedia.org/wiki/Component_Object_Model
https://en.wikipedia.org/wiki/COM_file
253  Programación / Programación C/C++ / Re: Código para mostrar el mayor Nro en una Pila : Duda en: 19 Noviembre 2021, 10:13 am
De nada.
254  Programación / Programación C/C++ / Re: Código para mostrar el mayor Nro en una Pila : Duda en: 18 Noviembre 2021, 09:27 am
1) mayor es una variable global y su valor inicial es 0 por defecto. ¿Que crees que deberia ser? Es eso o un valor indefinido ya que no inicializaste la variable ... por suerte no hace falta al ser una variable global.



2) No pero NO estas respetando los valores que tienen la pila segun a tu codigo.

Este es el orden de los valores que top va a devolver en cada iteracion:
10
3
20
40
35

En ningun momento top es 20 y mayor 40, no tiene logica alguna, cuando top es 20 mayor es 10, y despues cuando top es 40 mayor es 20 ... no es muy complicado de seguir esto realmente pone un cout con los valores si se te complica tanto.

Justo despues del while:
Código
  1. cout << "top es " << pila.top() << " mayor es " << mayor << endl;

top es 10 mayor es 0
top es 3 mayor es 10
top es 20 mayor es 10
top es 40 mayor es 20
top es 35 mayor es 40
255  Programación / Programación C/C++ / Re: Código para mostrar el mayor Nro en una Pila : Duda en: 18 Noviembre 2021, 07:50 am
Iteracion 0:
top() devuelve 10 y mayor es 0, mayor pasa a ser 10
Iteracion 1:
top() devuelve 3 y mayor es 10, la condicion no se cumple
Iteracion 2:
top() devuelve 20 y mayor es 10, mayor pasa a ser 20
Iteracion 3:
top() devuelve 40 y mayor es 20, mayor pasa a ser 40
Iteracion 4:
top() devuelve 35 y mayor es 40, la condicion no se cumple
256  Programación / ASM / Re: Socket en Nasm sobre Winx64, no logro que "connect" funcione en: 17 Noviembre 2021, 00:56 am
De nadas  ::)
257  Programación / ASM / Re: Socket en Nasm sobre Winx64, no logro que "connect" funcione en: 16 Noviembre 2021, 23:48 pm
Si rax es -1 quiere decir que fallo y entonces hay que llamar a GetLastError.

LastErrorValue: (WinSock) 0x273f (10047) - An address incompatible with the requested protocol was used.


ws2_32!connect:
mov     rax,rsp
mov     qword ptr [rax+8],rbx
mov     qword ptr [rax+10h],rbp
mov     qword ptr [rax+18h],rsi

Antes de poder usar la memoria del segundo parametro, RDX, esta ya fue modificada por el prologo de connect para preservar registros.

"In the Microsoft x64 calling convention, it is the caller's responsibility to allocate 32 bytes of "shadow space" on the stack right before calling the function (regardless of the actual number of parameters used), and to pop the stack after the call.

For example, a function taking 5 integer arguments will take the first to fourth in registers, and the fifth will be pushed on top of the shadow space. So when the called function is entered, the stack will be composed of (in ascending order) the return address, followed by the shadow space (32 bytes) followed by the fifth parameter."

https://en.wikipedia.org/wiki/X86_calling_conventions#Microsoft_x64_calling_convention

En definitiva tu programa no cumple con la convencion de llamada, justo despues de la direccion de retorno esta ubicado el segundo parametro de connect.
258  Programación / Programación General / Re: Una pequeña pregunta sobre .idata en: 16 Noviembre 2021, 19:29 pm
Aca lo explican todo y mucho mas:
https://docs.microsoft.com/en-us/windows/win32/debug/pe-format
259  Programación / Programación General / Re: Una pequeña pregunta sobre .idata en: 16 Noviembre 2021, 15:15 pm
No sin hacer lo mismo (o algo muy semejante) que hacen esas funciones, leer el archivo, procesarlo, mappearlo en memoria como ejecutable por un lado y procesar el PE para encontrar las funciones por el otro. Si mañana creo una DLL y la copio en system32 no se va a cargar en todos los procesos innecesariamente, solo se cargara en los que la referencien de alguna manera.
260  Programación / Programación General / Re: Una pequeña pregunta sobre .idata en: 15 Noviembre 2021, 23:03 pm
Esta todo en el PE, el nombre de las DLLs y funciones importadas.
Páginas: 1 ... 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 [26] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 ... 385
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines