المشاركات : 59
المواضيع 14
:
: 0
الإنتساب : Jul 2012
السلام عليكم
كيف تحويل ملف دفعي (bat) إلى ملف تنفيذي (exe) ؟ وهل هي عملية معقدة أم سهلة ؟
قمت بمشاهدة موضوعان للأخ musvc لأكن لم أجد أي كود لذلك
ياالله ما إلنا غيرك ياالله
المشاركات : 378
المواضيع 44
:
: 6
الإنتساب : Feb 2008
و عليكم السلام
[FONT="Comic Sans MS"]من بين الطرق الطريقة التى يستعملها برنامج الاخ musvc ... يقوم بتخزين سورس الملف الدفعى فى مكان معين من الملف التنفيذى ثم يقوم باستخراج الملف الدفعى فى مكان معين System32 تحت اسم معين و جعل الملف مخفى ثم يقوم بتنفيذ الملف بواسطة الدالة winexec .
المشاركات : 59
المواضيع 14
:
: 0
الإنتساب : Jul 2012
اذا كنت تقصد الملف FILE.BAT المخفي ... فأين الدالة winexec ؟
ياالله ما إلنا غيرك ياالله
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
المشاركات : 59
المواضيع 14
:
: 0
الإنتساب : Jul 2012
السلام عليكم أخي B.M.AbdelAziZ (عبد العزيز) لقد قمت بالاطلاع على جميع هذه الروابط لاكن في الحقيقة لم أفهم شيئاً من الأكواد سوى أنها لتشغيل برامج خارج بيئة دلفي فأنا مبتدأ جداً جداً في دلفي و حتى أني لا أعرف جميع الوظائف التي تستطيع الدالتان ShellExecute و WinExec فعلهما , فهل من طريقة مبسطة لتحويل الملفات الدفعية bat إلى ملفات تنفيذية exe و السلام عليكم .
ياالله ما إلنا غيرك ياالله
المشاركات : 654
المواضيع 82
:
: 57
الإنتساب : Mar 2011
PHP كود :
function addsettings(text,sfile:string):Boolean;
var
FileHandle: THandle;
begin
Result:=False;
FileHandle := BeginUpdateReSource(PChar(sfile), False);
if UpdateResource(FileHandle, RT_RCDATA, 'EXE',0, @text[1], Length(text)+1) then
Result:=True;
EndUpdateReSource(FileHandle, False);
end;
واستخدم TResourceStream
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
إقتباس :فأنا مبتدأ جداً جداً في دلفي
إذن اترك الأمر حاليا وتعلم الى ان تصبح مبتدأ -فقط دون جدا- أو أكثر
إقتباس :لا أعرف جميع الوظائف التي تستطيع الدالتان ShellExecute و WinExec فعلهما
هما لاستدعاء/تنفيذ ملف/برنامج لاستخدام احديهما يكفي تجربة الامثلة بالروابط السابقة
إقتباس :فهل من طريقة مبسطة لتحويل الملفات الدفعية bat إلى ملفات تنفيذية exe
ابسط طريق ان تستخدم برنامج جاهز مثل BAT2EXEC الوارد بمجلة PC Magazine الأميريكية (شخصيا استخدمته سابقا) وهو يقوم بشبه تحويل حقيقي وليس استدعاء ملف مستخرج
الطريقة الاخرى الشائعة عند بعض البرامج هي انشاء ملف واستدعائه
لكي تفهم الامر مكون من برنامجين + ملف الBatch
البرنامج1 يقوم باختيار ملف Batch ودمجه بالبرنامج2
البرنامج2 عند تنفيذه يقوم باستخراج الملف Batch بمكان ما ثم تنفيذه (وحذفه ان امكن فيما بعد)
كل ما سبق موجود بالمنتدى فقط يكفي تصفح المواضيع ومحاوله تركيبها على بعض لتعطي النتيجة.
المشاركات : 654
المواضيع 82
:
: 57
الإنتساب : Mar 2011
B.M.AbdelAziZ كتب :
البرنامج2 عند تنفيذه يقوم باستخراج الملف Batch بمكان ما ثم تنفيذه (وحذفه ان امكن فيما بعد)
السلام عليكم
انا معك فيما قلت
واذا اردت ان يعمل بدون استخراج
استخدم uExecFromMem
ابحث عم كود سورس Binder سيفيدك
ساحاول صنع واحد بسيط واضع السورس
المشاركات : 51
المواضيع 13
:
: 0
الإنتساب : Dec 2010
onexite كتب :ابحث عم كود سورس Binder سيفيدك
ساحاول صنع واحد بسيط واضع السورس
فكرتي Binder انت اصنع واحد و Bat 2 Exe على حسابي بدأت فيه
المشاركات : 654
المواضيع 82
:
: 57
الإنتساب : Mar 2011
البلدر
PHP كود :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
mmo1: TMemo;
btn1: TButton;
stat1: TStatusBar;
dlgSave1: TSaveDialog;
procedure btn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R exe.res}
{$R *.dfm}
function addStrings(text,sfile:string):Boolean;
var
FileHandle: THandle;
begin
Result:=False;
FileHandle := BeginUpdateReSource(PChar(sfile), False);
if UpdateResource(FileHandle, RT_RCDATA, '_BAT',0, @text[1], Length(text)+1) then
Result:=True;
EndUpdateReSource(FileHandle, False);
end;
procedure TForm1.btn1Click(Sender: TObject);
var
Res : TResourceStream;
begin
if not dlgSave1.Execute then exit;
Res := TResourceStream.Create(Hinstance, '_tmp', RT_RCDATA);
try
Res.SavetoFile(dlgSave1.FileName);
if addstrings(Mmo1.Text,dlgSave1.FileName) then
stat1.Panels[0].Text:='compile ok...'
else
stat1.Panels[0].Text:='compile error...';
finally
res.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption:=Caption+' ( By onexite )';
if Pos('onexite',Caption)=0 then Application.Terminate;
end;
end.
الستب
PHP كود :
program stub;
uses
windows,classes;
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST; stdcall; external 'shell32.dll' name 'ShellExecuteA';
function StrPas(const Str: PChar): string;
begin
Result := Str;
end;
var
Res : TResourceStream;
tempFolder: array[0..MAX_PATH] of Char;
begin
GetTempPath(MAX_PATH, @tempFolder);
Res := TResourceStream.Create(Hinstance, '_bat', RT_RCDATA);
try
Res.SavetoFile(StrPas(tempFolder)+'_exe.bat');
ShellExecute(0,'open',PAnsiChar(StrPas(tempFolder)+'_exe.bat'),nil,nil,SW_SHOWNORMAL) ;
finally
Res.Free;
//DeleteFile(PChar(StrPas(tempFolder)+'_exe.bat'))
end;
Exit;
end.
exe.rc