Delphi Brasil
Seja bem-vindo (a) ao Delphi Brasil,aqui você encontrará dicas,tutoriais e etc.
Por favor,registre-se para obter o maior proveito possivel do fórum.

Participe do fórum, é rápido e fácil

Delphi Brasil
Seja bem-vindo (a) ao Delphi Brasil,aqui você encontrará dicas,tutoriais e etc.
Por favor,registre-se para obter o maior proveito possivel do fórum.
Delphi Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Procurar
 
 

Resultados por:
 


Rechercher Pesquisa avançada

Entrar

Esqueci-me da senha

Últimos assuntos
» Problemas para atualizar carteira bamcaria no delphi 5
Strip Reloc v1.13 - Open Source EmptySeg Jul 27, 2015 11:42 am por Fredyffp

» Fontes Sistema Store Protheus 7.0 - Versão completa Delphi XE7
Strip Reloc v1.13 - Open Source EmptySáb Jul 18, 2015 10:18 am por storeprotheus

» Fontes Sistema Store Protheus 7.0 - Versão completa Delphi XE7
Strip Reloc v1.13 - Open Source EmptySáb Jul 18, 2015 10:17 am por storeprotheus

» Como gravar um campo Blob no FireBird + Delphi de um campo tipo imagem no MS-ACCESS ?
Strip Reloc v1.13 - Open Source EmptyQui maio 14, 2015 3:41 pm por ant.carlos/sp

»  Exception EBDEngineError
Strip Reloc v1.13 - Open Source EmptySex Fev 27, 2015 6:52 am por luan_cpd

» Exception EBDEngineError
Strip Reloc v1.13 - Open Source EmptySex Fev 27, 2015 6:49 am por luan_cpd

» Componente Delphi Brasil
Strip Reloc v1.13 - Open Source EmptySex Jan 23, 2015 11:51 am por pedrosilva

»  Erro no Delphi “A linha não pode ser localizada para atualiz
Strip Reloc v1.13 - Open Source EmptySex Out 24, 2014 11:47 am por Edson

» Fontes Automação Comercial 8.5 - Retaguarda c/ PDV, PAF 1.10, TEF, ECF, Sintegra, SpedFiscal, Google Maps e muito mas...
Strip Reloc v1.13 - Open Source EmptyTer Out 14, 2014 9:55 am por john marcos

Parceiros

Strip Reloc v1.13 - Open Source

2 participantes

Ir para baixo

Strip Reloc v1.13 - Open Source Empty Strip Reloc v1.13 - Open Source

Mensagem por Ninja8086 Seg Ago 01, 2011 9:49 pm

Programinha interessante. Vou resumir tudo sem muitos detalhes. Ele remove partes do executável consideradas "inúteis" pelo Windows, em resumo, partes que nunca serão usadas nem pra alocar recurso nem pra codificar instruções.

Ele não reduz muito, mas considerando que app de console é bem pequeno, qualquer ganho de 5 KB já é ótimo, pra uma linguagem igual Pascal.

Obs: Na hora de criar um projeto novo escolha aplicativo de console (linha de comando)
O programa é Open Source

Código:

program StripReloc;
{$APPTYPE CONSOLE}

{
  StripReloc v1.13
  Strip relocation section from Win32 PE files
  Copyright (C) 1999-2005 Jordan Russell. All rights reserved.
  http://www.jrsoftware.org/

  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License
  as published by the Free Software Foundation; either version 2
  of the License, or (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

  $jrsoftware: stripreloc/StripReloc.dpr,v 1.16 2005/02/13 05:03:42 jr Exp $
}

uses
  Windows, SysUtils, Classes;

{x$R *.RES}

const
  Version = '1.13';

var
  KeepBackups: Boolean = True;
  WantValidChecksum: Boolean = False;
  ForceStrip: Boolean = False;

  ImageHlpHandle: THandle;
  CheckSumMappedFile: function(BaseAddress: Pointer; FileLength: DWORD;
    var HeaderSum: DWORD; var CheckSum: DWORD): PImageNtHeaders; stdcall;

function CalcChecksum(const FileHandle: THandle): DWORD;
var
  Size: DWORD;
  H: THandle;
  M: Pointer;
  OldSum: DWORD;
begin
  Size := GetFileSize(FileHandle, nil);
  H := CreateFileMapping(FileHandle, nil, PAGE_READONLY, 0, Size, nil);
  if H = 0 then
    RaiseLastWin32Error;
  try
    M := MapViewOfFile(H, FILE_MAP_READ, 0, 0, Size);
    if M = nil then
      RaiseLastWin32Error;
    try
      Win32Check(CheckSumMappedFile(M, Size, OldSum, Result) <> nil);
    finally
      UnmapViewOfFile(M);
    end;
  finally
    CloseHandle(H);
  end;
end;

procedure Strip(const Filename: String);
const
  IMAGE_NT_OPTIONAL_HDR32_MAGIC = $10b;
type
  PPESectionHeaderArray = ^TPESectionHeaderArray;
  TPESectionHeaderArray = array[0..$7FFFFFFF div SizeOf(TImageSectionHeader)-1] of TImageSectionHeader;
var
  BackupFilename: String;
  F, F2: File;
  EXESig: Word;
  PEHeaderOffset, PESig: Cardinal;
  PEHeader: TImageFileHeader;
  PEOptHeader: TImageOptionalHeader;
  PESectionHeaders: PPESectionHeaderArray;
  BytesLeft, Bytes: Cardinal;
  Buf: array[0..8191] of Byte;
  I: Integer;
  RelocVirtualAddr, RelocPhysOffset, RelocPhysSize: Cardinal;
  OldSize, NewSize: Cardinal;
  TimeStamp: TFileTime;
begin
  PESectionHeaders := nil;
  try
    RelocPhysOffset := 0;
    RelocPhysSize := 0;
    BackupFilename := Filename + '.bak';

    Write(Filename, ': ');
    AssignFile(F, Filename);
    FileMode := fmOpenRead or fmShareDenyWrite;
    Reset(F, 1);
    try
      OldSize := FileSize(F);
      GetFileTime(TFileRec(F).Handle, nil, nil, @TimeStamp);

      BlockRead(F, EXESig, SizeOf(EXESig));
      if EXESig <> $5A4D {'MZ'} then begin
        Writeln('File isn''t an EXE file (1).');
        Exit;
      end;
      Seek(F, $3C);
      BlockRead(F, PEHeaderOffset, SizeOf(PEHeaderOffset));
      if PEHeaderOffset = 0 then begin
        Writeln('File isn''t a PE file (1).');
        Exit;
      end;
      Seek(F, PEHeaderOffset);
      BlockRead(F, PESig, SizeOf(PESig));
      if PESig <> $00004550 {'PE'#0#0} then begin
        Writeln('File isn''t a PE file (2).');
        Exit;
      end;
      BlockRead(F, PEHeader, SizeOf(PEHeader));
      if not ForceStrip and (PEHeader.Characteristics and IMAGE_FILE_DLL <> 0) then begin
        Writeln('Skipping; can''t strip a DLL.');
        Exit;
      end;
      if PEHeader.Characteristics and IMAGE_FILE_RELOCS_STRIPPED <> 0 then begin
        Writeln('Relocations already stripped from file (1).');
        Exit;
      end;
      PEHeader.Characteristics := PEHeader.Characteristics or IMAGE_FILE_RELOCS_STRIPPED;
      if PEHeader.SizeOfOptionalHeader <> SizeOf(PEOptHeader) then begin
        Writeln('File isn''t a valid 32-bit image (1).');
        Exit;
      end;
      BlockRead(F, PEOptHeader, SizeOf(PEOptHeader));
      if PEOptHeader.Magic <> IMAGE_NT_OPTIONAL_HDR32_MAGIC then begin
        Writeln('File isn''t a valid 32-bit image (2).');
        Exit;
      end;
      if (PEOptHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress = 0) or
        (PEOptHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].Size = 0) then begin
        Writeln('Relocations already stripped from file (2).');
        Exit;
      end;
      RelocVirtualAddr := PEOptHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress;
      PEOptHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress := 0;
      PEOptHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].Size := 0;
      if not WantValidChecksum then
        PEOptHeader.CheckSum := 0;
      GetMem(PESectionHeaders, PEHeader.NumberOfSections * SizeOf(TImageSectionHeader));
      BlockRead(F, PESectionHeaders^, PEHeader.NumberOfSections * SizeOf(TImageSectionHeader));
      for I := 0 to PEHeader.NumberOfSections-1 do
        with PESectionHeaders[I] do
          if (VirtualAddress = RelocVirtualAddr) and (SizeOfRawData <> 0) then begin
            RelocPhysOffset := PointerToRawData;
            RelocPhysSize := SizeOfRawData;
            SizeOfRawData := 0;
            Break;
          end;
      if RelocPhysOffset = 0 then begin
        Writeln('Relocations already stripped from file (3).');
        Exit;
      end;
      if RelocPhysSize = 0 then begin
        Writeln('Relocations already stripped from file (4).');
        Exit;
      end;
      for I := 0 to PEHeader.NumberOfSections-1 do
        with PESectionHeaders[I] do begin
          if PointerToRawData > RelocPhysOffset then
            Dec(PointerToRawData, RelocPhysSize);
          if PointerToLinenumbers > RelocPhysOffset then
            Dec(PointerToLinenumbers, RelocPhysSize);
          if PointerToRelocations <> 0 then begin
            { ^ I don't think this field is ever used in the PE format.
              StripRlc doesn't handle it. }
            Writeln('Cannot handle this file (1).');
            Exit;
          end;
        end;
      if PEOptHeader.ImageBase < $400000 then begin
        Writeln('Cannot handle this file -- the image base address is less than 0x400000.');
        Exit;
      end;
    finally
      CloseFile(F);
    end;
    if FileExists(BackupFilename) then
      Win32Check(DeleteFile(BackupFilename));
    Rename(F, BackupFilename);
    try
      FileMode := fmOpenRead or fmShareDenyWrite;
      Reset(F, 1);
      try
        AssignFile(F2, Filename);
        FileMode := fmOpenWrite or fmShareExclusive;
        Rewrite(F2, 1);
        try
          BytesLeft := RelocPhysOffset;
          while BytesLeft <> 0 do begin
            Bytes := BytesLeft;
            if Bytes > SizeOf(Buf) then Bytes := SizeOf(Buf);
            BlockRead(F, Buf, Bytes);
            BlockWrite(F2, Buf, Bytes);
            Dec(BytesLeft, Bytes);
          end;
          Seek(F, Cardinal(FilePos(F)) + RelocPhysSize);
          BytesLeft := FileSize(F) - FilePos(F);
          while BytesLeft <> 0 do begin
            Bytes := BytesLeft;
            if Bytes > SizeOf(Buf) then Bytes := SizeOf(Buf);
            BlockRead(F, Buf, Bytes);
            BlockWrite(F2, Buf, Bytes);
            Dec(BytesLeft, Bytes);
          end;
          Seek(F2, PEHeaderOffset + SizeOf(PESig));
          BlockWrite(F2, PEHeader, SizeOf(PEHeader));
          BlockWrite(F2, PEOptHeader, SizeOf(PEOptHeader));
          BlockWrite(F2, PESectionHeaders^, PEHeader.NumberOfSections * SizeOf(TImageSectionHeader));
          if WantValidChecksum then begin
            PEOptHeader.CheckSum := CalcChecksum(TFileRec(F2).Handle);
            { go back and rewrite opt. header with new checksum }
            Seek(F2, PEHeaderOffset + SizeOf(PESig) + SizeOf(PEHeader));
            BlockWrite(F2, PEOptHeader, SizeOf(PEOptHeader));
          end;
          NewSize := FileSize(F2);
          SetFileTime(TFileRec(F2).Handle, nil, nil, @TimeStamp);
        finally
          CloseFile(F2);
        end;
      finally
        CloseFile(F);
      end;
    except
      DeleteFile(Filename);
      AssignFile(F, BackupFilename);
      Rename(F, Filename);
      raise;
    end;
    Writeln(OldSize, ' -> ', NewSize, ' bytes (',
      OldSize - NewSize, ' difference)');
    if not KeepBackups then
      if not DeleteFile(BackupFilename) then
        Writeln('Warning: Couldn''t delete backup file ', BackupFilename);
  finally
    FreeMem(PESectionHeaders);
  end;
end;

var
  SR: TSearchRec;
  S: String;
  FilesList: TStringList;
  P, I: Integer;
  HasFileParameter: Boolean = False;
  NumFiles: Integer = 0;
label 1;
begin
  try
    Writeln('StripReloc v' + Version + ', Copyright (C) 1999-2005 Jordan Russell, www.jrsoftware.org');
    if ParamCount = 0 then begin
      Writeln('Strip relocation section from Win32 PE files');
      Writeln;
    1:Writeln('usage:    stripreloc [switches] filename.exe');
      Writeln;
      Writeln('switches:  /B  don''t create .bak backup files');
      Writeln('          /C  write a valid checksum in the header (instead of zero)');
      Writeln('          /F  force stripping DLLs instead of skipping them. do not use!');
      Halt(1);
    end;
    Writeln;

    for P := 1 to ParamCount do begin
      S := ParamStr(P);
      if S[1] <> '/' then
        Continue;
      Delete(S, 1, 1);
      I := 1;
      while I <= Length(S) do begin
        case UpCase(S[I]) of
          '?': goto 1;
          'B': begin
                KeepBackups := False;
                if I < Length(S) then begin
                  { For backward compatibility, do keep backups if the character
                    following 'B' is a '+'. }
                  if S[I+1] = '+' then begin
                    KeepBackups := True;
                    Inc(I);
                  end
                  else if S[I+1] = '-' then
                    Inc(I);
                end;
              end;
          'C': if not WantValidChecksum then begin
                ImageHlpHandle := LoadLibrary('imagehlp.dll');
                if ImageHlpHandle = 0 then begin
                  Writeln('Error: Unable to load imagehlp.dll.');
                  Writeln('      It is required when using the /C parameter.');
                  Halt(1);
                end;
                CheckSumMappedFile := GetProcAddress(ImageHlpHandle, 'CheckSumMappedFile');
                if @CheckSumMappedFile = nil then begin
                  Writeln('Error: Unable to get address of CheckSumMappedFile in imagehlp.dll.');
                  Writeln('      It is required when using the /C parameter.');
                  Halt(1);
                end;
                WantValidChecksum := True;
              end;
          'F': ForceStrip := True;
        else
          Writeln('Invalid parameter: /', S[I]);
          Halt(1);
        end;
        Inc(I);
      end;
    end;

    for P := 1 to ParamCount do begin
      S := ParamStr(P);
      if S[1] = '/' then
        Continue;
      HasFileParameter := True;
      FilesList := TStringList.Create;
      try
        FilesList.Sorted := True;
        if LastDelimiter('*?', S) = 0 then begin
          if GetFileAttributes(PChar(S)) and FILE_ATTRIBUTE_DIRECTORY <> 0 then begin
            { This'll catch non-existant files as well as directory names }
            Writeln(S, ': File not found.');
            Continue;
          end;
          FilesList.Add(S);
        end
        else begin
          if FindFirst(S, 0, SR) <> 0 then begin
            Writeln('No files matching "', S, '" found.');
            Continue;
          end;
          try
            repeat
              if CompareText(ExtractFileExt(SR.Name), '.bak') <> 0 then
                FilesList.Add(ExtractFilePath(S) + SR.Name);
            until FindNext(SR) <> 0;
          finally
            FindClose(SR);
          end;
        end;
        for I := 0 to FilesList.Count-1 do
          Strip(FilesList[I]);
        Inc(NumFiles);
      finally
        FilesList.Free;
      end;
    end;
    if not HasFileParameter then
      goto 1;
    if NumFiles = 0 then
      Halt(2);
  except
    on E: Exception do begin
      Writeln('Fatal error: ', E.Message);
      Halt(3);
    end;
  end;
end.
Ninja8086
Ninja8086
Membro
Membro

Mensagens : 5
Data de inscrição : 19/04/2011

Ir para o topo Ir para baixo

Strip Reloc v1.13 - Open Source Empty Re: Strip Reloc v1.13 - Open Source

Mensagem por Ninja8086 Seg Ago 01, 2011 9:50 pm

Código do AlienHEX: (salve como RAR)

Código:

526172211A0700CF907300000D000000000000006A5B7420803500550C0000FD310000024BBCA3AAA0094C321D3515002000000070726F6A656374537472697052656C6F632E647072A7187004273CFC05616A5C31BEC862C06B46688D190CD7EBA08A17F41B14CEA472C9520850886CA263CA64096FDB0B9F5FF6EE09D8D25A631C507CD67506E04A25B0D1559F45F09068298514409F0AB6B5FAF4FEF94D835656050D92AD871E8217BD1A0DD47C954C25336A906D18DDA5F21508924F0BE2591251039D6FAB2C2907C560060D0517039FEE5FDF01CB5981DED50CDAB1B276184E5A91F3220F0BCB00AA65CD7B977CB90ED82EB51E467FB74C57A0FA8D038CE8558592832453C20BD769108D56A391F37005ACCF634709918DD60A3DFAFFF2D0F7DCAFB9726231DE2BF7F4453ED593F17C67FDA8BB7D09B2DFB2EE985FFDBDA9FA135F44A14ADCCE9454C8FB01CD6692F08FB03635340622C3660D0A44EDCD06EF9BA48C7510D4FC3BC65DF71B963EF92FCE70799700F1E89CE6EEBF403EB3B05E6EFA43B923D78A0E3DAC7CA53DD7EC8B533D4C5EC52E69B1CBC3DB67F38E6EE277FAC47B1CF809A19F339A82E5508CE66C3D2604F19FA8293D4605D84078EB6FA433F198CBBF40A84B92CB1A48048B7DD04451988BC9D728FB204B433E064C67B12089201417604739BAC06E8C4506958A89ABD7D3730744AB9D8BBF6B4B45454E719A1366BE673572D41096C3F6A9D848DCD614952823C4B27206B8067FA9CADCB49C297253D36ACDE356AAB915D8A0BBBB59420C9068A4623E599F83B4DDF6285EE5ED2D1D2C3115E0426E5605D53B0DA1BA8D7F70DE3DE25C5C9EDEAB224B12986C9999779E9C82069D8778D5ECA0DCE46530D48F11E44EE3B66985181B3131C08AD7D2335976849051A2098DB0454654FA07E84AB32A10CC00CD10DA5B8F1BABA96894844948187C67E2BCA3D8F0CB9319A70983D94B72FE6072708F600307B2CAAA1136C7B764853A85D225A4CC47CE22AAF146B64503935A6C4E6D0FD4864082A5F61F0764D9ACA5992E2835A387EB68A360F6F724F5F12A0F282872108E0DF8E7EFA8591888989649529762CE67EB64C32C050E284A1B8688C24F8E32B45AC5078C7F44AC2B668C55D72137CE709A67558FFF1BCD7C9FAB73A191BB89A00D70223D64EA97CFF8C69128ECEEBCDF4AF7F9706274F27F43F1B05C9FF06381F32460FE049B47F51E325375504359C720D61339534AA48A13DD37CDED1D90777A7142F0B524B3FC9AD26AC7959466AAE97F642D9B867959B1D996765E9D592495E719DACEF2C900E4FE875DFD2F07D1CCB5B9F30CDD1FF6AF2EA0C56404E4C135F8B7C73779EECAB773D28467753AA4E25DEF921525A3F71DE64E84AB493B8EA5A4AFEFC35C824FCAC53D91340B582E5AE8179ACD6E5C1B86F0C16678A623A373B234F8D7EB71FF310720A747D727DE1E32EE504F5DC98A084486F8CA8F2341E36E3D51CB9DEB0F3A76FBE07DBC298F8B9F39D6D3D30589ACED1427AF2C1A74C7A17CC5B2A9AF7DE88545422EA3C4292D444EF4674BD0588C972E2087A4D5D12D0C4FD901E00CEEA5615065DF6A288A409A943D28F8436992C3A6FDB7419B9EB291DED0B070D11999538FFBEE55B9D65A6B5373C21027D92B26571CF7264EE06E91CF88D27A470D2B74B3AFD5E552BD102EA06F5FB6A174711D60B587C6FEDCCDA8C1161372FB6E97342C127F5E19312CB0031B8F457D268E3758C4CC0E8B7797FD44DAAECBAD65635C25648E3EAE4A34A95FFEE46C3DA945943D8DAC09413D86928D045CEFCADAFA2DFF6A3F39AF519345D41B36E7DD5FE2FF87941FA3FC8D22F81C8095EB1BBC9A1F31C9FE6F7B245C4F558D4DFF1B41AE4D2B79D07C11F9FAB5DB44C8C4291561A6DE48F9A1D2589DDB6C249B423D4CD9302C3CBB39E0A301755E958FFBA927DE53949458FA0C7B86AD3D2062FF02B99CCA44B8DA6F84813E8968D407B4CF84F88D34D39A31E7397DDF3E6ED399B6D999CD380A194C7097372ED825C6620FEAC6339ECD92D87502E33AC6F7A05349E828A70A7ACA7AFB2FB1FE4685FE55DF7397F12387FF191E5072838ADA7565DA54AFAE6AA2EBFECED51B7E83A88CA0F5B4D072FAF827289C4E7AF7017704CCB8D333B35CDC5690FDE9D75CC2043D8E4077A0EDA080223C37F6AF4C29839B2614B8EC18F891DF4CE591F1B872B22B849349F476144F7226E1DC7E7EB8698F90F0840AB076E0F40D9A9034A1CD1B1DDDF00EFB9D7D999EC5B2C2FD603E0F469D650438E9DD2FCE39B518A5B85F13F57DFB858700614C923CE59C9887491AA87D33A72325EF8A207E640556ECE101A5745F90EAB1A6A6F072F23832BF54FCCA6FC1C5597F3ACA8C9FE828EC7574D06A08297C90D75DC2C87F75173B784EE536C339607F9F800E1DD9D14C9FBFE21EB2B839A2A2EFADDAB3B1BDD843B5A36E67E0FE57FA693310DEFE341233640D8BD771CF35E536774192E7E4F2D4B7F1A892EDEEBCF4296ADF4EBA09FAEDDB573C673FF233234414DA83B1D36A6896E8257A76D6045907CE6A99FA48E91A711BCB3D43A429660DA403327DCFA29F8E99EA36923CF4EDC68F5C2CAA9A2A1E71C265B4A38DEE2BBB0E3828B0C8ECFB5B7291134EC5580C69BD0C7C8383405B4EBC43A2552791D39A78F18364B3E2A42A8F8097EE3E2A15037E453CC93539E568935917CCFDD89F59AE85308084453898E3240D7E969B336D6A95F1487AC67E9A2A9BA426FC654A56EAE70D2733DD663BE88451879904013F091A31B8570577C1A2FA1BF2A0B5350AA6B50A09D8808895CA1809DFA1808AEE6E34A6478E6A86114AB83B1B135476B7FED905201FB9AC9C01937BAE5085073488E610E81F6F65670DBFA4DEE9402B2D8B2EAF4B1D28A05E16C758FF976800F6E39045F04EEF9995359DEE09A7E1F567AAFAC5C7F4B73895F6E0134DC6B2D8B2F1BB363A2576928E140DCB3E51552B24520FA6E8DBC91F9D21176635178A90EC1896FD6A029E978E3B670BAB454E948A4FF3CFC7B64B4E7C0D641FA9992443604B3C7297E613395E06FC8795036A87776E8F0C26561E14655F7FCF729C30609390700E22B9FBFE600C8A1B8AB0FAE798EDFF5C119804C7B1296BBFB8837E7B9B8A7D8F4CB5CBA1E3496D09F4913BD9C6809BFF11F11F311ACE139F84688DF77DD5A8AAC0EAC1E664F6490E989C3F8CDC81A2112271713503673EC4E331DAD409154008E3A9EA5B8226C4431E9E630CAB9F5B5F0EB572CB61B62D9AD791FCF6126EF391C66BDFA1A16EAD3EB629725A8F481F8B8CF000C3F48DC2E58796A2428387D648DC1B8A003753442CE6B49E3401A389E7689291D629C4EE1068ACC6AA1F2F6008E657AEF665192089496E45F2705E7BC9048D8277AFDA507C9EDFA925810BE039005AB00A05A95FD0A9797D8D065EE73FCAADCA5B129C67BA28A48FDB44B6572CE30C730B64C074BE5E9943F2C4C038F5D7C3102CCC6111CC06DAC3F61DEA65250EF0B77A665A5B7098A66B0814383371D3D47087C52AD4C4839236540864BBA79EA457FB3BE0400FC39029442F876E0A7C4FFBB22C2366FB1F75A574C67EEE2889CC0CDC1E520AC67E297398D52DE4583B867BD74711EDA9E18B275D3F7542FFCE1164E346C8F654EBC22ECEDDB3D9A947DF9475224D92377EB13019D1E21161A01FB1DAC7CEC5151F4A97891D2637F6E662E3A0D4B44D40C6CDD212D0E2A3B8BB9B561C0E2310C921237519FAA6ED42375C7328B7E86CF96783769F9B73EB1A13C915014A99CDAEF91823850BCE278EBF84EFACB24CDAB5CC2C84D047D1349544E9566ADE997D228E939C5339739C18DE7ECF08A067A7D8E94D57C7114ACBD0E05B906459D021B3EFD22E488EB312BDF8CFE6FA60AF41714D99E6347514474F50A6BD4AA166AEA7F8D8AC769943FE3D739CC0BC1D2C8D8569ABC1172293A1E42A28E15EF288BF11411D9DB881C3FF8797DDA4635CBAB69C07ADB7BDF0F5E6EDE2FB975542C66A1699071880028F1B1FACF47C730E41D7C2133FF68044E536E9E87315A54E47472104D9FA1D5E451495A0029B2E72408490978917C856A4C44FA0ECF45CFEC1E74BDEB43E67D25BF9D5FDABCEA0CFEE858FA9ADBA08966C6BD0715E515BF451CD2C48939352155882A596E9AD7BE545566C616387EAF6DCC9D0888F0C44D6E6A60138A551A20A7348A274DFBCE22B38ED4219755AFA4A7C137988F9652164373DFD9B7482E127AA2D027C6DD442FA3ED58D3D15C04F3837CCB2884BC825517364D86F74C1C4DB305D888394E676B69D9F3B86100F272727EE07F30CF4C4D91AD06C108652EB0AC769C2F776D80B74A0DADC82603D33BA8FB899D6B14597F6FB296CEF8F5AD8AD9A684958604E83AB779982CFC5954AA1E85DD46F25E7C72320D7AF2588A82DCA1BBD8360046E6519B33D0BF2CDAFD928897A556F6174B60BFE54333FD7D03D5E53866A802D25B3D09CBAF6B6949FFD9B0C7FD3768FCDFB4D085E1517B769055431E1BC24A71E2C550000BF8867F6A9FFD4C43D7B00400700
Ninja8086
Ninja8086
Membro
Membro

Mensagens : 5
Data de inscrição : 19/04/2011

Ir para o topo Ir para baixo

Strip Reloc v1.13 - Open Source Empty Re: Strip Reloc v1.13 - Open Source

Mensagem por leandrohackerx Ter Ago 23, 2011 12:19 pm

Achei bem util a source, ela tambem é muito boa para entender os arquivos executaveis (PE File).
E obrigado por usar o AlienHEX.
leandrohackerx
leandrohackerx
Administrador
Administrador

Mensagens : 19
Data de inscrição : 17/12/2010
Idade : 28
Localização : Na frente do PC

https://delphibrasil.forumeiros.com

Ir para o topo Ir para baixo

Strip Reloc v1.13 - Open Source Empty Re: Strip Reloc v1.13 - Open Source

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos