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 Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21
131  Programación / Programación C/C++ / Re: Estructuras anidadas, funciones y punteros en: 18 Marzo 2013, 08:56 am
a lo de acceder a los campos de la estructura con esas 2 funciones que se llaman Iniciar1 i Iniciar2  ::)

132  Programación / Programación C/C++ / Re: Estructuras anidadas, funciones y punteros en: 18 Marzo 2013, 03:30 am
El problema: todo parámetro declarado como un array en realidad se procesa como un puntero. Puedes hacer ese cambio pero solo es cosmético.

El error en esta sentencia:
Código
  1. *(hotel + i).numero_clientes = 0;
Se genera porque el operador "." tiene mayor prioridad que "*" y la expresion se evalúa así:
Código
  1. *((hotel + i).numero_clientes) = 0;
Para conseguir el efecto deseado se deben utilizar paréntesis (mejor, por sencillo, utilizar "[]").

Y como ya te comentaron es mas fácil ayudarte si publicas el código fuente del programa así como los mensajes de error que se generan.

Un saludo


haber haber haber, veamos

Código
  1.  
  2. //
  3. // Yo no fui
  4. //
  5. //
  6. //
  7. //
  8.  
  9. /////////////////////////////////////////////////////////////////////////////////////////////////
  10.  
  11. #include<windows.h>// SYSTEM
  12. #include<stdio.h>
  13.  
  14. /////////////////////////////////////////////////////////////////////////////////////////////////
  15. /////////////////////////////////////////////////////////////////////////////////////////////////
  16.  
  17. struct Sasafras{
  18.  
  19. int mandan;
  20. };
  21.  
  22. struct Quete{
  23.  
  24. struct Sasafras quete;
  25. };
  26.  
  27. struct Cador{
  28.  
  29. struct Quete tazo;
  30. };
  31.  
  32. struct ElchoCador{
  33.  
  34. int x, y, z;
  35. struct Cador elcho;
  36. };
  37.  
  38. /////////////////////////////////////////////////////////////////////////////////////////////////
  39.  
  40. void Iniciar1(struct ElchoCador* reg);
  41. void Iniciar2(struct ElchoCador* reg);
  42.  
  43. /////////////////////////////////////////////////////////////////////////////////////////////////
  44.  
  45. int main(){
  46.  
  47. struct Cador elcho;
  48. memset(&elcho,0,sizeof elcho);
  49. printf("Valor: %d\n", elcho.tazo.quete.mandan);
  50.  
  51. __try
  52.       {
  53. //if(IsDebuggerPresent())
  54.                DebugBreak();
  55.       }
  56.        __except(GetExceptionCode() == EXCEPTION_BREAKPOINT ?
  57.             EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
  58.       {
  59.  
  60. system("pause");
  61.                // No debugger is attached, so return FALSE
  62.                // and continue.
  63.                // return FALSE;
  64.        }
  65.  
  66. struct ElchoCador regs[20];
  67. Iniciar1(regs);
  68. Iniciar2(regs);
  69. for(int j=0; j<20;j++){
  70. printf("%d %d %d\n",regs[j].x,regs[j].y,regs[j].z);
  71. }
  72.  
  73. while(getchar()!='\n');
  74. return 0;
  75. }
  76.  
  77. /////////////////////////////////////////////////////////////////////////////////////////////////
  78.  
  79. void Iniciar1(struct ElchoCador* regs){
  80.  
  81. for(int i=0; i<20;i++){
  82.  
  83. if(i%2==0)
  84. {
  85. (*(regs+i)).x = (*(regs+i)).y = (*(regs+i)).z = 2;
  86. }
  87. }
  88. }
  89.  
  90. /////////////////////////////////////////////////////////////////////////////////////////////////
  91.  
  92. void Iniciar2(struct ElchoCador* regs){
  93.  
  94. for(int i=0; i<20;i++){
  95.  
  96. if(i%2!=0)
  97. {
  98. //regs[i].x = regs[i].y = regs[i].z = 10;
  99. (regs+i)->x = (regs+i)->y = (regs+i)->z = 10;
  100. }
  101. }
  102. }
  103.  
  104. /////////////////////////////////////////////////////////////////////////////////////////////////
  105.  
  106.  

133  Programación / Programación C/C++ / Re: Ayuda , Opengl Wallhack DLL en: 18 Marzo 2013, 02:55 am
Nice  ::)
134  Programación / Programación C/C++ / Re: Ayuda , Opengl Wallhack DLL en: 18 Marzo 2013, 01:59 am
Bienvenido IEAX  ;D gracias por tu contribución

