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.
Buscar
 
 

Resultados por:
 


Rechercher Busca avançada

Conectar-se

Esqueci minha senha

Parceiros

Strip Reloc v1.13 - Open Source

Ir em baixo

Strip Reloc v1.13 - Open Source

Mensagem por Ninja8086 em 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.
avatar
Ninja8086
Membro
Membro

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Strip Reloc v1.13 - Open Source

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

Código do AlienHEX: (salve como RAR)

Código:

526172211A0700CF907300000D000000000000006A5B7420803500550C0000FD310000024BBCA3AAA0094C321D3515002000000070726F6A656374537472697052656C6F632E647072A7187004273CFC05616A5C31BEC862C06B46688D190CD7EBA08A17F41B14CEA472C9520850886CA263CA64096FDB0B9F5FF6EE09D8D25A631C507CD67506E04A25B0D1559F45F09068298514409F0AB6B5FAF4FEF94D835656050D92AD871E8217BD1A0DD47C954C25336A906D18DDA5F21508924F0BE2591251039D6FAB2C2907C560060D0517039FEE5FDF01CB5981DED50CDAB1B276184E5A91F3220F0BCB00AA65CD7B977CB90ED82EB51E467FB74C57A0FA8D038CE8558592832453C20BD769108D56A391F37005ACCF634709918DD60A3DFAFFF2D0F7DCAFB9726231DE2BF7F4453ED593F17C67FDA8BB7D09B2DFB2EE985FFDBDA9FA135F44A14ADCCE9454C8FB01CD6692F08FB03635340622C3660D0A44EDCD06EF9BA48C7510D4FC3BC65DF71B963EF92FCE70799700F1E89CE6EEBF403EB3B05E6EFA43B923D78A0E3DAC7CA53DD7EC8B533D4C5EC52E69B1CBC3DB67F38E6EE277FAC47B1CF809A19F339A82E5508CE66C3D2604F19FA8293D4605D84078EB6FA433F198CBBF40A84B92CB1A48048B7DD04451988BC9D728FB204B433E064C67B12089201417604739BAC06E8C4506958A89ABD7D3730744AB9D8BBF6B4B45454E719A1366BE673572D41096C3F6A9D848DCD614952823C4B27206B8067FA9CADCB49C297253D36ACDE356AAB915D8A0BBBB59420C9068A4623E599F83B4DDF6285EE5ED2D1D2C3115E0426E5605D53B0DA1BA8D7F70DE3DE25C5C9EDEAB224B12986C9999779E9C82069D8778D5ECA0DCE46530D48F11E44EE3B66985181B3131C08AD7D2335976849051A2098DB0454654FA07E84AB32A10CC00CD10DA5B8F1BABA96894844948187C67E2BCA3D8F0CB9319A70983D94B72FE6072708F600307B2CAAA1136C7B764853A85D225A4CC47CE22AAF146B64503935A6C4E6D0FD4864082A5F61F0764D9ACA5992E2835A387EB68A360F6F724F5F12A0F282872108E0DF8E7EFA8591888989649529762CE67EB64C32C050E284A1B8688C24F8E32B45AC5078C7F44AC2B668C55D72137CE709A67558FFF1BCD7C9FAB73A191BB89A00D70223D64EA97CFF8C69128ECEEBCDF4AF7F9706274F27F43F1B05C9FF06381F32460FE049B47F51E325375504359C720D61339534AA48A13DD37CDED1D90777A7142F0B524B3FC9AD26AC7959466AAE97F642D9B867959B1D996765E9D592495E719DACEF2C900E4FE875DFD2F07D1CCB5B9F30CDD1FF6AF2EA0C56404E4C135F8B7C73779EECAB773D28467753AA4E25DEF921525A3F71DE64E84AB493B8EA5A4AFEFC35C824FCAC53D91340B582E5AE8179ACD6E5C1B86F0C16678A623A373B234F8D7EB71FF310720A747D727DE1E32EE504F5DC98A084486F8CA8F2341E36E3D51CB9DEB0F3A76FBE07DBC298F8B9F39D6D3D30589ACED1427AF2C1A74C7A17CC5B2A9AF7DE88545422EA3C4292D444EF4674BD0588C972E2087A4D5D12D0C4FD901E00CEEA5615065DF6A288A409A943D28F8436992C3A6FDB7419B9EB291DED0B070D11999538FFBEE55B9D65A6B5373C21027D92B26571CF7264EE06E91CF88D27A470D2B74B3AFD5E552BD102EA06F5FB6A174711D60B587C6FEDCCDA8C1161372FB6E97342C127F5E19312CB0031B8F457D268E3758C4CC0E8B7797FD44DAAECBAD65635C25648E3EAE4A34A95FFEE46C3DA945943D8DAC09413D86928D045CEFCADAFA2DFF6A3F39AF519345D41B36E7DD5FE2FF87941FA3FC8D22F81C8095EB1BBC9A1F31C9FE6F7B245C4F558D4DFF1B41AE4D2B79D07C11F9FAB5DB44C8C4291561A6DE48F9A1D2589DDB6C249B423D4CD9302C3CBB39E0A301755E958FFBA927DE53949458FA0C7B86AD3D2062FF02B99CCA44B8DA6F84813E8968D407B4CF84F88D34D39A31E7397DDF3E6ED399B6D999CD380A194C7097372ED825C6620FEAC6339ECD92D87502E33AC6F7A05349E828A70A7ACA7AFB2FB1FE4685FE55DF7397F12387FF191E5072838ADA7565DA54AFAE6AA2EBFECED51B7E83A88CA0F5B4D072FAF827289C4E7AF7017704CCB8D333B35CDC5690FDE9D75CC2043D8E4077A0EDA080223C37F6AF4C29839B2614B8EC18F891DF4CE591F1B872B22B849349F476144F7226E1DC7E7EB8698F90F0840AB076E0F40D9A9034A1CD1B1DDDF00EFB9D7D999EC5B2C2FD603E0F469D650438E9DD2FCE39B518A5B85F13F57DFB858700614C923CE59C9887491AA87D33A72325EF8A207E640556ECE101A5745F90EAB1A6A6F072F23832BF54FCCA6FC1C5597F3ACA8C9FE828EC7574D06A08297C90D75DC2C87F75173B784EE536C339607F9F800E1DD9D14C9FBFE21EB2B839A2A2EFADDAB3B1BDD843B5A36E67E0FE57FA693310DEFE341233640D8BD771CF35E536774192E7E4F2D4B7F1A892EDEEBCF4296ADF4EBA09FAEDDB573C673FF233234414DA83B1D36A6896E8257A76D6045907CE6A99FA48E91A711BCB3D43A429660DA403327DCFA29F8E99EA36923CF4EDC68F5C2CAA9A2A1E71C265B4A38DEE2BBB0E3828B0C8ECFB5B7291134EC5580C69BD0C7C8383405B4EBC43A2552791D39A78F18364B3E2A42A8F8097EE3E2A15037E453CC93539E568935917CCFDD89F59AE85308084453898E3240D7E969B336D6A95F1487AC67E9A2A9BA426FC654A56EAE70D2733DD663BE88451879904013F091A31B8570577C1A2FA1BF2A0B5350AA6B50A09D8808895CA1809DFA1808AEE6E34A6478E6A86114AB83B1B135476B7FED905201FB9AC9C01937BAE5085073488E610E81F6F65670DBFA4DEE9402B2D8B2EAF4B1D28A05E16C758FF976800F6E39045F04EEF9995359DEE09A7E1F567AAFAC5C7F4B73895F6E0134DC6B2D8B2F1BB363A2576928E140DCB3E51552B24520FA6E8DBC91F9D21176635178A90EC1896FD6A029E978E3B670BAB454E948A4FF3CFC7B64B4E7C0D641FA9992443604B3C7297E613395E06FC8795036A87776E8F0C26561E14655F7FCF729C30609390700E22B9FBFE600C8A1B8AB0FAE798EDFF5C119804C7B1296BBFB8837E7B9B8A7D8F4CB5CBA1E3496D09F4913BD9C6809BFF11F11F311ACE139F84688DF77DD5A8AAC0EAC1E664F6490E989C3F8CDC81A2112271713503673EC4E331DAD409154008E3A9EA5B8226C4431E9E630CAB9F5B5F0EB572CB61B62D9AD791FCF6126EF391C66BDFA1A16EAD3EB629725A8F481F8B8CF000C3F48DC2E58796A2428387D648DC1B8A003753442CE6B49E3401A389E7689291D629C4EE1068ACC6AA1F2F6008E657AEF665192089496E45F2705E7BC9048D8277AFDA507C9EDFA925810BE039005AB00A05A95FD0A9797D8D065EE73FCAADCA5B129C67BA28A48FDB44B6572CE30C730B64C074BE5E9943F2C4C038F5D7C3102CCC6111CC06DAC3F61DEA65250EF0B77A665A5B7098A66B0814383371D3D47087C52AD4C4839236540864BBA79EA457FB3BE0400FC39029442F876E0A7C4FFBB22C2366FB1F75A574C67EEE2889CC0CDC1E520AC67E297398D52DE4583B867BD74711EDA9E18B275D3F7542FFCE1164E346C8F654EBC22ECEDDB3D9A947DF9475224D92377EB13019D1E21161A01FB1DAC7CEC5151F4A97891D2637F6E662E3A0D4B44D40C6CDD212D0E2A3B8BB9B561C0E2310C921237519FAA6ED42375C7328B7E86CF96783769F9B73EB1A13C915014A99CDAEF91823850BCE278EBF84EFACB24CDAB5CC2C84D047D1349544E9566ADE997D228E939C5339739C18DE7ECF08A067A7D8E94D57C7114ACBD0E05B906459D021B3EFD22E488EB312BDF8CFE6FA60AF41714D99E6347514474F50A6BD4AA166AEA7F8D8AC769943FE3D739CC0BC1D2C8D8569ABC1172293A1E42A28E15EF288BF11411D9DB881C3FF8797DDA4635CBAB69C07ADB7BDF0F5E6EDE2FB975542C66A1699071880028F1B1FACF47C730E41D7C2133FF68044E536E9E87315A54E47472104D9FA1D5E451495A0029B2E72408490978917C856A4C44FA0ECF45CFEC1E74BDEB43E67D25BF9D5FDABCEA0CFEE858FA9ADBA08966C6BD0715E515BF451CD2C48939352155882A596E9AD7BE545566C616387EAF6DCC9D0888F0C44D6E6A60138A551A20A7348A274DFBCE22B38ED4219755AFA4A7C137988F9652164373DFD9B7482E127AA2D027C6DD442FA3ED58D3D15C04F3837CCB2884BC825517364D86F74C1C4DB305D888394E676B69D9F3B86100F272727EE07F30CF4C4D91AD06C108652EB0AC769C2F776D80B74A0DADC82603D33BA8FB899D6B14597F6FB296CEF8F5AD8AD9A684958604E83AB779982CFC5954AA1E85DD46F25E7C72320D7AF2588A82DCA1BBD8360046E6519B33D0BF2CDAFD928897A556F6174B60BFE54333FD7D03D5E53866A802D25B3D09CBAF6B6949FFD9B0C7FD3768FCDFB4D085E1517B769055431E1BC24A71E2C550000BF8867F6A9FFD4C43D7B00400700
avatar
Ninja8086
Membro
Membro

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

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Strip Reloc v1.13 - Open Source

Mensagem por leandrohackerx em 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.

_________________
Quer distribuir aqueles programinhas de 500Kb sem precisar fazer upload deles?
Use o Alien Hex,com ele você distribuie os seus arquivos em forma de texto hexadecimal.
O Alien Hex é um ótimo software que converte qualquer arquivo em hexadecimal e qualquer codigo hexadecimal em arquivo.
Link: http://delphibrasil.forumeiros.com/t7-alien-hex-distribua-os-seus-arquivos-em-hexadecimal-sem-problemas#34
avatar
leandrohackerx
Administrador
Administrador

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

Ver perfil do usuário http://delphibrasil.forumeiros.com

Voltar ao Topo Ir em baixo

Re: Strip Reloc v1.13 - Open Source

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum