View Full Version : سورس کد ایجاد فایل exe در برنامه ی خود در دلفی
majidbestgame
پنج شنبه 26 فروردین 1389, 04:06 صبح
با سلام خدمت دوستانی که به این تاپیک سر زدن.
منظور از ایجاد این تاپیک عرضه ی راهایی برای ایجاد فایل با پسوند .exe است.
خیلی از شما دوستان دیدید که بعضی از برنامه های محیطی ساده دارند که کاربر با کار کردن در آن محیط و انجام تنظیماتی ساده و در نهایت با کلیک بر روی یک دگمه یه برنامه ی اجرایی مستقل ایجاد کنند. مثل autorun maker و یا ویروس ساز ها و یا خیلی از برنامه های دیگه که میشه باهاشون فایل مستقل ساخت.
شدیدا نیازمند راه یا کدی برای اینکارم.از همهی دوستان و برنامه نویسان عزیز میخوام اگه راه و روشی برای این کار سراغ دارن بگن ممنون میشیم. منتظرم.:لبخندساده:
BORHAN TEC
پنج شنبه 26 فروردین 1389, 13:41 عصر
اين برنامه ها معمولاً در انتهاي يك فايل موجود يك بافر ايجاد ميكنند كه در آن بافر ميتوانند فايل يا فايلهايي را اضافه كنند. به عنوان مثال برخي از برنامه هايي كه برنامه هاي نصبي ايجاد مي كنند ابتدا يك فايل MSI مي سازند و آن را به يك فايل ديگر . مانند همان كه گفتم اضافه مي كنند. كه در واغع با اين كار فايل MSI را درون يك فايل exe قرار مي دهند. البته راههاي ديگري هم براي اين كار وجود دارد به عنوان مثال قرار دادن يك كامپايلر كم حجم در كنار برنامه كه با فراخواني آن با پارامترهاي مختلف مي توانيد به هدفتان برسيد. مثلا بورلند C++ يك كامپالر مبتني بر متن دارد كه فكر مي كنم حجم آن در حدود 6 يا 7 مگابايت باشد.
اتفاقاً چند وفت پيش يكي از دوستانم با vb6 يك برنامه ساخته بود كه از تكنيك بافر استفاده مي كرد و مي توانست چند عكس مختلف را به برنامه اجرايي اضافه كند. نكته جالبي كه در آن برنامه ديدم آن بود كه مي توانستيم پارامتر هايي هم در آن تغيير بدهيم مثلاً در هنگام نمايش تصوير عكس را با چه سايزي نشان بدهد ويا مثلاً رنگ پشت زمينه عكس چه رنگي باشد و غيره...
***********************************
من نمي دانم كه شما چقدر با پارامتر هاي مختلف كامپايلر دلفي آشنايي داريد.
به مثال زير هم توجه كنيد.
اگر در خط فرمان از دستور زير استفاده كنيد كامپايلر دلفي فايل مذكور را كامپايل كرده و بنا به نوع پروژه يك فايل exe و يا dll و يا ... را مي سازد:
DCC32.exe c:\myproj.dpr
البته اين همان كاري است كه شما ميتوانيد با آن كامپايلري كه كنار برنامه خود قرار مي دهيد انجام دهيد. اين دستور ممكن است با توجه به كامپايلري كه در كنار برنامه خود قرار مي دهيد تفاوت داشته باشد. اين تنها يك مثال بود كه با كامپايلر دلفي زده شد.
Felony
پنج شنبه 26 فروردین 1389, 13:57 عصر
در دلفی میتونید از کامپوننت هایی مثل PaxCompiler استفاده کنید یا از کامپایلر های رایگانی مثل Freepascal ، در مورد اضافه کردن به یک فایل اجرایی موجود هم که در پست قبلی گفته شد من چند وقت پیش یک برنامه ساخت Setup به صورت متن باز قرار دادم که کامل نبود ولی اگر سورس اون رو مطالعه کنید روش انجام این کار رو میفهمید .
majidbestgame
جمعه 27 فروردین 1389, 01:18 صبح
ممنون از جواب ها تون. ولی بحث اینه که یک برنامه بسازیم با امکاناتی گسترده که قابل تنظیم باشه توسط کاربر و سپس فایل تنظیم شده را برای کار بر ایجاد کنه.
http://majidbestgame.persiangig.com/delphi 7/accr.JPG
کامپیل کردن توسط این دستور درسته... ولی اینکه منظور من اینه که مثلا بتونیم توسط رسورس داخل برنامه فایل اجرایی درست کنیم.(مثلا اکه کاربر هر چند تا گزینه رو تیک زده باشه برنامه ی تولیدی به اون شکل ساخته بشه).خیلی از برنامه ها این امکانات رو داشتن مثلا cheat engine واسه ساخت ترینر هاش و ... امیدوارم دوستان بتونن کمک کنن
Felony
جمعه 27 فروردین 1389, 06:38 صبح
کامپیل کردن توسط این دستور درسته... ولی اینکه منظور من اینه که مثلا بتونیم توسط رسورس داخل برنامه فایل اجرایی درست کنیم.(مثلا اکه کاربر هر چند تا گزینه رو تیک زده باشه برنامه ی تولیدی به اون شکل ساخته بشه).خیلی از برنامه ها این امکانات رو داشتن مثلا cheat engine واسه ساخت ترینر هاش و ... امیدوارم دوستان بتونن کمک کنن
شما مثل اینکه پست من رو دقیق مطالعه نکردید !
من که گفتم چند وقت پیش یک نرم افزار ساخت Setup تو همین سایت به صورت متن باز منتشر کردم ،تمام این کارهایی که گفتید تو اون نرم افزار انجام دادم ...
lord_viper
جمعه 27 فروردین 1389, 10:10 صبح
ممنون از جواب ها تون. ولی بحث اینه که یک برنامه بسازیم با امکاناتی گسترده که قابل تنظیم باشه توسط کاربر و سپس فایل تنظیم شده را برای کار بر ایجاد کنه.
http://majidbestgame.persiangig.com/delphi 7/accr.JPG
کامپیل کردن توسط این دستور درسته... ولی اینکه منظور من اینه که مثلا بتونیم توسط رسورس داخل برنامه فایل اجرایی درست کنیم.(مثلا اکه کاربر هر چند تا گزینه رو تیک زده باشه برنامه ی تولیدی به اون شکل ساخته بشه).خیلی از برنامه ها این امکانات رو داشتن مثلا cheat engine واسه ساخت ترینر هاش و ... امیدوارم دوستان بتونن کمک کنن
این دسته ابزارها به هیچ عنوان فایل exe نمی سازن بلکه فایل exe اصلی به صورت Stream یا ریسورس درون فایل اصلی قرار داره که همون Editor هست بعد از انتخاب اپشن های مورد نظر و کلیک بر روی Create Exe file تنظیمات شما درون ریسورس یا قسمت خاصی از اون فایل اصلی نوشته شده و در مکان مورد نظر شما ذخیره میشه
با اجرای فایل اصلی برنامه به قسمتی که تنظیمات در اونجا ثبت شده میره و اون اعمال رو انجام میده اکثر binder ها - تروجانها - ویروس میکرها از همین روش استفاده میکنند و هیچ کدوم فایلی با پسوند exe به وجود نمیارن
Mask
جمعه 27 فروردین 1389, 13:43 عصر
با اجرای فایل اصلی برنامه به قسمتی که تنظیمات در اونجا ثبت شده میره و اون اعمال رو انجام میده اکثر binder ها - تروجانها - ویروس میکرها از همین روش استفاده میکنند و هیچ کدوم فایلی با پسوند exe به وجود نمیارن
ممنون از دوستان.
با این توضیحی که دادین من این دستگیرم شد که تمام آپشنهایی که دوستمون در برنامه دارن به صورت فایل exe هست و با گزاشتن تیک ،اون برنامه اظافه میشه به فایل اصلی و وقتی فایل exe اصلی رو اجرا می کنیم ، میاد و این فایلهای exe که هر کدوم یه کاری انجام میدند رو اکستراکت میکنه و دونه دونه اجراشون میکنه!!
فکر نمیکنم منطقی و فنی باشه؟
lord_viper
جمعه 27 فروردین 1389, 15:24 عصر
ببینین یک مثال میزنم
معمولا این دست برنامه ها از 2 بخش تشکیل میشن editor و stub یا Server کار editor فقط قرار دادن اطلاعات لازم دون stub هست مثلا در یک تروجان 4 اپشن دارین
disable window firewall
disable regedit
disable taskmanager
disable msconfig
و شما گزینه اول و سوم رو تیک میزنین وقتی شما روی دکمه Create EXE file کلیک میکنین Editor میاد و در مکانی از فایل Stub یا Server (معمولا انتهای فایل)اطلاعات رو به این صورت مینویسه 1010
برای Server این طور تعریف شده موقع اجرا 4 بایت اخر خودشو بخونه مقدار 1 به عنوان اجرا و مقدار 0 به معنی عدم اجرای اون اپشن خواهد بود
وقتی سرور 1010 رو میخونه میفهمه که باید
disable window firewall
disable taskmanager
رو انجام بده
و نیازی به فایلهای exe مختلف برای Extract و اجرا نیست
اگه سورس چند نمونه Binder و keyloger رو ببینین بهتر متوجه میشین
این یه نمونه ساده Editor هست که متن داخل Editnox رو به انتهای فایل سرور اضافه میکنه
procedure TForm1.Button1Click(Sender: TObject);
var
s,d:string[54];
a:tfilestream;
begin
d:=extractfilepath(application.ExeName)+'server.ex e';
if d=''then
showmessage('sever.exe not found')
else
begin
a:=tfilestream.Create(d,fmOpenWrite);
try
s:=edit1.Text;
a.Seek(-55,soFromEnd);
a.Write(s,54);
finally
a.Free;
end;
end;
end;
این هم فایل سرور هست که اطلاعات رو از انتهای خودش میخونه و داخل یک Editbox نشون میده
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
a:tfilestream;
s:string[54];
begin
a:=tfilestream.Create(application.ExeName,fmOpenRe ad or fmShareDenyWrite);
try
a.Seek(-55,soFromEnd);
a.Read(s,54);
edit1.Text:=s;
finally
a.Free;
end;
end;
طول متن 54 بایت در نظر گرفته شده شما میتونین کم و زیادش کنین
Delphi Coder
جمعه 27 فروردین 1389, 17:00 عصر
ممنون از جواب ها تون. ولی بحث اینه که یک برنامه بسازیم با امکاناتی گسترده که قابل تنظیم باشه توسط کاربر و سپس فایل تنظیم شده را برای کار بر ایجاد کنه.
http://majidbestgame.persiangig.com/delphi%207/accr.JPG
کامپیل کردن توسط این دستور درسته... ولی اینکه منظور من اینه که مثلا بتونیم توسط رسورس داخل برنامه فایل اجرایی درست کنیم.(مثلا اکه کاربر هر چند تا گزینه رو تیک زده باشه برنامه ی تولیدی به اون شکل ساخته بشه).خیلی از برنامه ها این امکانات رو داشتن مثلا cheat engine واسه ساخت ترینر هاش و ... امیدوارم دوستان بتونن کمک کنن
شما باید با یه Resource Editor یه فایل Res بسازید و تمامی فایلهای EXE رو به شکل باینری تو اون save کنید هر کدوم با یه اسم بعد داخل Main Unit یه همچین چیزی بنویسید {$R *.res} این دستور باعث میشه فایل resource شما به resource برنامه اضافه بشه بعد خیلی راحت میتونید با استفاده از TResourceStream به شکل زیر فایل اجراییشو بسازید:
procedure TMainForm.ExtractFileAs(FileName: string);
var
Stream: TResourceStream;
begin
Stream := TResourceStream.Create(HInstance,'xxxx','yyyy');
Stream.SaveToFile(FileName);
Stream.Free;
end;جای xxx و yyy اسم و نوع داده که تو فایل Res تعیین کردید میشینن.
majidbestgame
شنبه 28 فروردین 1389, 02:41 صبح
از همه ی دوستان بابت راهنمایی هاشون ممنون. استفاده کردیم............
کدام یک از دوستان میتونه طریقه inject کردن یک سورس کد خاص به هر برنامه ای رو به ما نشون بده..
چیزی شبیه... بعضی از ویروس ها که به فایل های اجرایی به اصطلاح میچسبن....
:تشویق:
Felony
شنبه 28 فروردین 1389, 04:56 صبح
از همه ی دوستان بابت راهنمایی هاشون ممنون. استفاده کردیم............
کدام یک از دوستان میتونه طریقه inject کردن یک سورس کد خاص به هر برنامه ای رو به ما نشون بده..
چیزی شبیه... بعضی از ویروس ها که به فایل های اجرایی به اصطلاح میچسبن....
:تشویق:
اینجا رو ببین :
http://www.elitepvpers.de/forum/pw-hacks-bots-cheats-exploits/239239-direct-injection-codes-delphi-c-autoit.html
lord_viper
یک شنبه 29 فروردین 1389, 00:11 صبح
جالبترین اموزش فارسی که در مورد اینجکشن دیدم این مقاله از xexample خدابیامرزه که تو 13 صفحه dll injection و code injection رو با سورس توضیح داده
kamrazm
دوشنبه 18 مرداد 1389, 15:28 عصر
ببینین یک مثال میزنم
معمولا این دست برنامه ها از 2 بخش تشکیل میشن editor و stub یا Server کار editor فقط قرار دادن اطلاعات لازم دون stub هست مثلا در یک تروجان 4 اپشن دارین
disable window firewall
disable regedit
disable taskmanager
disable msconfig
و شما گزینه اول و سوم رو تیک میزنین وقتی شما روی دکمه Create EXE file کلیک میکنین Editor میاد و در مکانی از فایل Stub یا Server (معمولا انتهای فایل)اطلاعات رو به این صورت مینویسه 1010
برای Server این طور تعریف شده موقع اجرا 4 بایت اخر خودشو بخونه مقدار 1 به عنوان اجرا و مقدار 0 به معنی عدم اجرای اون اپشن خواهد بود
وقتی سرور 1010 رو میخونه میفهمه که باید
disable window firewall
disable taskmanager
رو انجام بده
و نیازی به فایلهای exe مختلف برای Extract و اجرا نیست
اگه سورس چند نمونه Binder و keyloger رو ببینین بهتر متوجه میشین
این یه نمونه ساده Editor هست که متن داخل Editnox رو به انتهای فایل سرور اضافه میکنه
procedure TForm1.Button1Click(Sender: TObject);
var
s,d:string[54];
a:tfilestream;
begin
d:=extractfilepath(application.ExeName)+'server.ex e';
if d=''then
showmessage('sever.exe not found')
else
begin
a:=tfilestream.Create(d,fmOpenWrite);
try
s:=edit1.Text;
a.Seek(-55,soFromEnd);
a.Write(s,54);
finally
a.Free;
end;
end;
end;
این هم فایل سرور هست که اطلاعات رو از انتهای خودش میخونه و داخل یک Editbox نشون میده
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
a:tfilestream;
s:string[54];
begin
a:=tfilestream.Create(application.ExeName,fmOpenRe ad or fmShareDenyWrite);
try
a.Seek(-55,soFromEnd);
a.Read(s,54);
edit1.Text:=s;
finally
a.Free;
end;
end;
طول متن 54 بایت در نظر گرفته شده شما میتونین کم و زیادش کنین
با سلام
من هر دستوري استفاده مي كنم نميتونم از داخل فايل اجرايي (در حل اجرا) انو (براي خواندن/نوشتن) باز كنم. پيغام "File is being used by another process" ميده.
لصفا راهنمايي كنيد
majidbestgame
پنج شنبه 11 شهریور 1389, 00:28 صبح
با سلام
من هر دستوري استفاده مي كنم نميتونم از داخل فايل اجرايي (در حل اجرا) انو (براي خواندن/نوشتن) باز كنم. پيغام "File is being used by another process" ميده.
لصفا راهنمايي كنيد
این کد ها رو باید یکی در داخل برنامه تزریق کننده و یکی دیگشو داخل برنامه ی مقصد نوشت به صورتی که برنامه ی تزریق کننده (در این مثال) 54 بایت به برنامه ی مقصد تزریق میکند سپس باید یک کد تو Form Create برنامه ی مقصد بنویسی تا بتونه از آخر سورسش 54 بایت رو بخونه و بعدش با اون اطلاعاتی که تو برنامه ی مقصد هست کاری رو که میخواید رو انجام بدین
K.Mohammadreza
پنج شنبه 11 شهریور 1389, 15:03 عصر
با سلام
دوستمون برنامه اي ميخواستن که فايل اجرايي بسازه يعني يک کامپايلر که سورس پيوست فکر کنم بهترين چيز ممکن ميتونه باشه اني پروژه طراحي کامپايلر زمان دانشگاه بود که البته همشو خودم ننوشتم:لبخندساده:
اگر به هر دليلي فايل اجرايي ساخته شده اجرا نشد اونو توي دسک تاپ کپي کنيد تا اجرا بشه(اينم يک باگ)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.