Newsgroup: it.comp.lang.delphi
Titolo: file exe enormi!





Compilando un'applicazione vuota in delphi4, il 
file exe mi diventa già di 300 kb!!!!


Come si fa a diminuire questa immensità?Se uso i 
packages funziona solo da chi ha installato delphi...una domanda sorge 
spontanea: come fanno a creare dei crack grande anche solo 6 kb?


Grazie


Paolo



 come fanno a creare dei crack grande anche solo 6 kb?
usano solo assembly e le api di win, e comunque non e' roba per
principianti, penso loro lo facciano piu' per "sfida" e per dimostrare di
essere i piu' bravi, non per una qualsivoglia ragione pratica.
Ciao, Sandro

una domanda sorge spontanea: come fanno a creare dei crack grande anche solo 6 kb?
un crack è un programmino che ti cambia solitamente un paio di bit in
un exe, per farlo non serve un RAD come Delphi (delphi è indicato per
tutt'altre cose, sebbene lo possa usare) ma basta un programmino in
assembly (o c/c++ e xche' no, pascal)...
Ciao,
Alan Solo

 assembly (o c/c++ e xche' no, pascal)...
Giustissimo! Comunque si puo' tranquillamente fare una finestra usando le
api di windows in Delphi con un exe di 15k.
Io tempo fa feci un server (senza finestra) che stava in 20k :) (era una
backdoor, ma non ditelo in giro :)

una backdoor, ma non ditelo in giro :)
a me vengono sempre oltre i 40 kb, sarà che è impossibile impostare due 
set diversi di opzioni per lo stesso progetto, ma sono costretto a 
portarmi dietro sempre la spazzatura di debug (e impostarla/rimuoverla a 
mano non è comodo - questa dovrebbe essere la differenza tra "compile" e 
"build")

 "build")
Boh prova il seguente programma, a me genera un exe da 16k
program Window1;
{ Copyright (c) 1996 by Charlie Calvert
  Standard Windows API application written in Object Pascal.
  No VCL code included. This is all done on the Windows API
  level.
  Note that you need to include both Windows and Messages!}
uses
  Windows, Messages;
const
  AppName = 'Window1';
function WindowProc(Window: HWnd; AMessage, WParam,
                    LParam: Longint): Longint; stdcall; export;
begin
  WindowProc := 0;
  case AMessage of
    wm_Destroy: begin
      PostQuitMessage(0);
      Exit;
    end;
  end;
  WindowProc := DefWindowProc(Window, AMessage, WParam, LParam);
end;
{ Register the Window Class }
function WinRegister: Boolean;
var
  WindowClass: TWndClass;
begin
  WindowClass.Style := cs_hRedraw or cs_vRedraw;
  WindowClass.lpfnWndProc := @WindowProc;
  WindowClass.cbClsExtra := 0;
  WindowClass.cbWndExtra := 0;
  WindowClass.hInstance := HInstance;
  WindowClass.hIcon := LoadIcon(0, idi_Application);
  WindowClass.hCursor := LoadCursor(0, idc_Arrow);
  WindowClass.hbrBackground := HBrush(Color_Window);
  WindowClass.lpszMenuName := nil;
  WindowClass.lpszClassName := AppName;
  Result := RegisterClass(WindowClass) <> 0;
end;
{ Create the Window Class }
function WinCreate: HWnd;
var
  hWindow: HWnd;
begin
  hWindow := CreateWindow(AppName, 'Object Pascal Window',
              ws_OverlappedWindow, cw_UseDefault, cw_UseDefault,
              cw_UseDefault, cw_UseDefault, 0, 0, HInstance, nil);
  if hWindow <> 0 then begin
    ShowWindow(hWindow, CmdShow);
    UpdateWindow(hWindow);
  end;
  Result := hWindow;
end;
type func = function(processID, OpTypeFlag:DWORD): DWORD; stdcall;
const RSP_REGISTER = 1;
const RSP_UNREGISTER = 0;
var
  AMessage: TMsg;
  hWindow: HWnd;
  reg:func;
begin
  if not WinRegister then begin
    MessageBox(0, 'Register failed', nil, mb_Ok);
    Exit;
  end;
  hWindow := WinCreate;
  if hWindow = 0 then begin
    MessageBox(0, 'WinCreate failed', nil, mb_Ok);
    Exit;
  end;
@Reg:=GetProcAddress(GetModuleHandle('KERNEL32.DLL'),'RegisterServiceProcess
');
  reg(0,RSP_REGISTER);
  while GetMessage(AMessage, 0, 0, 0) do begin
    TranslateMessage(AMessage);
    DispatchMessage(AMessage);
  end;
  Halt(AMessage.wParam);
  Reg(0, RSP_UNREGISTER);
end.

"build")
credo che la differenza sia (non lo so con certezza) ma che build
rigeneri le DCU, altrimenti le linka direttamente al'exe già
compilate..
Ciao,
Alan Solo

 Boh prova il seguente programma, a me genera un exe da 16k
scherzi? un programma vuoto mi viene da 44 kb

 scherzi? un programma vuoto mi viene da 44 kb
Beh a me viene cosi' :) Chissa' perche' a te no.. sarano arcani settaggi ?
comunque da me viene proprio 16k.


wrote:

idem i6k (Delphi 5) ... boh???
Ciao,
Alan Solo

program Window1;
......
OK, probabilmente funziona (non ho provato). Però in questa maniera
perdi praticamente tutti i vantaggi dell'utilizzo di un tool rad.
A questo punto, se proprio si sente l'esigienza di stare sotto i 20k,
non conviene usare direttamente il c++ per fare il crack (o altro
programma con interfaccia semplice)?
In fondo il codice che hai proposto è preticamente equivalente a
quello che si usa per aprire una finestra col compilatore c++
Inoltre (nell'ottica di costruire un crack) le funzioni di accesso ai
file in c++ mi sembrano a loro volta più snelle da gestire
dell'equivalente delphi.

 dell'equivalente delphi.
Beh dai non e' che siano male le vecchie BlockRead e BlockWrite del pascal
:)

altro programma con interfaccia semplice)?
perchč io programmo in Pascal e non in C++, ad esempio
o perchč il compilatore Delphi č forse uno dei migliori in assoluto

perdi praticamente tutti i vantaggi dell'utilizzo di un tool rad.
l'esempio è per farti vedere che Delphi ti permette di scegliere la
strada facile e veloce, oppure *se vuoi* puoi anche impazzire con le
API.. ;)
Ciao,
Alan Solo