PDA

View Full Version : حرفه ای: گرفتن اطلاعات از کاربر و چگونگی ایجاد فایل exe مربوطه



Direlap
پنج شنبه 14 دی 1391, 17:12 عصر
با سلام

بعضی از برنامه هارو دیدید که اطلاعاتی رو از کاربر میگیرن و فایل exe مرتبط با اون رو میسازن. مثلا ایجاد برنامه پورتابل از یکی از قسمت های برنامه. یا ایجاد فایل سرور تروجان با استفاده از اطلاعات درج شده کاربر. یا تولید کننده برنامه ارسال و دریافت میل.

سوالم اینه که چطوری با سی شارپ اینگونه فایل هارو ایجاد کنیم. من خودم میتونم یه پوشه فایل متنی عکس و یا بعضی از موارد رو اونطوری که میخوام ایجاد کنم ولی نمیتونم به دلخواه exe ایجاد کنم.

با تشکر

danialafshari
پنج شنبه 14 دی 1391, 20:19 عصر
سلام
فکر می کنم این بحث ربط به کامپایلر ها داشته باشد آخه بعد از تغییرات باید از درون برنامه یک فایل exe کامپایل شود
بحث جالبیه ! چیز بدرد بخوری تو وب پیدا نکردم و وقتم یکم کمه
دوستان اگر کسی بلده بگه تا استفاده کنیم
موفق باشید

Direlap
جمعه 15 دی 1391, 13:43 عصر
کسی میتونه یه سرنخی بده برم روش مطالعه کنم.

اطلاعات کاملی هم اگه بده که عالی میشه.

plus
جمعه 15 دی 1391, 14:02 عصر
در حالت ساده، بعضی از این برنامه ها فایل کامپایل شده رو همراه خودشون دارن و وقتی قراره بر اساس گرفتن اطلاعات از کاربر (معمولا این اطلاعات یک سری ثابت در برنامه اولیه هستن، مثل آدرس ایمیل) یک فایل خروجی تولید کنند، همون فایلی که دارن رو به صورت باینری اصلاح میکنن (ورودی کاربر رو در محل خاصی از فایل جایگزین میکنن).یه چیزی شبیه کار برنامه های Hex Editor.مثلا فایل اولیه با آدرس ایمیل xxxxxxxxxxxxxx@xxxxxxxxxxxx.xxxxxx کامپایل شده، بعد اون نرم افزار تولید کننده، میاد توی این فایل و این آدرس ایمیل رو با ایمیلی که از کاربر گرفته جایگزین میکنه.اینطوری نیازی به کامپایل کردن دوباره نیست البته محدودیت این روش زیاد هست و میشه گفت حداکثر امکانی که به شما میده اینه که فقط میتونی در برنامه اولیه یک سری ثابت رو دستکاری کنی.

Direlap
جمعه 15 دی 1391, 14:20 عصر
بله این روش رو توی برنامه هایی که میان و سرور کی لاگر رو میسازن دیدم. مثلا یه فایل رو که همراهشه میگن باز نکن و اونو تغییر میدن و در نهایت میگن که اونو به قربانی بفرست.

ولی طبق فرمایشات شما دیگه توی برنامه های جدید از این نوع روش استفاده نمیشه و موقع generate کردن یه فایل اصلی ایجاد میشه.

حالا چند تا سوال:

1) این روشی که شما گفتین آموزشی چیزی داره ؟ آشنایی باهاش فکر نکنم بد باشه.

2) برای ایجاد فایل exe به چه اطلاعاتی نیاز هست؟

به نظرم بحث خوبی میتونه بشه اگه ادامه پیدا کنه.

