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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


  Mostrar Mensajes
Páginas: 1 ... 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 42 ... 51
261  Programación / Programación C/C++ / [resuelto] Ayuda con GetProcAddress en: 27 Noviembre 2012, 19:04 pm
Citar
Te esta diciendo claro que no pudo obtener la direccion de la funcion, verifica que tu funcion sea exportable y que se encuentre.
y usa GetLastError despues de Getprocaddress, con eso sabras cual es tu problema.

hasta ahi llego, ese aviso lo he escrito yo xD y gracias por lo de GetLastError, lo he usado en varios sitios y no se por que no se me ocurrio usarlo aqui.

Citar
Usa WinDbg y asegurate que hLibModule sea la direccion base de tu DLL, si eso es correcto comproba tus funciones exportadas con: Dependency Walker.

perfecto gracias, no sabia con que herramientas podia ver eso. ahora me pondre con ello.

un saludo y duda resuelta!
262  Programación / Programación C/C++ / [resuelto] Ayuda con GetProcAddress en: 27 Noviembre 2012, 02:02 am
hola a todos,

llevo toda la tarde con un problema que no consigo resolver y ojala alguien pueda arrojarme un poco de luz. se que podria resumir este codigo en pocas lineas usando directamente LoadLibrary pero la idea es jugar un poco para intentar entender todo lo que pasa.

la idea es que ejecuto un exe y este busca la direccion de LoadLibraryA en la dll Kernel32, para luego crear un hilo pasandole como funcion principal el puntero a LoadLibraryA y como parametro una dll creada por mi. en esta dll hay una callback function donde solo tira un messagebox, y luego otra funcion que es la que intento ejecutar despues, y es aqui donde esta el problema. el messagebox me lo tira bien, pero luego cuando intento obtener la direccion de MyFunction me tira el error de "Could not retrieve the address function".

en fin, este es el codigo de mi dll:

Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. BOOL APIENTRY DllMain (HINSTANCE hInstDLL, DWORD reason, LPVOID reserved) {
  5.  
  6. BOOL dllSuccess = FALSE;
  7.  
  8. if (reason == DLL_PROCESS_ATTACH) {
  9. dllSuccess = MessageBox (NULL, "Funciona! :)", NULL, MB_OK);
  10. }
  11.  
  12. return dllSuccess;
  13. }
  14.  
  15. __declspec(dllexport) void __stdcall MyFunction (void) {
  16.  
  17. printf ("Hello world!\n");
  18. }
  19.  

y el siguiente codigo es el del ejecutable:

Código
  1. #include <stdio.h>
  2. #include <windows.h>
  3.  
  4. int main (int argc, char **argv) {
  5.  
  6. HMODULE hKernel32 = GetModuleHandle ("Kernel32");
  7. FARPROC lpLoadLib = GetProcAddress (hKernel32, "LoadLibraryA");
  8.  
  9. HANDLE hThread = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE) lpLoadLib, (void*) argv[1], 0, NULL);
  10. WaitForSingleObject (hThread, INFINITE);
  11.  
  12. DWORD hLibModule=0;
  13. GetExitCodeThread (hThread, &hLibModule);
  14. if (!hLibModule) {
  15. fprintf (stderr, "ERROR: Could not retrieve the module handle.\n");
  16. return 1;
  17. }
  18.  
  19. FARPROC myFunc = GetProcAddress ((void*) hLibModule, "MyFunction");
  20. if (!myFunc) {
  21. fprintf (stderr, "ERROR: Could not retrieve the function address.\n");
  22. return 1;
  23. }
  24.  
  25.        myFunc();
  26. CloseHandle (hThread);
  27. return 0;
  28. }

y eso es todo... alguien puede ayudarme?

muchas gracias!

edito: perdonad cometi un error, mi problema no es con esa funcion sino con la de GetProcAddress del final. llevo demasiado rato metido en esto y pasa lo que pasa... xD
263  Foros Generales / Foro Libre / Re: Atan a un perro extraviado y lo queman vivo en un solar de Valencia en: 23 Noviembre 2012, 21:51 pm
pff ojala pudiera quemar a todos esos hijos de su p**a madre. ya no es por el perro en si (que tambien ya que adoro a los perros), sino directamente porque para disfrutar con el sufrimiento ajeno hay que estar completamente mal de la cabeza. el mundo estaria mejor sin gente como esta.
264  Programación / Programación C/C++ / Re: Detectar nuevos procesos? en: 22 Noviembre 2012, 16:51 pm
hace 2 dias que empece a programar en windows y a leer sobre apis asi que no se si ya lo habras mirado, pero podrias empezar por aqui: PsSetCreateProcessNotifyRoutine que parece ser que es lo que buscas.

esta info la he sacado de aqui: http://social.msdn.microsoft.com/Forums/zh/vcgeneral/thread/8130ac14-4bb1-4b25-8d67-530973b1a4f4 donde ademas tambien se comentan otras maneras que quizas te puedan servir.

un saludo!
265  Foros Generales / Foro Libre / Re: Equacion de mates que no me sale en: 10 Noviembre 2012, 17:52 pm
Citar
La solución a la ecuación es 5 pero en esta ultima ecuación cuando elevo el cuadrado del lado derecho con la fórmula a^2+b^2+2ab no me da lo mismo

(a+b)^2=a^2+b^2+2ab

(a-b)^2=a^2+b^2-2ab

fijate bien en los signos.

un saludo!
266  Programación / Programación C/C++ / Re: Operadores con bits - consulta en: 5 Noviembre 2012, 23:20 pm
Código
  1. return ((BACKSLASH | SLASH | COLON | ASTERISK | QUESTION | QUOTES | LESS | GREATER | PIPE) & sym);

hola, no entiendo muy bien lo que haces pues estas haciendo un OR con todas las constantes. esto se traduce en que las estas sumando a nivel de bit. como ejemplo mas sencillo para que veas lo que pasa, mira esto:

Código:
a = 4 = ...0100
b = 6 = ...0110
a | b = 4 | 6 = ...0110 = 6

como veras, no tiene mucho sentido para hacer lo que tu quieres hacer ya que acabas haciendo un AND con algo extraño que no representa nada. ademas, si fuera el caso de que eso fuera correcto, tu funcion seguiria sin devolver 1 o 0, ya que por ejemplo, si el simbolo fuera el QUESTION:

Código:
QUESTION=0x10
sym=0x10
QUESTION & sym = 0x10 = 16

asi pues tu funcion devolveria 16. no te olvides que las operaciones a nivel de bit son en paralelo, es decir, el bit 0 de un numero con el bit 0 del otro, el bit 1 con el bit 1, etc.

en lugar de eso, si lo que quieres es que la funcion devuelva 1 cuando coincida con alguna de las constantes, y quieres hacerlo aplicando alguna operacion a nivel de bits, una solucion podria ser esta:

Código
  1. #define BACKSLASH 0x0001
  2. #define SLASH     0x0002
  3. #define COLON     0x0004
  4. #define ASTERISK  0x0008
  5. #define QUESTION  0x0010
  6. #define QUOTES    0x0020
  7. #define LESS      0x0040
  8. #define GREATER   0x0080
  9. #define PIPE      0x0100
  10.  
  11. #define NUMSYM 9
  12.  
  13. int is_symbol(int sym) {
  14.  
  15. int i, symbols[]={BACKSLASH, SLASH, COLON, ASTERISK, QUESTION, QUOTES, LESS, GREATER, PIPE};
  16.  
  17. for (i=0; i<NUMSYM; i++)
  18. if (symbols[i]^sym == 0) return 1;
  19.  
  20. return 0;
  21. }

donde uso la operacion XOR que dara 0 si los dos numeros son iguales. como veras es lo mismo que usar en la condicion del if un symbols[ i]==sym, pero lo puse por pedir que fuera con operaciones de bits.

si lo que quieres es que la funcion sea de 1 solo return, esto te podria servir:

Código
  1. int is_symbol(int sym) {
  2.  
  3. return !(BACKSLASH^sym && SLASH^sym && COLON^sym && ASTERISK^sym && QUESTION^sym && QUOTES^sym && LESS^sym && GREATER^sym && PIPE^sym);
  4. }

aunque sinceramente no se que tan eficiente es respecto a la primera version que es mas facil de entender.

un saludo!
267  Programación / Programación C/C++ / Re: Problemas con el vuelto en monedas en: 5 Noviembre 2012, 23:03 pm
gracias leosansan por la correccion, probe el codigo un par de veces y funcionaba bien asi que supuse que no habria ningun problema.

lo que pasa es que no entiendo porque pasa esto. si pruebo con 0.40 la solucion es correcta, pero con 1.40 no. ademas, teniendo en cuenta que la conversion a entero de un real se hace mediante truncamiento, no entiendo por que pasa esto. alguien sabe la respuesta?

gracias!
268  Programación / Programación C/C++ / Re: Problemas con el vuelto en monedas en: 5 Noviembre 2012, 21:44 pm
te dejo otra manera de hacerlo por si te sirve de ayuda:

Código
  1. #include <stdio.h>
  2.  
  3. #define M1 0.25
  4. #define M2 0.10
  5. #define M3 0.05
  6. #define M4 0.01
  7.  
  8. int main() {
  9.  
  10. int m1, m2, m3, m4;
  11. float cantidad;
  12.  
  13. printf("Introduce la cantidad: ");
  14. scanf("%f", &cantidad);
  15.  
  16. m1=(int)(cantidad/M1);
  17. cantidad-=m1*M1;
  18.  
  19. m2=(int)(cantidad/M2);
  20. cantidad-=m2*M2;
  21.  
  22. m3=(int)(cantidad/M3);
  23. cantidad-=m3*M3;
  24.  
  25. m4=(int)(cantidad/M4);
  26. cantidad-=m4*M4;
  27.  
  28. printf("Monedas de 0.25:\t%d\nMonedas de 0.10:\t%d\nMonedas de 0.05:\t%d\n"
  29.   "Monedas de 0.01:\t%d\n", m1, m2, m3, m4);
  30.  
  31. return 0;
  32. }

y la salida:

Código:
xiruko:~$ gcc monedas.c -o monedas
xiruko:~$ ./monedas
Introduce la cantidad: 2.43
Monedas de 0.25: 9
Monedas de 0.10: 1
Monedas de 0.05: 1
Monedas de 0.01: 3
xiruko:~$

un saludo!

modifico: no vi que ya habias resuelto tu duda. igualmente lo dejo por si te sirve.
269  Programación / Programación C/C++ / Re: Como planteariais este problema?( en C) en: 5 Noviembre 2012, 17:28 pm
pide los numeros y almacenalos en el array, luego ordenalo de mayor a menor y quedate con los 2 primeros.

un saludo!
270  Foros Generales / Foro Libre / Re: Lo aprendido queda para siempre? en: 4 Noviembre 2012, 21:50 pm
Citar
Parece fantasioso, de la misma forma en que parecia fantasioso miles de años atras el poder comunicarnos a largas distancias en pocos segundos.

perdona edu, pero eso seguia siendo totalmente fantasioso hace 30 años. tan solo hace falta alejarse un poco del dia a dia para intentar ver el mundo con una minima perspectiva, y te das cuenta de que en 20 o 30 años mas probablemente casi nada sea igual de lo que es hoy en dia, y cosas como conocer como funciona el cerebro y por lo tanto, reproducirlo en un ordenador, seran posibles.

no se si lo habras visto, pero te dejo un documental del programa redes que se emite en españa (ni idea de si llega a otros sitios...) que habla sobre el futuro y la manera en la que nos uniremos con las maquinas. es uno de mis documentales preferidos, y lo habre visto 4 o 5 veces. espero que te guste tanto como a mi jaja :D

http://www.redesparalaciencia.com/80/redes/redes-10-el-futuro-la-fusion-del-alma-y-la-tecnologia

un saludo!
Páginas: 1 ... 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 42 ... 51
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines