PDA

View Full Version : سوال: نوشتن برنامه ای شبیه به UPX اما با الگریتم اختصاصی



R2du-soft
دوشنبه 06 مرداد 1393, 13:23 عصر
سلام دوستان خوبید؟
چطور میشه برنامه ای شبیه به UPX ساخت که هم فایل رو فشرده کنه و هم فایل رو کد کنه به صورتی که فایل اجراییمون بعد از کد و فشرده شدن باز با کلیک باز بشه یعنی فرمت خودش رو حفض کنه.
برای مثال به سایت یزیر برید:
http://upx.sourceforge.net
برنامه Upx رو دانلود کنید و از زیپ خارج کنید،یک فایل اجرایی exe رو درگ کنید روی فایل UPX.exe تا فایلتون فشرده بشه.
مشکل من اینه که زمانی که فایلم فشرده میشه ویروسی شناسایی میشه در صورتی که ویروسی نیست!
چطور میشه چیزی شبیه به این برنامه نوشت؟
ممنون

R2du-soft
سه شنبه 07 مرداد 1393, 21:50 عصر
کسی نیست کمک کنه؟
اساتید؟دوستان؟!

rahnema1
سه شنبه 07 مرداد 1393, 22:31 عصر
سلام
در مورد ویروس من یک برنامه نوشتم به جز trend micro و یکی دو تا برنامه آنتی ویروس که معروف نیستند هیچ کدام از آنتی ویروسها اون را به عناون ویروس نشناختند. تو خود سایت upx هم جوابی که داده گفته آنتی ویروس را uninstall کنید
در مورد الگوریتم فشرده سازی هم در اون الگوریتم lzma پیاده سازی شده در قسمت پرسش و پاسخ سایت هم گفته میشه پسورد روی فایل گذاشت
http://sourceforge.net/p/upx/discussion/6806/

R2du-soft
سه شنبه 07 مرداد 1393, 22:52 عصر
ممنون
پس من چرا وقتی فشرده سازی میکنم و بعد از اولین rename فایلم و تغییر اسم به re.bac.exe اون رو ویروسی میگیره! درصورتی که اصل فایلم ویروسی نیست!خودم نوشتمش!
خوب چطور میشه برنامه ای شبیه به UPX نوشت؟
من با یکی از سازندگان UPX صحبت کردم و گفتن مشکل از آنتی ویروس هست و باید با پشتیبانی آنتی ویروس صحبت کنید تا مشکل رو حل کنن و یا اینکه برنامتون رو بفرستید برای پشتیبانی آنتی ویروس تا کاری کنن که ویروس شناسایی نشه.
و همینطور مشکل من اینه که نمیخوام برنامه به عنوان ویروس شناسایی بشه چون اصلا ویروس نیست که بخواد ویروس شناسایی بشه!و نمیخوامم کاربران آنتی ویروس رو پاک کنن این معنی نمیده!
میشه در مورد روش ساخت چیزی شبیه به UPX بیشتر راهنمایی کنید؟
ممنون

negative60
سه شنبه 07 مرداد 1393, 23:05 عصر
بعضی از آنتی ويروس ها اگر نتونن فايلی رو آنپک کنن اون فايل رو خطرناک طلقی ميکنند چون نميتونن محتواه فايل رو آناليز کنند همچنين چون برنامه های مخرب زيادی از UPX برای پک کردن خودشون استفاده کردن آنتی ويروس ها حساسيت بيشتری روی اين پکر دارند

#target
سه شنبه 07 مرداد 1393, 23:37 عصر
برای ساخت UPX باید ساختار فایل اجرایی رو بدونید
اما این برنامه کد ها و داده های برنامه رو فشرده میکینه میذاره کنار و کد خودشو برای از حالت فشرده خارج کردن اون ها بعنوان شروع فایل اجرایی قرار میده
با اجرا شدن فایل برنامه کد ها و داده های برنامه شما رو در زمان اجرا و در حافظه از حالت فشرده خارج میکنه و کنترل رو میده به برنام شما
در نتیجه فایل روی دیسک ی قسمتش کد UPX هست برای از حالت فشرده خارج کردن و برنامه شما بضورت فشرده در کنارش

R2du-soft
سه شنبه 07 مرداد 1393, 23:59 عصر
بعضی از آنتی ويروس ها اگر نتونن فايلی رو آنپک کنن اون فايل رو خطرناک طلقی ميکنند چون نميتونن محتواه فايل رو آناليز کنند همچنين چون برنامه های مخرب زيادی از UPX برای پک کردن خودشون استفاده کردن آنتی ويروس ها حساسيت بيشتری روی اين پکر دارند

اما مشکل منم یه چیز جالبیه!
من فایلم رو بعد از فشرده سازی اسکن میکنم اما ویروسی نیست ، بلافاصله که تغییر نامش میدم ویروس شناسایی میشه! اصلا یه چیز عجیبیه که چرا تو اسکن هیچی اما تو تغییر نام یهو تشخیص اینه که ویروسه!داستانیه کلا!


برای ساخت UPX باید ساختار فایل اجرایی رو بدونید
اما این برنامه کد ها و داده های برنامه رو فشرده میکینه میذاره کنار و کد خودشو برای از حالت فشرده خارج کردن اون ها بعنوان شروع فایل اجرایی قرار میده
با اجرا شدن فایل برنامه کد ها و داده های برنامه شما رو در زمان اجرا و در حافظه از حالت فشرده خارج میکنه و کنترل رو میده به برنام شما
در نتیجه فایل روی دیسک ی قسمتش کد UPX هست برای از حالت فشرده خارج کردن و برنامه شما بضورت فشرده در کنارش

ممنون توضیحات کاملی بود.
خوب برای این کار باید از کجا شروع کنم؟ کاربری تقریبا مبتدی هستم و بیشتر زبون ها (زبان های بروز و قدیمی) رو کار کردم،بجز 3 تا که درحد فول! که C++ هم جزء یکی از اون ناقص کارکردنام هست :لبخند:
خوب چطور میشه همین کاری که فرمودید رو کرد؟نمیخوام سورسهای روی نت رو با ویرایش استفاده کنم میخوام خودم از ابتدا بازنویسی کنم و نمیخوام به کدهای برنامه های دیگه متکی باشم که از اون الگریتم ها استفاده کنه!
چطور این UPX خود فایل رو به صورتی که خود فایل اصلی صدمه نبینه فشرده میکنه! یعنی بعد از فشرده سازی هنگام باز کردنش ارور نمیده! برای اینکار باید به جورایی فایل رو دیکد و باز کد کرد درسته!؟یا اشتباه میگم؟

negative60
چهارشنبه 08 مرداد 1393, 03:56 صبح
اما مشکل منم یه چیز جالبیه!
من فایلم رو بعد از فشرده سازی اسکن میکنم اما ویروسی نیست ، بلافاصله که تغییر نامش میدم ویروس شناسایی میشه! اصلا یه چیز عجیبیه که چرا تو اسکن هیچی اما تو تغییر نام یهو تشخیص اینه که ویروسه!داستانیه کلا!


اين روند روی يک برنامه کم حجم ديگه هم تست کنيد ببينيد باز آنتی ويروس به فايل گير ميده.
اگر برنامتون غير مخرب هست ميتونيد از MPERESS (http://www.matcode.com/mpress.htm) هم به جای UPX برای فشرده سازی استفاده کنيد.
فکر نميکنم مشکل از پکر باشه نحوه ديدکت بعضی از آنتی ويروس ها در مرحله اول اين هست که اول خود فايل رو اناليز ميکنند در مرحله بعدی رفتار فايل رو مد نظر قرار ميدن.




چطور این UPX خود فایل رو به صورتی که خود فایل اصلی صدمه نبینه فشرده میکنه! یعنی بعد از فشرده سازی هنگام باز کردنش ارور نمیده! برای اینکار باید به جورایی فایل رو دیکد و باز کد کرد درسته!؟یا اشتباه میگم؟


همانطور که گفته شد بايد با ساختار فايل های PE آشنايی داشته باشيد (بيشتر از آشنايی) اونوقت ديگه همچين سؤالی پيش نمياد
UPX اوپن سورس هست ميتونيد حجم کارهايی که بايد انجام بديد رو ببينيد

R2du-soft
چهارشنبه 08 مرداد 1393, 08:00 صبح
ممنون
من الان برنامه MPERESS (http://www.matcode.com/mpress.htm) رو هم هست کردم اما اون بعد از فشرده سازی فایل فایل رو کلا ویروسی میکنه! به صورتی که انتی ویروس فایل رو اکسن کنه ،فایل رو به نام ویروس TR/Dropper.VB.Gen میشناسه!
اما UPX اینطور بود که فایل رو فشرده میکرده و اسکن میکردی چیزی نمیگرفت از فایل اما زمانی که فایل رو تغییر نام میدادی اینطوری میشد!البته تغییر نام هایی خاص مثل همون Sh.bac.exe یا R.bac.exe یا ... تو همین حالت ها.
فایل رو براتون زمینه میکن (فایل اصلی و سالم رو) یک نگاهی بهش کنید. که البته این برنامه به زبان vb6 هست.
ممنون
121722

#target
چهارشنبه 08 مرداد 1393, 18:08 عصر
خوب برای این کار باید از کجا شروع کنم؟
باید با این که چطور فایل اجرایی تو سیستم عامل اجرا میشه رو بفهمی کامل .
با سیستم حافظه مجازی ویندوز آشنا بشی
اسمبلی و رجیستراها. آدرس دهی ها رو بدونی. نحوه اجرای کدها . پشته و نحوه فراخوانی و...
ساختار فایل اجرایی رو کامل بدونی. چه بخش هایی داره هر بخش چزور باید باشه و... LNK (http://msdn.microsoft.com/en-us/gg463119.aspx)

خوب چطور میشه همین کاری که فرمودید رو کرد
خب وقتی فهمیدی داستان پشت پرده از چه قراره احتمالا دستت میاد که اون UPX هم داره چکار میکنه ! شاید تصمیمت عوض شه و بیخیال نوشتنش شدی . چون من دلیلی نمیبینم به بازشازی چیزی مثل UPX .

چطور این UPX خود فایل رو به صورتی که خود فایل اصلی صدمه نبینه فشرده میکنه! یعنی بعد از فشرده سازی هنگام باز کردنش ارور نمیده! برای اینکار باید به جورایی فایل رو دیکد و باز کد کرد درسته!؟یا اشتباه میگم؟
ممممم... ی جور ساده بگم (مثلا واقعی نیست) ! فرض کن فایل اجراییت 100 کیلو باشه ... و قراره از آدرس 20 شروع به کار کنه . UPX این 100 کیلوبایت رو فشرده میکنه به 30 کیلوبایت و به فایل اجرایی خودش که 10 کیلوبایته مبچسبونه . وقتی شما فایل رو اجرا میکنین این 40 کیلوبایت میاد تو حافظه و اون 10 کیلوبایت خود UPX اون بخشی که فشرده شده رو داخل حافظه استخراج میکنه و کنترل برنامه رو میفرسته به همون آدرس 20 که قراره برنامه تو شروع بشه ! برنامت انگار 100 کیلوبایتشو داخل حافظه عین معمولی داره و شروع به کار میکنه
نمیدونم خوب گفتم یا نه !! نگارشم بده !
البته با ساختار فایل آشنا بشید میفهمید که چطوره . کلی ریزه کاری داره

rahnema1
چهارشنبه 08 مرداد 1393, 23:04 عصر
همین طور که دوستان اشاره کردند میتونید برید در مورد ساختار فایل PE تحقیق کنید و بعد از کد نویسی ++C و اسمبلی و غیره نهایتا یکی شبیه UPX درست کنید اما احتمالا گرفتار آنتی ویروسها خواهید شد
غیر از روش UPX دو روش دیگه را می تونم نام ببرم که یک روش را خودم امتحان کردم که تعدادی از آنتی ویروسها این روش را به عنوان ویروس شناختند
روش دیگه اینه که از یک سیستم فایل مستقر در حافظه in memory filesystem استفاده کنید به این صورت که کد فایل اجرایی اول را به صورت آرایه ای از بایت در فایل اجرایی دوم داشته باشید و اون را در سیستم فایل مستقر در حافظه به صورت فایل اجرایی ذخیره کرده و اجرا کنید. من خودم امتحان نکردم که ببینم مشکل ویروسی پیدا می کنه یا نه