plus
جمعه 15 دی 1391, 16:07 عصر
واسه اون روش، آموزش خاصی فکر نکنم نیاز باشه، کافیه با یک Hex Editor محل اون ثابت رو توی فایل پیدا کنید، و با استفاده از کلاس های IO توی اون محل بنویسید.
برای ایجاد فایل exe به صورت پایه، باید اولا ساختارش رو یاد بگیرید.تا بفهمین چطوری کد و دیتا رو درونش قرار بدین. بعد از اون هم باید هر کدی دارین به زبان اسمبلی /زبان ماشین در بیارین. این راه، راه طولانی هست. http://en.wikipedia.org/wiki/Portable_Executable
راه دیگه هم استفاده از کامپایلر هایی هست که این مسیر رو طی کردن.به این صورت که کد رو بدین و برنامه رو تحویل بگیرین.
البته ممکنه دات نت امکانات خوبی در این مورد داشته باشه ولی من اطلاعاتی در موردش ندارم.

Direlap
یک شنبه 17 دی 1391, 14:29 عصر
اگه اینطوری باشه که کدو بدی به یه dll و اونم واست کامپایل کنه که خیلی عالی میشه.

plus
یک شنبه 17 دی 1391, 15:36 عصر
خوب کار کامپایلر همینه...ولی خوب باید همه فایل ها و تنظیمات مورد نیازش براش فراهم بشه...

Direlap
یک شنبه 17 دی 1391, 23:41 عصر
یادمه توی قسمتی از یه کتاب آموزشی خوندم که با خود داس ویندوز هم میشه کدهارو کامپایل کرد بدون نیاز به رفتن به ویژوال استودیو. الان هر کاری می کنم یادم نمیاد کجا دیدمش. کافی بود دستورش رو بدونی.

plus
دوشنبه 18 دی 1391, 01:06 صبح
اگه منظورتون کدهای NET. هست بله...وقی خوب بهرحال به دات نت و متعلقاتش نیاز هست.

the king
دوشنبه 18 دی 1391, 05:23 صبح
اینم یک مثال، یک فایل اجرایی داریم که یک بخش Resource داره که 256 بایت داده داره.
32 بایت اولش رو خودمون با یک مقدار تصادفی و مشخص پر کردیم تا بوسیله اون دقیقا
موقعیت اش رو در فایل اجرایی پیدا کنیم و داده مورد نظرمون رو در 224 بایت باقی مانده بنویسیم.

این پروژه اصلی است، فایل اجرایی رو اون می سازه، برای بکار انداختنش دیگه نیازی به اون یکی
پروژه فایل اجرایی خام نیست، چون ExeFile.dat رو جزو Resource هاش داره و یک پروژه مستقل ئه :
97989

این پروژه فرعی همون فایل اجرایی خام ئه، طوری ساخته شده که تا وقتی بخش Resource اش
خام ئه در هنگام اجرا چیزی نشون نده و فورا به اجرایش خاتمه بده :
97990

ویروس کش AVG 2013 که واکنشی نشون نداد، اما شاید ویروس کش هایی باشند که به نظرشون
این رفتار نرم افزار مخرب باشه.

Direlap
چهارشنبه 20 دی 1391, 22:35 عصر
ممنون دوست عزیز از نمونه برنامه.

درسته تعداد خطوط کد برنامه کمه ولی بیشترش واسم تازگی داره.

میشه بیشتر و با سطح پایین تر این مطلب رو توضیح بدین؟ مثلا طرز کارش و اون دو تا فایل *.dat چیه؟ کاربردشون چیه؟

the king
پنج شنبه 21 دی 1391, 06:23 صبح
ممنون دوست عزیز از نمونه برنامه.

درسته تعداد خطوط کد برنامه کمه ولی بیشترش واسم تازگی داره.

میشه بیشتر و با سطح پایین تر این مطلب رو توضیح بدین؟ مثلا طرز کارش و اون دو تا فایل *.dat چیه؟ کاربردشون چیه؟

طرز کارش خیلی ساده است، یک فایل اجرایی خام داریم که داده هاشون از داخل خودش و از درون یک آرایه 256 بایتی می خونه.
ما اون 256 بایت رو در فایل پیدا می کنیم و تغییر می دهیم.
256Bytes داده ای است که داخل فایل exe ذخیره میشه، 32 بایت اولش فقط برای اینکه بشه توی فایل exe پیداش کرد و قرار نیست تغییر کنه.
32Bytes کپی همون 32 بایت ابتدایی است، برای اینه که داخل فایل exe جستجو بشه و موقعیت اون 256 رو نشون بده.
EXEFile هم که همون فایل اجرایی خام است که داده داخلش ذخیره میشه.

Saber_Fatholahi
پنج شنبه 21 دی 1391, 08:39 صبح
سلام
دوستان درست فرمودن
همراه این نرم افزار ها یک فایل اجرایی از قبل وجود داره، من قدیما با امکانات کم اینکار کردم، شما به آخر فایل exe هر چیزی اضافه کنی فایل خراب نمی شه و می تونی زمان اجرا یک کپی از فایل گرفته و اطلاعاتت ازش بخونی البته باید بدونی چند بایت آخر فایل نوشتی
موفق موید باشید

c-sharp_South
شنبه 23 دی 1391, 14:59 عصر
ببخشید یک سوال داشتم.
من نفهمیدم فایل های 256 bytes و 32 Bytes و ExeFile که با پسوند Dat در Resource وارد شدن از کجا اومدن و ما این ها رو
چطوری درست کردیم؟ویژگی فایل های Dat رو کجا مشخص کردیم؟
اگه میشه یک خورده بیشتر توضیح بدین در مورد رابطه ی بین کدها.
من نفهمیدم چطوری سورس GenerateExeFile رو به سورس ExeFile ربط دادن.
خواهش میکنم توضیح بیشتری بدین درباره ی کدها.

the king
شنبه 23 دی 1391, 16:14 عصر
ببخشید یک سوال داشتم.
من نفهمیدم فایل های 256 bytes و 32 Bytes و ExeFile که با پسوند Dat در Resource وارد شدن از کجا اومدن و ما این ها رو
چطوری درست کردیم؟ویژگی فایل های Dat رو کجا مشخص کردیم؟
اگه میشه یک خورده بیشتر توضیح بدین در مورد رابطه ی بین کدها.
من نفهمیدم چطوری سورس GenerateExeFile رو به سورس ExeFile ربط دادن.
خواهش میکنم توضیح بیشتری بدین درباره ی کدها.

اون سه تا فایل پسوند شون هر چی که باشه فرقی در ماهیت شون نداره، 256Bytes و 32Bytes فقط بایت اند، اصلا مهم نیست که چه مقداری،
فقط اصولا بهتره که اون 32 بایت ابتدایی مقادیر تصادفی و متفاوت باشند تا بعدا بشه پیداشون کرد. اگه همشون 0 باشند ممکنه اشتباهی
با 0 های دیگه داخل فایل exe قاطی شوند. در کل اصلا هیچ ویژگی خاصی داخل اون 256 بایت نیست، فقط یکسری بایت اند که مقدارشون هم
مهم نیست. اصل کار داده ای است که بعدا ما داخل شان می نویسیم، وگرنه مقدار اولیه شان هر چه که می خواهد باشد.
اون ExeFile.dat یک فایل اجرایی درست و کامل است، دقیقا کپی فایل اجرایی ExeFile.exe ای است که در پوشه ExeFile\bin\Release قرار داره،
همان نمونه کامپایل شده ای که پروژه دوم می سازه. همان فایل اجرایی خام ای که در پروژه دوم ساختیم.
پروژه اول هم کاری نمی کنه جز ساختن یک فایل جدید، کپی کردن این ExeFile داخلش، پیدا کردن موقعیت اون 32Bytes داخل این فایل
و بعد بازنویسی کردن داده های جدید در ادامه اون موقعیت خاص، یعنی به 32 بایت اولش کاری ندارد.

c-sharp_South
چهارشنبه 26 تیر 1392, 17:43 عصر
واقعا 20 :قلب:
در مورد اینکه یک PictureBox توی فرم ExeFile باشه و توی GenerateExeFile اون لوگو رو تعیین کرد باید چکار کرد؟
هرکاری کردم نشو پارامترش رو تعریف کنم.
واسه تکس میومدیم میگفتم:

public static string team;
در Form Load میگفتیم:

this.label11.Text = team;
در نهایت در Program.cs میگفتیم:

Form1.team = parameters[2];

واسه عکس به چه صورته ؟ جوری که عکس در کنار برنامه نباشه و با برنامه Bind بشه.