PDA

View Full Version : افزایش و یا کاهش حجم برنامه توسط خود برنامه!



1485159
شنبه 05 دی 1388, 23:57 عصر
چطوری میشه یه فایل exe حجم خودش رو افزایش بده؟
مثلا کدی بنویسیم که وقتی برنامه اجرا شد حجم خودش رو 10 kb افزایش بده!

Nima NT
یک شنبه 06 دی 1388, 00:02 صبح
ميتونم بپرسم براي چه هدفي ميخواهيد اين كار رو بكنيد ؟

1485159
یک شنبه 06 دی 1388, 00:14 صبح
تاپیک زیر رو مطالعه کنید.
البته ربطی به اون نداره، ولی میخوام یه جور هایی .....
http://barnamenevis.org/forum/showthread.php?t=196861

Nima NT
یک شنبه 06 دی 1388, 01:39 صبح
والا من نفهميدم منظورتون چي هست ؟ يعني ميخواهيد ويروس Polymorphic بنويسيد ؟
خوب براي اين كار لزومي نداره كه حجم فايل رو افزايش بديد ؛ نميخوام مطالب مخرب بيان كنم ولي محض اطلاعات عمومي ميگم ، يكي از روشهاي ساده تر پياده سازي اين نوع بد افزارها وجود 2 سورس كد هستش كه ويروس بتونه بين اونها سوئيچ كنه ، اينطوري تقريبا" جلوي برخي از آنتي ها گرفته ميشه.
البته در مورد كدهاي پلي مورف شده برخي از آنتي ها قبل ها دچار مشكل ميشدن ولي امروزه اكثر‌ آنتي ويروسها اگر نتونن فايلي رو درست و حسابي آناليز بكنن اون رو به عنوان RiskWare تشخيص ميدن ، مشكلاتي كه براي پروتكتورهايي نظير Themida هم پيش ميومد از همين بابت بود.

1485159
یک شنبه 06 دی 1388, 10:03 صبح
والا من نفهميدم منظورتون چي هست ؟ يعني ميخواهيد ويروس Polymorphic بنويسيد ؟
خوب براي اين كار لزومي نداره كه حجم فايل رو افزايش بديد ؛ نميخوام مطالب مخرب بيان كنم ولي محض اطلاعات عمومي ميگم ، يكي از روشهاي ساده تر پياده سازي اين نوع بد افزارها وجود 2 سورس كد هستش كه ويروس بتونه بين اونها سوئيچ كنه ، اينطوري تقريبا" جلوي برخي از آنتي ها گرفته ميشه.
البته در مورد كدهاي پلي مورف شده برخي از آنتي ها قبل ها دچار مشكل ميشدن ولي امروزه اكثر‌ آنتي ويروسها اگر نتونن فايلي رو درست و حسابي آناليز بكنن اون رو به عنوان RiskWare تشخيص ميدن ، مشكلاتي كه براي پروتكتورهايي نظير Themida هم پيش ميومد از همين بابت بود.

حرف شما درست ولی اگه ممکنه در مورد افزایش حجم هم توضیح بدین..

1485159
یک شنبه 06 دی 1388, 15:23 عصر
کسی نمیخواد جواب بده؟

Nima NT
یک شنبه 06 دی 1388, 15:29 عصر
با استفاده از كد زير ميتونيد يه سري اطلاعات رو به صورت Overlay به فايلتون اضافه كنيد ، حالا چطوري فايل به خودش در حالي كه اجرا هستش اضافه كنه رو نميدونم چطوري ميشه انجام داد.

function AttachToFile(const AFileName: String;
MemoryStream: TMemoryStream): Boolean;
var
aStream: TFileStream;
iSize: Integer;
begin
Result := False;
if not FileExists(AFileName) then
Exit;
try
aStream := TFileStream.Create(AFileName,
fmOpenWrite or fmShareDenyWrite);
MemoryStream.Seek(0, soFromBeginning);
// seek to end of File
aStream.Seek(0, soFromEnd);
// copy data from MemoryStream
aStream.CopyFrom(MemoryStream, 0);
// save Stream-Size
iSize := MemoryStream.Size + SizeOf(Integer);
aStream.Write(iSize, SizeOf(iSize));
finally
aStream.Free;
end;
Result := True;
end;

1485159
یک شنبه 06 دی 1388, 15:30 عصر
خوب براي اين كار لزومي نداره كه حجم فايل رو افزايش بديد ؛ نميخوام مطالب مخرب بيان كنم ولي محض اطلاعات عمومي ميگم ، يكي از روشهاي ساده تر پياده سازي اين نوع بد افزارها وجود 2 سورس كد هستش كه ويروس بتونه بين اونها سوئيچ كنه ، اينطوري تقريبا" جلوي برخي از آنتي ها گرفته ميشه.


در مورد این هم اگه توضیح بدین ممنون میشم.

Nima NT
یک شنبه 06 دی 1388, 15:35 عصر
ميتونيد از TMS Pascal Script استفاده كنيد ، اين كامپوننت در ورودي سورس كد پاسكال ميگيره و براتون اجرا ميكنه ( به صورت Runtime ) ؛ شما ميتونيد براي نحوه عملياتي كردن رفتار برنامتون 2 نوع سورس بنويسيد و به صورت تصادفي بين اونها سوئيچ كنيد ( حالا من ميگم 2 سورس ، ميتونيد بيشتر بنويسيد ) اينطوري برخي از آناليزورها در شناسايي رفتار ويروس دچار مشكل ميشن.
البته اين راه حل رو من فقط در مقابل BitDefender تست كردم و جواب گرفتم و در مورد بقيه نميدونم.
البته بگم كه روشي كه من گفتم يه روش من در آوردي بود و به هيچ عنوان اصولي نيست ، بهتره در سايت هاي امنيتي لاتين دنبال اين مطلب بگرديد.

1485159
یک شنبه 06 دی 1388, 15:55 عصر
در مورد موارد زیر توضیح بدین ممنون میشم.

function AttachToFile(const AFileName: String;
MemoryStream: TMemoryStream): Boolean;
var
aStream: TFileStream;
iSize: Integer;
begin
Result := False;
if not FileExists(AFileName) then
Exit;
try
aStream := TFileStream.Create(AFileName,
fmOpenWrite or fmShareDenyWrite);
MemoryStream.Seek(0, soFromBeginning);
// seek to end of File
aStream.Seek(0, soFromEnd);
// copy data from MemoryStream
aStream.CopyFrom(MemoryStream, 0);
// save Stream-Size
iSize := MemoryStream.Size + SizeOf(Integer);
aStream.Write(iSize, SizeOf(iSize));
finally
aStream.Free;
end;
Result := True;
end;

Nima NT
یک شنبه 06 دی 1388, 16:26 عصر
براي مورد اول به شكل زير عمل كنيد.

var
MS:TMemoryStream;
begin
MS := TMemoryStream.Create;اينطوري يك Stream توليد ميكنيد كه ميتونيد با استفاده از خصوصيات اون اطلاعاتي رو بهش ست كنيد.
در مورد سوال دوم ( :لبخند: ) خودم هم دقيق نميدونم.

MFiRE
یک شنبه 06 دی 1388, 18:46 عصر
در مورده ،مورده دوم :گیج:

// copy data from MemoryStream
aStream.CopyFrom(MemoryStream, 0);

Nima NT
یک شنبه 06 دی 1388, 18:50 عصر
در مورده ،مورده دوم :گیج:

// copy data from MemoryStream
aStream.CopyFrom(MemoryStream, 0);
والا اين دوستمون به ريز مطلب كار داشتن و بنده گفتم نميدونم وگرنه همون طوري كه شما نشون داديد Comment مربوطه همه چيز رو توضيح داده.:لبخند: