Sha256: 621aab0cdf25e7fa7b85b45533df1d77d6143873886c947b3ee8a8dd794976ad

Contents?: true

Size: 1.85 KB

Versions: 6

Compression:

Stored size: 1.85 KB

Contents

#include <stdio.h>
#include <windows.h>

#define BUFSIZE 512

int WINAPI
WinMain(HINSTANCE inst, HINSTANCE inst2, LPSTR arg, int style)
{
  LPBYTE data = NULL;
  HANDLE payload = CreateFile(arg, GENERIC_READ, FILE_SHARE_READ,
    NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
  if (payload != INVALID_HANDLE_VALUE)
  {
    DWORD rlen = 0;
    TCHAR outPath[BUFSIZE];
    DWORD len = GetFileSize(payload, NULL);
    data = (LPBYTE)LocalAlloc(LPTR, len + 1);
    SetFilePointer(payload, 0, 0, FILE_BEGIN);
    ReadFile(payload, data, len, &rlen, NULL);
    CloseHandle(payload);

    LPTSTR fname = strrchr(arg, '\\');
    if (fname == NULL)
      fname = arg;
    else
      fname += 1;

    strcpy(outPath, arg);
    LPSTR ext = strrchr(outPath, '.');
    if (ext != NULL)
      *ext = '\0';
    strcat(outPath, ".exe");

    CopyFile("shoes-stub.exe", outPath, FALSE);
    HANDLE exe = BeginUpdateResource(outPath, FALSE);
    UpdateResource(exe, RT_STRING, "SHOES_FILENAME", 
      MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), fname, strlen(fname));
    UpdateResource(exe, RT_RCDATA, "SHOES_PAYLOAD", 
      MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), data, rlen);

    payload = CreateFile("shoes-setup.exe", GENERIC_READ, FILE_SHARE_READ,
      NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (payload != INVALID_HANDLE_VALUE)
    {
      LPBYTE setup = NULL;
      DWORD setuplen = 0;
      len = GetFileSize(payload, NULL);
      setup = (LPBYTE)LocalAlloc(LPTR, len + 1);
      SetFilePointer(payload, 0, 0, FILE_BEGIN);
      ReadFile(payload, setup, len, &setuplen, NULL);
      CloseHandle(payload);
      UpdateResource(exe, RT_RCDATA, "SHOES_SETUP", 
        MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), setup, setuplen);
    }
    EndUpdateResource(exe, FALSE);
    LocalFree(data);
    LocalFree(fname);
  }
}

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
shoesgem-0.1480.0 shoes/nsis/stub-inject.c
shoesgem-0.1469.0 shoes/nsis/stub-inject.c
shoesgem-0.1430.0 shoes/nsis/stub-inject.c
shoesgem-0.1429.0 shoes/nsis/stub-inject.c
shoesgem-0.1428.0 shoes/nsis/stub-inject.c
shoesgem-0.1426.0 shoes/nsis/stub-inject.c