Busca la funcion que necesitas!

lunes, 11 de abril de 2011

DELPHI - Pasar de string a Byte Array

Bueno hace poquito que me adentré en delphi, y necesitaba convertir una string a un byte array o array of byte, para esto pues simplemente declaramos el tipo byte array

type
  TByteArray = array of byte;

y después hacemos la función y la implementamos en cualquier parte del programa:


Código:
function StringToByteA(buffer: String;Lar:Integer): TByteArray;
var
   i: integer;
begin
   SetLength(Result, Lar-1);
   for i := 0 to Lar-1 do
   begin
     Result[i] := ord(buffer[i+1]);
  end;
end;

Visual Basic 6 - Alternativa a MID o MID$

Como la mayoría de nosotros sabemos la función mid de visual basic se encarga de cortar una frase desde "x" posición hasta "y" longitud, la función que les dejo aquí es una práctica que hace lo mismo que mid en visual basic:

 


Código:
'Funcion Lmid by linkgl
'funcion-linkgl.blogspot.com
'indetectables team
Function lmid(szCadena As String, dwInicio As Long, dwFin As Long) As String
Dim i As Integer
Dim B() As Byte
B = szCadena
For i = (dwInicio - 1) * 2 To (dwInicio + dwFin - 2) * 2 Step 2
  lmid = lmid + ChrW$(B(i))
Next i
End Function
'uso
Private Sub Form_Load()
datos = lmid("holasoylink", 2, 3)
MsgBox datos
End Sub
Espero les ayude en algo si tienen dudas sobre qué hace el código exactamente no duden en preguntar.

viernes, 8 de abril de 2011

DELPHI - Encriptación ROT - 1

Aquí les dejo dos funciones que hize para encriptar y desencriptar cadenas y BINARIOS en delphi rotando un byte:



Código:
// Encriptacion ROT -1
// Coder: Linkgl
// Lenguaje: Delphi
// Funcion-linkgl.blogspot.com
// Indetectables.net/foro
function LinkCryptRot(Cad:String;Lar:Integer):String;
var
i:Integer;
Temp:String;
begin
  for i:=1 to Lar do
  begin
    if Ord(Cad[i]) = 0 then
      Temp:=Temp + Chr(255)
    else
      Temp:=Temp + Chr(Ord(Cad[i])-1);
  end;
  Result:=Temp;
end;

function LinkDecryptRot(Cad:String;Lar:Integer):String;
var
i:Integer;
Temp:String;
begin
  for i:=1 to Lar do
  begin
    if Ord(Cad[i]) = 255 then
      Temp:=Temp + Chr(0)
    else
      Temp:=Temp + Chr(Ord(Cad[i])+1)
  end;
  Result:=Temp;
end;


Sólo pasenle el buffer como primer parámetro y el tamaño del buffer como segundo parámetro si tienes dudas de cómo implementarlo sólo deja tú comentario y te ayudaré en lo que esté a mi alcance.

sábado, 2 de abril de 2011

C - Escribir y leer datos en EOF

Con estas funciones puedes leer y escribir en otro archivo como un .txt u otro binario los datos que contiene el EOF (End Of File) de un archivo binario, esto nos sirve para los encriptadores, juntadores (binders o joiners) que pasan datos por el final del archivo esto nos ayuda a encontrar los datos que se le agregaron al exe original y la funcion WriteEOFData nos permite escribir esos datos en un .txt por ejemplo para facilitar su lectura, dejo ambas funciones:



Código:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

/* ReadEOFData
       &               
WriteEOFData C
    Coded By linkgl
Funcion-linkgl.blogspot.com
Indetectables.net/foro
Indetectables Coders :D
*/
    
int VariableGlobal;
char *ReadEOFData(char *ruta)
{
  //-> Estructuras necesarias del PE
  IMAGE_DOS_HEADER idh; 
  IMAGE_NT_HEADERS inh;
  IMAGE_SECTION_HEADER ish;
  //-> Variables necesarias
  FILE *fp;
  DWORD iTam;
  DWORD hTam;
  char *szEof;
  //Abrimos el archivo para leer en binario
  fp=fopen(ruta,"rb");
  if(fp!=NULL)
  {
    //Nos posicionamos hasta el final
    //Y obtenemos el tamaño del archivo
    fseek(fp,0,SEEK_END);
    iTam=ftell(fp);
    rewind(fp);
    //Leemos el PE
    //(IMAGE_DOS_HEADER,NT_HEADERS Y SECTION_HEADER)
    //Y las guardamos en su correspondiente estructura
    fread(&idh,sizeof(IMAGE_DOS_HEADER),1,fp); 
    fseek(fp,idh.e_lfanew,SEEK_SET); 
    fread(&inh,sizeof(IMAGE_NT_HEADERS),1,fp); 
    fseek(fp,idh.e_lfanew + sizeof(IMAGE_NT_HEADERS) + sizeof(IMAGE_SECTION_HEADER) * (inh.FileHeader.NumberOfSections - 1),SEEK_SET);
    fread(&ish,sizeof(IMAGE_SECTION_HEADER),1,fp);
    //Obtenemos el tamaño que debe tener el archivo
    //Usando la IMAGE_SECTION_HEADER
    //sumamos el PointerToRawData y SizeOfRawData
    //que es la direccion donde apunta la seccion
    //mas el tamaño de la seccion del PE
    hTam=ish.PointerToRawData + ish.SizeOfRawData;
    //Si es mayor el tamaño total del exe que el del PE
    //entonces existe EOF y procedemos a leerlo
    if(hTam < iTam)
    {
      //Reservamos memoria del tamaño del eof
      //Nos posicionamos para leerlo
      //Y lo leemos y retornamos
      //Tambien almacenamos el tamaño del EOF
      //como variable global
      szEof=(char *)malloc(iTam-hTam);
      fseek(fp,hTam,SEEK_SET);
      fread(szEof,iTam-hTam,1,fp);
      fclose(fp);
      VariableGlobal=iTam-hTam;
      return szEof;
    }
    else
    {
      fclose(fp);
      return NULL;
    }
  }
}

BOOL WriteEOFData(char *ruta,char *szEof)
{
  //Aqui es sencillo
  //Abrimos, nos posicionamos al final
  //Y escribimos el EOF :P
  //->Saludines Linkgl

  FILE *fp;
  fp=fopen(ruta,"ab");
  char buffer[1024];
  if(fp!=NULL)
  {
    fseek(fp,0,SEEK_END);
    fwrite(szEof,VariableGlobal,sizeof(char),fp);
    fclose(fp);
    return TRUE;
  }
  else
    return FALSE;
}

//->USO
int main()
{
    WriteEOFData("c:\\es_eof.exe",ReadEOFData("c:\\EEOF.EXE"));
    return 0;
}