como dijo my friend IEAX se trata de las direcciones de Opengl32 que se guardaron en un array. Te mostramos como tenés que hacer con el depurador para llegar a obtener las direcciones que quieras.

Lo primero es obtener la dirección de la función (glBegin)



Ponés un BP y cuando llegás al punto en el que fue llamada, vas
a tener que mirar la pila, específicamente la dirección de retorno,
que es donde estabas anteriormente (trace back).


Entonces vas a esa dirección y te encontrás con algo así..


Copiás esa dirección



Y la ponés en una variable puntero, así
Código:
DWORD* Ptr=(DWORD*)0x027E89EC;

y luego reemplazás su valor por el de la dirección de tu glBegin.
(función de reemplazo o hook).
Código:
*Ptr=(DWORD) Mi_glBegin;


Código
  1. void __stdcall Mi_glBegin( GLenum mode )
  2. {
  3. glBegin(mode);
  4. }
  5.  

135  Programación / Programación C/C++ / Re: Ayuda , Opengl Wallhack DLL en: 17 Marzo 2013, 11:01 am
Lo que te dice MCKSys Argentina está bien, digamos son las preguntas que deberías hacerte. Pero para este juego necesitás hacer otra cosa.
fijate primero esta imagen, son los imports del ejecutable del juego


utiliza GetProcAddress para resolver Opengl32,

fijate el log de GetProcAddress Luchoz95


El log completo
http://www.mediafire.com/?zdqbvczz20g33zf

Esto es justo lo que estábamos hablando el otro día MCKSys Argentina XD, sobre lo de interceptar GPA para luego interceptar Opengl32


136  Programación / Programación C/C++ / TLS: CallBacks en: 16 Marzo 2013, 12:42 pm
Hola, estaba mirando una nota sobre técnicas anti-debugging y dí contra una información acerca de TLS (Thread Local Storage), referido a callbacks.
Las CallBacks son funciones que se llaman automáticamente al ocurrir cierto evento, la nota decía esto:

Citar

/*
(1) TLS-callback

This anti-debug was not so well-known a few years ago. It consists to instruct the
PE loader that the first entry point of the program is referenced in a Thread Local Storage entry
(10th directory entry number in the PE optional header). By doing so, the program entry-point
won't be executed first. The TLS entry can then perform anti-debug checks in a stealthy way.
Note that in practice, this technique is not widely used.
Though older debuggers (including OllyDbg) are not TLS-aware, counter-measures are quite
easy to take, by the means of plugins of custom patcher tools.
*/


Básicamente, dice que se puede hacer que se ejecute primero un callback TLS antes que el ENTRYPOINT, con lo cual se puede ejecutar código antes que el programa mismo.

La información al respecto:
http://en.wikipedia.org/wiki/Thread-local_storage
http://en.wikipedia.org/wiki/Thread-local_storage#Windows_implementation
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686749(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/6yh4a9k1.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686991(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686997(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682594(v=vs.85).aspx
http://www.chromium.org/nativeclient/design-documents/thread-local-storage-tls-implementation

El código funcional al respecto de esta técnica, hecho por un programador de nombre Benina. Yo sólamente hice las pruebas y me pareció interesante exponerlo por estos lados, a alguien le puede servir XD.

Código
  1.  
  2. //
  3. // Autor: Benina (REA Team 2010)
  4. // Publicado Por: 85
  5. // Para: elhacker.net , etalking.com.ar
  6. // 2013
  7. //
  8.  
  9. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  10.  
  11. #include <windows.h>
  12.  
  13. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  14.  
  15. typedef struct _IMAGE_TLS_DIRECTORY32_ {
  16. DWORD   StartAddressOfRawData;
  17. DWORD   EndAddressOfRawData;
  18. DWORD   AddressOfIndex;
  19. DWORD   AddressOfCallBacks;
  20. DWORD   SizeOfZeroFill;
  21. DWORD   Characteristics;
  22. } IMAGE_TLS_DIRECTORY32_, * PIMAGE_TLS_DIRECTORY32_;
  23.  
  24. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  25.  
  26. VOID NTAPI on_tls_callback(PVOID handle, DWORD reason, PVOID resv);
  27.  
  28. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  29.  
  30. #pragma comment(linker, "/INCLUDE:__tls_used")
  31.  
  32. extern "C" {
  33.  
  34. #pragma data_seg(".tls")
  35. __declspec(allocate(".tls"))
  36. DWORD __tls_start = 0x0;
  37. #pragma data_seg(".tls")
  38. __declspec(allocate(".tls"))
  39. DWORD __tls_end = 0x0;
  40. #pragma data_seg(".tls")
  41. __declspec(allocate(".tls"))
  42. DWORD __tls_index = 0x0;
  43.  
  44. #pragma data_seg(".tls")
  45. __declspec(allocate(".tls"))
  46. DWORD __tls_func = (DWORD) on_tls_callback;
  47.  
  48. #pragma data_seg(".tls")
  49. __declspec(allocate(".tls"))
  50. DWORD __tls_size = 0x0;
  51. #pragma data_seg(".tls")
  52. __declspec(allocate(".tls"))
  53. DWORD __tls_flag = 0x0;
  54. }
  55.  
  56. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  57.  
  58. #pragma data_seg(".rdata$T")
  59. __declspec(allocate(".rdata$T"))
  60. extern "C" const _IMAGE_TLS_DIRECTORY32_ _tls_used =
  61. {
  62.    (DWORD) &__tls_start,
  63. (DWORD) &__tls_end,
  64. (DWORD) &__tls_index,
  65. (DWORD ) &__tls_func,
  66. (DWORD ) 0,
  67. (DWORD ) 0
  68. };
  69.  
  70. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  71.  
  72. VOID NTAPI on_tls_callback(PVOID handle, DWORD reason, PVOID resv)
  73. {
  74. // Run code here
  75. switch (reason )
  76. {
  77. case  DLL_PROCESS_ATTACH:
  78. {
  79. MessageBox(NULL, TEXT("Thread attach!"), TEXT("TLS Callback"), 0);
  80. break;
  81. }
  82. case DLL_PROCESS_DETACH:
  83. {
  84. MessageBox(NULL, TEXT("Thread detach!"), TEXT("TLS Callback"), 0);
  85. break;
  86. }
  87. default:
  88. break;
  89. };
  90. }
  91.  
  92. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  93.  
  94. int main()
  95. {
  96. // TODO: Place code here.
  97. MessageBox(NULL, TEXT("Hello, Main Program!"), TEXT("Main Proc"), 0);
  98.  
  99. return 0;
  100. }
  101.  
  102. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  103.  
  104.  
  105.  
  106.  



Proyecto: http://www.mediafire.com/?tcbtpoebhd8j4z7

Hasta luego
137  Programación / Programación C/C++ / Tutorial: Crear un parche 2 (Inyección de DLL) en: 16 Marzo 2013, 10:27 am
NIVEL: Beginner
Test: WinXP SP3

Considerando los tutoriales anteriores que no usaban una DLL,
http://foro.elhacker.net/programacion_cc/tutorial_crear_un_parche_1-t384060.0.html
http://foro.elhacker.net/programacion_cc/tutorial_crear_un_parche_1_desde_otro_proceso-t384798.0.html

... o bien la cargaban por medio de un LoadLibrary en el ejecutable víctima. En realidad, la mayoría de las veces nadie va a cargar nuestra DLL voluntariamente por lo que va a ser necesario forzar al proceso víctima a que la cargue, o también se puede hacer que el sistema operativo lo haga.
Podemos crear un cargador (Loader), y hacer lo que se conoce como inyección de DLL.

CreateRemoteThread
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682437(v=vs.85).aspx
Con esta función podemos crear un hilo en un proceso víctima y hacer que se haga un  LoadLibrary de nuestra DLL.
Una cosa, esto es una técnica muy conocida y si la finalidad es hacer un hack lo que va a pasar es que cualquier antivirus o sistema de seguridad va a detectarlo. Por eso, esta creo que es la forma que más se conoce para cargar una DLL en un proceso víctima, pero no es ni la única ni la mejor.
Pero si la finalidad es cargar una DLL en algún proceso que no involucre por ejemplo, un sistema antitrampas, entonces no hay drama.

Los parámetros 4 y 5 de CreateRemoteThread son los que hacen evidente lo que pasa. Se le pasa la dirección de  LoadLibrary y luego una dirección en el proceso víctima en donde se ha escrito el nombre de nuestra DLL.
Es decir que cuando se ejecute el hilo en el proceso remoto va a ejecutarse LoadLibrary cargando nuestra DLL.
Fuera de esa explicación básica sólo queda dejar la información necesaria para hacer algo así:
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366890(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684175(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366894(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682437(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/ms686736(v=vs.85).aspx

El código del inyector:
Código
  1.  
  2. //
  3. // By 85
  4. // elhacker.net
  5. // etalking.com.ar
  6. // 2013
  7. //
  8.  
  9. ///////////////////
  10.  
  11. #include<windows.h>
  12. #include<stdio.h>
  13. #include<tlhelp32.h>
  14.  
  15. //////////////////////
  16.  
  17. HANDLE hProcess;  
  18. typedef DWORD ((__stdcall*Add_t)(void *));//Typedef para el argumento 4 de CreateRemoteThread
  19.  
  20. /////////////////
  21.  
  22. bool fileExists(const char* filename)
  23. {
  24. WIN32_FIND_DATA finddata;
  25. HANDLE handle = FindFirstFile(filename,&finddata);
  26. return (handle!=INVALID_HANDLE_VALUE);
  27. }
  28.  
  29. //////////////////////////////////
  30.  
  31. int main(){
  32.  
  33. // We have to replace JZ with JNZ in another process.
  34.  
  35. const char* dll_name = "hack.dll\0";
  36. if(!fileExists(dll_name))
  37. {
  38. printf("La DLL no se encuentra!\n");
  39. system("pause");
  40. ExitProcess( 0 );
  41. }
  42. char l_exe[] = {'d','u','m','m','y','.','e','x','e',0};
  43. char l_window[] = {'D','u','m','m','y',0};
  44. HWND hwnd;          
  45. hwnd = FindWindow(0, l_window);    
  46. if (!hwnd)    
  47. {
  48. printf("El proceso objetivo debe estar corriendo!\n");
  49. system("pause");
  50. ExitProcess( 0 );            
  51. }
  52. Add_t AddLoadLibrary = (DWORD(__stdcall *)(void *))GetProcAddress(GetModuleHandle("kernel32"), "LoadLibraryA");
  53. unsigned long pid;    
  54. GetWindowThreadProcessId( hwnd, &pid);    
  55. HANDLE hProcess = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, false, pid);
  56. HANDLE hModule = VirtualAllocEx( hProcess, 0, sizeof(dll_name), MEM_COMMIT, PAGE_EXECUTE_READWRITE );
  57. WriteProcessMemory( hProcess, hModule, (LPVOID)dll_name, sizeof(dll_name), NULL );
  58. CreateRemoteThread( hProcess, NULL, 0, AddLoadLibrary, hModule, 0, NULL );
  59. CloseHandle( hProcess );
  60. VirtualFreeEx(hProcess, (LPVOID)hModule, 0, MEM_RELEASE);
  61.  
  62. //Los loaders deben generalmente cerrarse inmediatamente luego de cargar la dll en el proceso foráneo
  63. //ExitProcess( 0 );
  64. return 0;
  65. }
  66.  
  67. //////////////
  68.  

El código de la DLL atacante:
Código
  1.  
  2. //
  3. // By 85
  4. // elhacker.net
  5. // etalking.com.ar
  6. // 2013
  7. //
  8.  
  9. //////////////////////
  10.  
  11. #define WIN32_LEAN_AND_MEAN
  12. #include<windows.h>
  13. #include<stdio.h>
  14. #include<stdlib.h>
  15.  
  16. /////////////////////////////////////
  17.  
  18. DWORD dwPatchPlace = 0x00000000;
  19. BYTE Opcode_JZ = 0x74;
  20. BYTE Opcode_JNZ = 0x75;
  21.  
  22. ///////////
  23.  
  24. inline void Patch(){//Función de parche
  25.  
  26. if(*(PBYTE)dwPatchPlace!=Opcode_JZ) return;
  27.  
  28. DWORD dwOldProtect;
  29.    VirtualProtect( (LPVOID)dwPatchPlace,
  30.                    1,
  31.                    PAGE_EXECUTE_WRITECOPY,
  32.                    &dwOldProtect );
  33.  
  34. WriteProcessMemory( GetCurrentProcess(),
  35.                        (LPVOID)dwPatchPlace,
  36.                        &Opcode_JNZ,
  37.                        1,
  38.                        NULL );
  39.  
  40. VirtualProtect( (LPVOID)dwPatchPlace,
  41.                    1,
  42.                    dwOldProtect,
  43.                    &dwOldProtect );
  44. }
  45.  
  46. ////////////////////////
  47.  
  48. void Thread(void)
  49. {
  50. dwPatchPlace=(DWORD)GetModuleHandle(NULL);//Retorna la BaseAddress
  51.  
  52. //Sumamos el offset obtenido del desensamblado
  53. dwPatchPlace+=0x00001000;
  54. dwPatchPlace+=0x6C;
  55.  
  56. //Logs
  57. printf("\nYou have the DLL inside! (Frases memorables XD)\n");
  58. printf("0x%X\n",(DWORD)GetModuleHandle(NULL));
  59. printf("0x%X\n",dwPatchPlace);
  60. printf("0x%X\n",*(PBYTE)dwPatchPlace);
  61. printf("\n");
  62. system("pause");
  63.  
  64. Patch();
  65. }
  66.  
  67. ///
  68. bool WINAPI DllMain(HINSTANCE, DWORD fdwReason, LPVOID)
  69. {
  70. if (fdwReason==DLL_PROCESS_ATTACH)
  71. {
  72. //Creamos un hilo local en el proceso objetivo (proceso local)
  73. CreateThread( NULL, NULL, (LPTHREAD_START_ROUTINE)Thread, NULL, NULL, NULL );
  74. }
  75. return(true);
  76. }
  77.  
  78. //
  79.  

Y el código del programa ‘Dummy’:
Código
  1.  
  2. //
  3. // By 85
  4. // elhacker.net
  5. // etalking.com.ar
  6. // 2013
  7. //
  8.  
  9. ///////////////////
  10.  
  11. #include<windows.h>
  12. #include<stdio.h>
  13.  
  14. //////////////////////
  15. //////////////////////
  16.  
  17. DWORD dwPatchPlace = 0x00000000;
  18. BYTE Opcode_JZ = 0x74;
  19.  
  20. ///////////
  21. ////////////////////
  22.  
  23. void Target(){
  24.  
  25. while(1){
  26.  
  27.  
  28. #define MASTERNUM 85
  29. int master=0x99999997;
  30. char* ingreso = new char[256];
  31.  
  32. system("cls");
  33. printf("Ingrese la llave maestra\n");
  34. scanf("%s", ingreso);
  35.  
  36. if(!strcmpi(ingreso, new char[]= "key85\0")){
  37.  
  38. master = 85;
  39. }
  40.  
  41. delete []ingreso;
  42. if(master==MASTERNUM)
  43. {
  44. printf("FELICITACIONES! USTE HA INGRESADO\n");
  45. printf("\n");
  46. system("pause");
  47. break;
  48. }
  49.  
  50. // if(GetAsyncKeyState(VK_END)) break;// En otro hilo
  51. if(!strcmpi(ingreso, new char[]= "exit\0")) break;
  52. }
  53. }
  54.  
  55. //
  56. void Check()//Función que representa un método de seguridad
  57. {
  58. if(*(PBYTE)dwPatchPlace != Opcode_JZ)
  59. {
  60. printf("0x%X\n",*(PBYTE)dwPatchPlace);
  61. printf("Memoria alterada!, se sale del programa..\n");
  62. printf("\n");
  63. system("pause");
  64. ExitProcess(45);
  65. }
  66. }
  67.  
  68. /////////
  69.  
  70. int main(){
  71.  
  72. SetConsoleTitle("Dummy");
  73.  
  74. dwPatchPlace=(DWORD)GetModuleHandle(NULL);//Retorna la BaseAddress
  75.  
  76. //Sumamos el offset obtenido del desensamblado
  77. dwPatchPlace+=0x00001000;
  78. dwPatchPlace+=0x6C;
  79.  
  80. //Logs
  81.  
  82. printf("LOG DE SEGURIDAD PRIMARIO:\n");
  83. printf("0x%X\n",(DWORD)GetModuleHandle(NULL));
  84. printf("0x%X\n",dwPatchPlace);
  85. printf("0x%X\n",*(PBYTE)dwPatchPlace);
  86. printf("\n");
  87. system("pause");
  88.  
  89. //Llamamos a la función
  90. Target();
  91.  
  92. printf("LOG DE SEGURIDAD SECUNDARIO:\n");
  93. printf("0x%X\n",(DWORD)GetModuleHandle(NULL));
  94. printf("0x%X\n",dwPatchPlace);
  95. printf("0x%X\n",*(PBYTE)dwPatchPlace);
  96. printf("\n");
  97. system("pause");
  98.  
  99. //Se deja que las comprobaciones de seguridad sigan su curso
  100. Check();
  101.  
  102. return 0;
  103. }
  104.  

Otras formas de cargar DLL’s:
AppInit_DLLs
Agregar o utilizar imports
DLL wrappers
DBG API
SetWindowsHookEX
Usar un driver (modo kernel)
Otras..

Project:
http://www.mediafire.com/?24yxijb4ce66jiv

Nota: La descarga no tiene virus, debe ser que se detecta el uso de CreateRemoteThread.

No iba a dejar imágenes pero dejo una que explica como se usan los archivos del ejemplo:


Por una cuestión de construcción, se debe abrir el programa 'dummy' en primer lugar y luego el inyector de DLL.

Saludos

138  Programación / Programación C/C++ / Re: maximo comun divisor y minimo comun multiplo en: 15 Marzo 2013, 03:26 am

Fijate esto:

http://jonlandrum.com/2012/03/02/finding-the-least-common-multiple-using-euclids-algorithm-and-cpp/

http://stackoverflow.com/questions/3214696/least-common-multiple-of-given-numbers

http://blog.csharphelper.com/2010/01/16/calculate-the-greatest-common-divisor-gcd-and-least-common-multiple-lcm-of-two-integers-in-c.aspx

http://stackoverflow.com/questions/4229870/c-algorithm-to-calculate-least-common-multiple-for-multiple-numbers

http://stackoverflow.com/questions/13569810/least-common-multiple


Saludos
139  Programación / Programación C/C++ / Re: Programa para pasar de numero decimal a coma flotante en: 15 Marzo 2013, 03:22 am
Hola, chicos, quiero compartir mi experiencia de compra en línea. Compré muchos productos de diferentes tiendas en línea. pero sólo una tienda profundamente en mis recuerdos. cómo expresar mis sentimientos? nada que decir. perfecto! También me acuerdo de lo que he comprado. que es de 4,7 pulgadas Android 4.1 Smartphone i9300. es de dos años. pero ahora todavía lo utilizan. siguen funcionando bien. toque flexible, píxeles, velocidad de internet súper rápido. ritmo alarmante aprender nuevos juegos. en ese momento me compré muy caro. pero ahora de vez en cuando ver este teléfono en un blog. Yo estaba tan sorprendido. todas las funciones son las mismas, pero su caída de precios de 100 €. tan increíble. así que hoy me decido a comprar uno nuevo. muy vale la pena! realmente perfecto! mientras tanto se lo recomiendo a todo el mundo. si necesitas un smartphone, esta es tu mejor opción. no tengas duda! comprar ahora mismo:    http://baseurl.de/t8

baaaaaaaaaaaannnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn!
es un bot
140  Programación / Programación C/C++ / Re: [?] Problemas con código en C++ en: 15 Marzo 2013, 03:11 am
Vale Vale, muchas gracias, otra cosa, vi que pusiste esto:

Código
  1. // MessageBox(0,0,0,0);

Y que me dijiste esto:

Pero cuando pongo lo del MessageBox(0,0,0,0); dice que no esta declarado, de que Liberia es ese comando??

Saludos
 ;-)


Es una función de Windows. Cuando no conozcas una función de Windows tenés que buscarla en un lugar llamado MSDN.

Es fácil, en google ponés:

'MessageBox, MSDN' + ENTER

y te va a salir algo así:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms645505(v=vs.85).aspx

MessageBox ya te dije que la uso para depurar, porque tiene el efecto de detener el programa y mostrar información en pantalla.
Generalmente la podés usar para aplicaciones no de consola, porque en las de consola bastaría con uzar system("pause") como una de las formas para detener el programa y usar printf para mostrar información por pantalla.
Si tu intención es depurar tus programas, te recomiento DbgView + OutputDebugString

AH faltaba decir que incluyas windows.h  ;-)

88
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines