Карта сайтаСсылкиКонтакты

Экспорт больших констант из DLL

PDF Печать
Статьи

Сначала объявляем тип константы, а затем определяем функцию для этого типа:


library hexerdll;

type
  Tviergewinnt_exe = array[0..88598] of Byte;

const

  viergewinnt_exe: TViergewinnt_exe =
   ($4D,$5A,$00,$01,$01,$00,$00,$00,$08,$00,$10,$00,$FF,$FF,$08,$00,$00,$01,$00,$00,
    $00,$00,$00,$00,$40,$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,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00);

function getArrayofByte: Tviergewinnt_exe;
begin
  Result := viergewinnt_exe;
end;

exports
  getArrayofByte;

Вызов имеет следующую структуру: важно объявить константу локально!

var
    of the
const in our case dllexe: Tviergewinnt_exe;



unit playmain;
  // Пример вызова внедренного файла в модуле или DLL

  // Некоторый код ........

type
  Tviergewinnt_exe = array[0..88598] of Byte;

function getArrayofByte: Tviergewinnt_exe; external 'hexerdll';


procedure TForm1.btnApploadClick(Sender: TObject);
var
  bitStream: TMemoryStream;
  dllexe: Tviergewinnt_exe;
begin
  bitStream := TMemoryStream.Create;
  dllexe    := getArrayofByte;
  try
    //Без DLL Вы вызываете имя константы
    //bitStream.Writebuffer(viergewinnt_exe, sizeof(viergewinnt_exe));
    // импорт константы DLL
    bitStream.Writebuffer(dllexe, SizeOf(dllexe));
    bitStream.Position := 0;
    bitstream.LoadFromStream(bitstream);
    bitstream.SaveToFile('viergewinnt.exe');
    case WinExec(PChar('viergewinnt.exe'), SW_SHOWDEFAULT) of
      0: ShowMessage('The system is out of memory or resources.');
      ERROR_BAD_FORMAT: ShowMessage('The .EXE file is invalid (non-Win32.EXE or error in .EXE image).');
      ERROR_FILE_NOT_FOUND: ShowMessage('The specified file was not found.');
      ERROR_PATH_NOT_FOUND: ShowMessage('The specified path was not found.');
    end;
  finally
    bitStream.Free;
  end;
end;

Загрузить пример


 

Добавить комментарий


Защитный код
Обновить