티스토리 뷰

Programming/Delphi

Delphi - Byte 관련 Tip

파란크리스마스 2013. 3. 5. 17:05
728x90

Delphi - Byte 관련 Tip

function BytesToHex(aSource: TBytes): string;
begin
  SetLength(Result, Length(aSource) * 2);
  if Length(aSource) > 0 then
    BinToHex(aSource[0], PChar(Result), Length(aSource));
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  SetupLdrExeHeaderOffset = $01d204;
  A: Array[0..3] of Byte = ($EF, $BE, $AD, $DE);
var
  HInstance: THandle;
  filename: String;
  FileStream: TFileStream;
  ArrayBytesHeader, ArrayBytesHeaderStr : TBytes;
  HeaderStr : String;
begin
  // AbZipper1.FileName := 'C:\AAPlus4PC_server\ALZip861.exe';
  filename := 'C:\AAPlus4PC_server\ALZip861.exe';

  FileStream := TFileStream.Create(filename, fmOpenRead);
  try

    FileStream.Seek( SetupLdrExeHeaderOffset , soBeginning);

    SetLength( ArrayBytesHeader, 16 );
    FileStream.ReadBuffer(ArrayBytesHeader, 16);

    if (CompareMem(ArrayBytesHeader, @A, 4)) then begin
      SetLength(ArrayBytesHeaderStr, 12);
      CopyMemory( ArrayBytesHeaderStr, @ArrayBytesHeader[4], 12  );

      HeaderStr := TEncoding.ASCII.GetString(ArrayBytesHeaderStr);
      //Memo1.Lines.Add( BytesToHex(ArrayBytesHeader) );
      //Memo1.Lines.Add( BytesToHex(ArrayBytesHeaderStr) + '/' + HeaderStr );

      if HeaderStr='NullsoftInst' then begin
        Memo1.Lines.Add( 'ooooo' );
      end else begin
        Memo1.Lines.Add( 'xxxxx - 2' );
      end;

    end else begin
      Memo1.Lines.Add( 'xxxxx - 1' );
    end;
  finally
    SetLength(ArrayBytesHeader, 0);
    SetLength(ArrayBytesHeaderStr, 0);
    FileStream.Free;
  end;
end;
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함