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


 


Tema destacado: Píldoras formativas en seguridad de la información


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 351
131  Programación / Programación C/C++ / Re: Ejecutar shellcode en C en: 3 Marzo 2017, 17:28
¿Cómo generaste el executable? Estás llamando a una función, así que tiene que ser una función. No vale un executable en formato ELF.
132  Programación / Programación C/C++ / Re: Modificar nodo en una lista dinámica. en: 3 Marzo 2017, 17:22
Tal como pusiste en el tercer intento, puedes comparar cadenas con == o != sin problema.
El primer intento, a simple vista, parece correcto. Si tal, puedes colocar couts para ver exactamente qué hace el programa y ver dónde podría estar el fallo (o depurarlo como tú quieras, vamos). Más que nada para ver por dónde pasa, que valores compara, etc.

Por cierto:
Código
  1. Nodo *aux = new Nodo(value);
  2. aux=first;
Creas ese nodo y no lo destruyes (En general, no deberías crearlo, no hace nada, le pones otro valor al momento a la variable)

En el main, pusiste:
Código
  1. cout<<"What's the new value?"<<endl;
  2. cin>>value;
Querrías decir que "old value", o "the value to find". Error sintáctico, pero cuidado no vaya a tener que ver a la hora de testearlo.
133  Programación / Programación C/C++ / Re: enteros de 12 bits en: 3 Marzo 2017, 17:00
Oh, un detalle más. El array, en vez de char, debería ser de unsigned char (sinó, si el valor coincide negativo, la transformación a short será negativa y no serviría.

Bueno, estaba revisando el tema, y la colocación de los bits puede que la haya interpretado al revés.

Puedes testear con:

Código
  1. #include <stdio.h>
  2.  
  3. void printBinary(void* address, unsigned int bytes){
  4. //for(int i=0; i<bytes; i++){
  5. for(int i=bytes - 1; i>=0; i--){
  6. int mask = 1 << 7;
  7. do{
  8. printf("%c", (((char*)address)[i] & mask? '1' : '0'));
  9. mask >>= 1;
  10. }while(mask);
  11.  
  12. //if(i+1 < bytes)
  13. if(i-1 >= 0)
  14. printf(" ");
  15. }
  16. }
  17.  
  18. int main(){
  19. unsigned char arr[2];
  20. arr[0] = 0b01101010; // 00000110 10101100
  21. arr[1] = 0b11000001; // 00001100
  22.  
  23. short result = (((short)arr[0]) << 4) | (arr[1] >> 4);
  24.  
  25. printBinary(&arr[0], 1);
  26. printf("\n");
  27. printBinary(&arr[1], 1);
  28. printf("\n");
  29. printBinary(&result, 2);
  30. printf("\n");
  31. }

Si arr[0] = AB y arr[1] = CD, la salida es ABC.
No es lo que pusiste tú al principio, pero bueno, el cambio es mínimo. Perdona la confusión :p

Citar
Por otro lado porque
 0xFF valdria 0000 0000 1111 1111 ?
Am no sé cómo responder a esto. Es así. Hexadecimal a binario.
134  Programación / Programación C/C++ / Re: Problema con visual estudio usando GetModuleFileName(); en: 2 Marzo 2017, 18:08
TCHAR puede ser wchar_t o char, según. Puedes comprobarlo con:

Código
  1. #include <typeinfo>
  2. #include <iostream>
  3. #include <windows.h>
  4.  
  5. using namespace std;
  6.  
  7. int main(){
  8. cout << "char: " << typeid(char).name() << endl;
  9. cout << "wchar_t: " << typeid(wchar_t).name() << endl;
  10. cout << "TCHAR: " << typeid(TCHAR).name() << endl;
  11. }

En mi caso, siendo TCHAR un char, me funciona correctamente.

Definiendo "UNICODE", entonces pasa a wchar_t, y el programa quedaría:

Código
  1. #define UNICODE
  2.  
  3. #include <typeinfo>
  4. #include <iostream>
  5. #include <windows.h>
  6.  
  7. using namespace std;
  8.  
  9. int main(){
  10. wchar_t buffer[256];
  11. HMODULE exe = GetModuleHandle(0);
  12. GetModuleFileName(exe, buffer, 256);
  13. wcout << buffer << endl;
  14. }

Nótese que el array ahora es de wchar_t, y que en vez de cout, utilizo wcout. En vez de array de wchar_t también podrías usar array de TCHAR. Sin embargo, te interesa saber en cada caso si es wchar_t o char, así que ponerlo manualmente te librará de problemas.
135  Programación / Programación C/C++ / Re: enteros de 12 bits en: 2 Marzo 2017, 15:49
Oh sí, me confundí. 0xFF.
136  Programación / Programación C/C++ / Re: enteros de 12 bits en: 2 Marzo 2017, 14:45
Correcto.
Como detalle extra, en vez de (x << 8) >> 8, puedes hacer x & 0xFFFF.
137  Programación / Programación C/C++ / Re: enteros de 12 bits en: 2 Marzo 2017, 13:09
Am casi pero:
arr[1] >> 4 // desplazaria los bits 4 veces hacia la derecha, quedando este valor:
0000 1100 0000 0000

Eso no es así. 1100 0001, desplazando a la derecha, queda: 0000 1100
Con lo cual, 0000 1010 0110 0000 | 0000 1100 == 0000 1010 0110 1100
138  Programación / Programación C/C++ / Re: Como resolver este error en: 2 Marzo 2017, 08:53
En primer lugar, con typedef, coo dice su nombre, defines tpos. Elevation no es un tpo e suna variable.

Luego: Elevation.TokenIsElevated. Elevation e sun DWORD, ¿cómo podría tener un campo "TokenIsElevated"?
139  Programación / Programación C/C++ / Re: enteros de 12 bits en: 2 Marzo 2017, 08:51
Los únicos operadores que necesitarás, en principio, son los de desplazamiento de bits (<<, >>) y and (&).

Suponiendo que tengas los 24 bits en un array de 3 chars:

Código
  1. char arr[3]; // 2 enteros de 12 bits
  2. short a, b; // Salida
  3.  
  4. // Suponiendo que 'a' sea el primer byte y mitad del segundo, pues:
  5.  
  6. a = (((short)arr[0]) << 4) | (arr[1] >> 4);

Y el resto, más de lo mismo.
140  Programación / Programación C/C++ / Re: Donde esta el numero cero en: 1 Marzo 2017, 22:40
En vez de %.d en los printf, pon %d asecas.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ... 351
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines